iOS开发建议和技巧:第一部分

Screen-shot-Yert-app

我是个热衷于iOS平台的开发者,最早开发iOS app是在2009年中,当时打算做一个关于荷兰Lowlands音乐节的应用,虽然最后没有完成,但是我学会了如何开发一款iOS App。从那开始,我想了许多值得做成应用的点子,有些还用博客记录下来。到了2010年,我做了一款供朋友间交流使用的论坛应用,我给它取名为‘Yert’。之后的2011年,我利用空闲时间和我的叔叔(Jos Jong)还有兄弟(Jim van Zummeren)一起合作开发了一款叫做EasyCalendar的应用,

EasyCalendar

这个应用给我们带来了不错的收入。在制作这款应用的过程中,我学到了很多。后来我又为Trifork开发了iOS客户端,为The New Motion开发了Love to load应用,还有一款为GeriMedia开发的用于帮助医生记录自己工作时间的应用Ysis Mobile。差点忘了,还有一款iPad应用:Learn to write with Tracy,这个应用主要是用来学习如何高效的为孩子们创作有意思的故事。

Tracy1

发布完这一系列的app之后我又在不同的项目上埋头苦干,虽然最终没有发布,但是每一个项目都让我有所提高。接下来我就和下家分享一些开发iOS app的贴士&技巧,其中会涉及我最近在用的工具,一些值得推荐的framework和一些发布app的方式。

 

IDE:AppCode

d73004b3f416e1a7b3aa68a60efa4020首先要推的是我认为最好的IDE:AppCode。我在我的博客中已经很详尽的介绍过它了,我认为它是Objective-C世界中的IntelliJ。经过两年多的使用,我坚定不移的认为:如果开发iOS app,AppCode是最好的IDE。虽然Xcode也越来越好,但是我觉得还是不敌AppCode。到底AppCode好在哪里,建议大家看看我之前写的博文。而且,如果你用过IntelliJ,我估计你可以理解我所指的那种好。因为IntelliJ相较于Eclipse的那些优点,恰好就是Xcode所不及AppCode的方面。

Screen-Shot-2013-12-11-at-13.26.45AppCode不是Xcode的替代品,完全是增强版。使用AppCode开发的工程,在Xcode内是完全兼容的,可以随时切换到Xcode继续开发。所以使用AppCode不存在风险可言。比如,虽然AppCode中没有Interface Builder设计器,如果需要创建storyboard可以去Xcode,然后再切回AppCode编码。最重要的是,如果Xcode有什么大的更新或者针对开发语言有什么新特性新变化,几周之后AppCode就能将这些变化和特性集成。

依赖关系管理:CocoaPods

下面说一说依赖管理。坦白的说,和java应用开发相比,iOS需要管理的依赖关系通常不多。iOS的SDK本身所涵盖的内容已经相当丰富。但是如果你确实需要管理一些依赖关系,那么强烈推荐你使用CocoaPods。不只是iOS平台,包括Mac平台在内,CocoaPods都是一个相当受追捧的依赖管理工具。

安装CocoaPods非常简单,只需要在终端工具中输入如下命令:

安装完成后,回到所开发应用的Xcode工程目录,在下面创建一个文件,名称是PodFile

上述描述内容表示通知 CocoaPods,该工程需要引入一个针对iOS6版本的“AFNetworking”。如果所引用的framework所要求的最低iOS兼容版本高于工程所设置的最低iOS兼容版本,CocoaPods会给出相应的提示。

运行下面的命令会自动获取要引用的framework并添加到工程中:

CocoaPods会基于原有的工程MyCoolProject.xcodeproj创建一个名称为MyCoolProject.xcworkspace的workspace文件。后续的工程维护只需要打开workspace文件即可,其中即包含了原有的工程文件同时又添加了所依赖的framework。

还可以更简单一点

AppCode最近增加了对CocoaPods的支持!可以通过AppCode来创建PodFile,完全可以抛弃终端命令了。

shot2

