在写一个iOS应用之前必须做的7件事(附相关资源)

这两年,我一直在编写并发布有质量的iOS 应用。我发现大多数的开发人员有直接跳进编码应用程序的核心逻辑的倾向,因为这是乐趣所在。遵循流程开发是很无聊的。

我了解到最有效的方式是,如果你提前花些时间正确设置项目,你将会为将来节省大量的时间。如果你是一位独立开发者,你可能意识不到下面提到的这些步骤的重要性。大多数优秀的应用程序都由团队开发,如果遵循以下步骤,肯定能帮你减少挫败感并提升应用质量。

1.为工程设置编码风格规范

编码风格规范指的是在使用特定语言写代码之前要明确遵守的风格和惯例,它包括类似于该使用tab键还是空格键,如何命名变量以及特定语言本身的约定俗成(像swift语言中是否该使用Classes还是Structs)。

编码规范本身没有孰对孰错。在项目开始前,你可以设置自己的编码风格,但是必须保证同组的人遵守相同的规范。编码规范能够保证代码更加统一和更易于阅读。

一些公司已经开源了Objective-C和Swift语言的编码规范。

2.在写代码之前确定应用的架构

在写代码之前,确定应用架构是非常重要的。一个好的架构可以提升应用的可测试性,更加易于理解并且能降低维护成本。你可以使用传统的MVC架构,或者使用更加流行的MVVM或VIPER架构,这里提供了大量的资源来介绍这些架构。

3.设定应用的目录结构

为了使数以百计的源代码文件至始至终保存在相同的目录中,最好是根据项目的架构制定目录结构,例如,你可以使用以下的目录结构:

首先,在Xcode的Project Navigator中工程名称分组下面,以group的形式创建它们(小黄色的文件夹),然后,通过打开Xcode右边的File Inspector,为每个创建的group链接到真实的项目路径下对应的目录,点击File Inspector中小的灰色的文件夹icon,在工程目录下创建对应group名称的子目录。

这个看起来是件小的事情,却可以使你的项目更加有条理且易于理解。

了解更多目录结构可以参考以下资源:

4.项目依赖管理

你当然会在项目中使用第三方库,在项目中,你可以有三种方式可以管理项目依赖。

CocoaPods是适用于Swift和Objective-C Cocoa项目的依赖管理库,它有将近10000个开源库,可以优雅地帮你管理项目的规模。它是最有效的方式做依赖管理,就像Ruby中的Gems。

Youtube上有一个google开发者创建的滑稽的视频(地址,需FQ)来解释为什么必须在项目中使用CocoaPods。

  • Github Submodules

你也可以使用Github Submodules管理你的项目依赖作为子库,相比CocoaPods,Github Submodules的优点在于它是sub-repos- 这不仅意味着git和git GUIs能够隐式识别他们,并且也可以获得更多支持,同时意味着你的工程依赖能够更加紧密的联系到他们的git仓库,而Cocoapods则不能。

submodules的问题是:你的工程不拥有你依赖库的源代码,仅仅是拥有一个引用到submodule的仓库。大多数情况你控制不了这些代码仓库。

Carthage被认为是往Cocoa应用中添加框架的最简单的方法。Carthage使用xcodebuild编译framework二进制,但是把集成的任务留给了用户。CocoaPods的目的是对用户简单,但是Carthage对用户来说是灵活的、不干涉的。

不幸的是,Carthage的最大的缺点是----只支持iOS8及以后版本。

这三个当中,我最常用并且我个人最喜欢的是CocoaPods,因为它设置超级简单,并且提供了数以千计的第三方库供你访问。

5.为应用设置合适的Scheme

当你点击了Run、Test、Profile、Analyze或者Archive 操作后,Schemes告诉Xcode什么会发生。通常,每个操作对应一个target和一个编译配置。你也可以传递启动参数,比如应用运行的语言(测试本地化很有用)或者debug时设置一些判断的标识位。

建议Scheme的命名规则采用MyApp () [Environment]:

你也可以使用Target制作不同的发布、测试以及开发来编译程序,如以下描述:

6.设置合适的Certificates和Provisioning Profiles

在测试和发布应用过程中,这个是开发者最头疼且重要的步骤。证书对代码签名来说是必须的,你可以在真机上运行应用程序。

有两种类型的证书:

  • 开发证书:每个团队的开发者都有自己的证书,需要请求生成。Xcode会为你做这些,但是最好不要点击“Fix issue”按钮,并且能够理解点击这个按钮会真正执行什么。开发证书是发布应用的开发版本到设备上。
  • 发布证书:可以有多个,但是最好保持一个公司一个发布证书,通过内部渠道分享相关的秘钥。发布应用到App Store时需要这个证书,或者是公司内部的企业级应用分发。
  • Provisioning Profiles

Provisioning Profiles 可能是系统中最容易引起混淆的部分了,如果你访问苹果开发者网站,你会注意到你可以创建两种类型的Provisioning Profiles(开发和发布)。Provisioning Profiles是“以这个证书的私钥作为签名的应用可以在这些设备上正常运行: https://www.quora.com/What-are-the-differences-between-certificates-provisioning-profiles-and-identifiers

你可以阅读更多相关资源:

7.设置应用持续集成和交付过程

建立一个持续集成和交付过程已成为关键,因为现在它可以帮助您在开发早期发现bug和节省大量的开发人员的时间。

持续集成 (CI) 是一种开发实践,要求开发人员一天将代码同步到共享存储库几次。每次提交都会用自动脚本进行验证,可以使团队尽早的发现问题。

