这两年,我一直在编写并发布有质量的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。它非常容易安装,并提供了一些强大的功能,可以使你整个的编译和发布过程自动化。

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

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

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

    本文由CocoaChina--不再犹豫(tao200610704@126.com)翻译 作者:@NIkant Vohra 原文:7 Things you must absolutely do befo ...

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

    转自:http://www.cocoachina.com/ios/20160316/15687.html 本文由CocoaChina--不再犹豫(tao200610704@126.com)翻译 作者: ...

  3. 在写一个iOS应用之前必须做的7件事

    转载自:http://www.cocoachina.com/ios/20160316/15685.html 原文:https://medium.com/ios-os-x-development/7-t ...

  4. 我在开发第一个Swift App过程中学到的四件事

    本文转载至 http://www.itjhwd.com/wzkfyigeswiftsjs/ 译者注:本文作者Greg Heo,这是他为讲授iOS 8 App Extensions视频教程而实际使用Sw ...

  5. 安装 Kali Linux 后需要做的 20 件事

    安装 Kali Linux 后需要做的 20 件事 本文含有我觉得有用的每一件事情.本文分为三大部分: 专门针对Kali用户 Kali Linux是来自Debian的一个特殊版本,Kali Linux ...

  6. 亲身体验:digitalocean vps能做的10件事

    我写过一篇亲身体验:digitalocean和linode评测哪个好,帮助不少网友选购价格便宜性能优异的免备案vps,相信大家对两家产品有所了解.vps的性能和用途远远超过传统的虚拟主机,你拥有独立I ...

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

    学习SEO可能不那么先进的编程,学习SEO不可能掌握网页设计,学习SEO不需要学习SEO DIV + CSS;不是一个困难的任务,但是在学习过程中,如果你想掌握SEO,那么我们要做的几件事. 1.学习 ...

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

    你能否详细讲述一下,在开发Android应用过程中每一阶段要用到的技能和编程语言? 建立一个Android应用程序可以归结为两个主要技能/语言:Java和Android系统.Java是Android的 ...

  9. 安装完Ubuntu 14.04要做的九件事

    www.linuxidc.com/Linux/2014-04/100411.htm 1.看看有哪些新特性 安装完之后的第一件事肯定是看看Ubuntu 14.04有哪些新的特性. Ubuntu 14.0 ...

随机推荐

  1. Linux系统基础命令总结

    一.帮助命令(1)helpxxxx --helphelp xxxx(2)manman xxxx二.ls查看命令:列表显示目录内的文件及目录ls 参数-l 以列表的形式显示-d 显示目录本身属性-a显示 ...

  2. C++切割字符串

    std::string text = "2001_1;2005_5;"; std::stringstream ss(text); std::string sub_str; std: ...

  3. centos7 安装 gitolite (git服务器)

    gitolite简介 轻量级git服务器程序,解决了git权限管理的问题.(git是一个分布式版本控制系统,就是说每个人作为客户端的同时又是服务器)项目GitHub地址:https://github. ...

  4. CSS 图像拼合技术

    CSS 图像拼合技术 一.图像拼合 图像拼合就是单个图像的集合. 有许多图像的网页可能需要很长的时间来加载和生成多个服务器的请求. 使用图像拼合会降低服务器的请求数量,并节省带宽. 二.图像拼合 - ...

  5. 20145302张薇《Java程序设计》实验四报告

    20145325张薇 实验四:Andoid开发基础 实验内容 使用 Android Studio 设计"Hello" 设计过程 首先创建项目 选择.xml中的`Design 选中W ...

  6. 20144303 《Java程序设计》第三周学习总结

    20144303 <Java程序设计>第三周学习总结 教材学习内容总结 •对象是存在的具体实体,具有明确的状态和行为,类是具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属 ...

  7. php-fpm 信号

    使用信号之前,需要先确保php-fpm.conf 里面有配置pid,默认是被注释掉的. ;pid = run/php-fpm.pid 文件在 php安装目录/var/run/php-fpm.pid 信 ...

  8. creator cocos2d-js-min.js 文件廋身 变小 太大解决方法

    使用的 cocos creator 1.2 版本, 菜单栏 项目 -- 项目设置 -- 模块设置 里面 把不要的模块去掉

  9. Eye Protection FAQ

    Q: Why does smart protection not work? A: Please make sure the checkbox "Eye Protection" i ...

  10. NSURLSession 的学习资料

    一个nsurlsession的一些学习资料 http://www.cocoachina.com/ios/20161018/17785.html