系统内还没安装CocoaPods也不要紧,AppCode可以帮忙安装。再也不需要去命令行鼓捣“gem”了。

pods打哪来?

所有的pods都在Github:https://github.com/CocoaPods/Specs。可以fork也可以PR自己的pod。我提了几次PR,一般在一天之内就会接受合并,有的时候几个小时就完成了合并。

持续集成

logo一般java开发者都比较熟悉集成工具Jenkins。其实Jenkins也适用于Xcode工程。直接在Jenkins上安装iOS编译插件即可(.hpi插件点此下载),注意Jenkins需要运行在Mac服务器上。

特性:

  • 支持CocoaPods
  • Code signing
  • 打包
  • 配置简单

 

其他的集成工具:

  • Xcode continuous integration,这个虽然安装配置比较简单,但是我发现它有一些局限性。但是这是苹果官方支持的集成工具。所以值得一试。
  • Travis CI,这是一个可以基于Github代码仓库来进行在线集成的方案,同样支持CocoaPods,不过我还没有用过。

发布

在开发iOS应用的过程中,肯定是需要一些专业的测试或者是一些亲朋好友来验证应用。怎么将应用发布给这些人呢?除了去苹果app store上面发布,苹果本身提供了其他的发布应用的策略,比如“AD-HOC”。AD-HOC可以最多向100个设备授权使用应用,被授权的设备直接访问app的所在URL即可进行下载安装。具体来说,可以简单的架设一个Apache服务器,将应用安装包ipa和必要的描述信息集成在HTML页面中,然后部署在服务器上,接着就可以将相关下载页面的链接地址发布出来供授权的设备下载安装。这种方式有一点比较麻烦,就是每次想要更新ipa,都得重新部署一次。

另外,测试人员在测试的过程中可能会遇到诸如app崩溃等情形,这时候开发者最想得到的就是崩溃日志以便辅助debug这些问题。最直接的做法是,让测试者将设备与itunes链接,然后从设备里拿到崩溃日志,再交给开发者。即便是拿到了测试用户的崩溃日志,在iOS平台,还需要借助用户使用的安装包当初在编译时所生成的dSYM文件,才能还原崩溃日志的堆栈信息。

总结一下具体的流程和步骤:

  • 将应用发布给测试者
  • 收集崩溃日志
  • 记得保存dSYM文件

TestFlight

现在有在线服务来替代以上的复杂流程。我最初使用的是TestFlight

  • 支持iOS和安卓
  • 将测试人员分组,例如不同组的人负责不同的app
  • 为开发者提供了便利的桌面客户端来上传 IPA和dSYM文件
  • 提供SDK来自动化上传崩溃日志并且能够对其进行分析
  • 提供了一种机制,使得测试人员可以在应用内进行直接反馈
  • 完全免费

testflight1当然,通过一段时间的使用,还是发现了一些TestFlight的缺陷:崩溃日志不是很可靠,有时候在终端查不到已经生成的崩溃日志。另外,TestFlight网站也比较复杂,尤其是想要注册成为测试者的话,整个注册流程很麻烦。

HockeyApp

hockeyapp最近,我开始使用HockyApp服务。虽然名字听起来怪怪的,但是处理起发布和崩溃日志非常不错且更简单。下面是我总结的HockyApp优于TestFlight的地方:

  • 拥有我所知道的所有的TestFlight的功能
  • 应用一旦崩溃就会生成日志
  • 会自动询问用户是否发送崩溃日志
  • 会将崩溃日志按照类型和频率进行分组
  • 虽不免费但不贵(5美元一个月,使用上限5个app)

综上所述,个人HockyApp。

后续:

本文重点推介了一些iOS开发可以用到的比较好的工具,后续的文章中,我会介绍一些framework中值得推介的代码。稍后奉上。

收藏 评论

关于作者:sunset

\"In case I dont see you, good afternoon, good evening, and good night!\" (新浪微博:@僵尸吃掉了你的脑子) 个人主页 · 我的文章

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部