很多工具可以帮你做iOS应用程序的持续集成,比如 Xcode Server、Jenkins和Travis CI。

持续交付 (CD) 是一个软件工程的方式,可以使团队在短周期内开发软件,确保软件可以在任何时间可靠地发布。它旨在更快、更频繁地构建、测试和发布的软件。

为什么使用持续交付?

  • 可以在准备应用提交、上传截图以及发布应用上节省数天时间。
  • 如果在同事休假期间,但你发现一个严重问题需要修复并发布怎么办?在发布更新版本时不需要依赖某一个人。
  • 通过更频繁和小版本的更新,提高软件质量和反应时间。

虽然有大量的工具供持续交付,我个人最喜欢的是Fastlane。它非常容易安装,并提供了一些强大的功能,可以使你整个的编译和发布过程自动化。

如果你喜欢这篇文章,欢迎推荐,以便其他人也可以看到。

时间: 2024-09-29 23:15:56

在写一个iOS应用之前必须做的7件事(附相关资源)的相关文章

写一个iOS应用之前需要做的事情

为工程设置编码风格规范 Objective-C: https://github.com/garfieldc/NYT-Objective-C-Style-Guide-CN https://github.com/raywenderlich/objective-c-style-guide Swift: https://github.com/raywenderlich/swift-style-guide 确定应用架构 MVC MVCS MVVM VIPER 设定应用的目录结构 项目依赖管理

当开发者产生一个伟大的想法之后应该做的10件事

当你正和家人享受一个悠闲的午后,一个不错的想法突然出现在你的脑海里.不管它是一个 App 还是服务,或是一个新的概念.只要你把这个想法付诸实践,它就可能会成为下一个 uber,甚至会改变世界. 那接下来你应该怎么做呢?这里有一个指南,会告诉你在决定把自己这个想法实现之后应该做的事情. 1. 起一个名字 在你决定开始之后,要做的第一件事就是为你的产品起一个名字,这个名字是有多重要大家心里都很清楚,如果你并不擅长起名字,你可以通过一些工具来扩展你的思路,如 visual thesaurus, Wer

如果写一个android桌面滑动切换屏幕的控件(三)

下面我们把这个控件内嵌到Layout中做一些动画和展示,效果图: 这个子控件可以上下移动,可以左右滑动,如果上下滑动距离大于左右滑动距离,则必须上下滑动 这样来写onTouch事件: @Override public boolean onTouchEvent(MotionEvent ev) { if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMov

如果写一个android桌面滑动切换屏幕的控件(一)

首先这个控件应该是继承ViewGroup: 初始化: public class MyGroup extends ViewGroup{ private Scroller mScroller; private float mOriMotionX; private float mLastMotionX; private VelocityTracker mVelocityTracker; private int mTouchState = TOUCH_STATE_REST; private static

如果写一个android桌面滑动切换屏幕的控件(二)

在viewgroup执行: public void snapToScreen(int whichScreen) { whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1)); boolean changingScreens = whichScreen != mCurrentScreen; mNextScreen = whichScreen; int mScrollX = this.getScrollX(); fin

在开发第一个Android应用之前需要知道的5件事:

你能否详细讲述一下,在开发Android应用过程中每一阶段要用到的技能和编程语言? 建立一个Android应用程序可以归结为两个主要技能/语言:Java和Android系统.Java是Android的通用编程语言,但是Android还包括学习用于app界面设计的XML语言,学习Android概念,以及从Java编程角度运用这些概念. 学了Java和XML之后,再用Android理念将两者连接起来. 我也有分享过一些学习Activities和 Fragments等的Android相关知识.我最喜欢

新手学习SEO要做的七件事是什么?

学习SEO可能不那么先进的编程,学习SEO不可能掌握网页设计,学习SEO不需要学习SEO DIV + CSS;不是一个困难的任务,但是在学习过程中,如果你想掌握SEO,那么我们要做的几件事. 1.学习SEO需要持之以恒的精神.为什么 ?学习SEO要有持之以恒的精神?SEO是一个长期的工作,因为它是与搜索引擎这个工作密切相关,搜索引擎收录站点,将继续增加网站的权重,可以提高网站关键词的排名,这是一个不变的算法.所以即使我们有一个强大的SEO技巧,我们仍然需要更新网站内容,不断优化网站的布局,继续发

读书笔记:父母离去前要做的55件事

读书笔记:父母离去前要做的55件事 <父母离去前要做的55件事>这本书早就读完了,把这些事记在OmniFocus中,寻找机会去完成一些适合完成的事情.有些事可能并不适合自己的父母,但父母的年纪毕竟大了,珍惜这段时间,不让自己在将来留下太多的遗憾. 给父母捶背 记录下父母对你的爱 整理那些儿时最珍爱的礼物 为父母做饭 教父母发短信.父母从没有用过手机,他们过生日时给买过一个音乐播放器,声音非常大,可以晨练时用,可惜选曲的操作相当复杂,还必须在规定的时间内操作完,2012年6月10日耐心地教爸爸使

安装Linux Mint 17后要做的20件事

安装Linux Mint 17后要做的20件事 Linux Mint 17 Qiana Cinnamon Linux Mint 17已经发布,定名为Qiana.Mint是Linux最佳发行版之一,它定位于桌面用户,关注可用性和简洁.它携带了风格迥异的桌面环境,如Mate以及Cinnamon,并基于不同的发行版,如Ubuntu或Debian. 在本文中,我们使用的是Linux Mint 17的cinnamon版本.要获取更多关于Cinnamon版本的信息(包括下载链接),可以访问 - http:/