原文 http://blog.devtang.com/blog/2014/06/29/ios-dev-tools/
版权说明
本文首发于《程序员》杂志2014年6月刊,未经允许,请勿转载。
前言
从苹果发明iPhone起,AppStore上的一个又一个类似flappy bird的一夜暴富的故事刺激着大量开发者加入移动开发大军。随着这些开发者出现的,还有大量方便iOS开发者的各种工具。这些工具作为整个应用开发生态链的重要一环,极大地方便了广大应用开发者,节省了应用开发的时间。
本文将从应用工具、命令行工具、插件工具3个方面,介绍这些优秀的应用。
图形应用工具
Charles
Charles( http://www.charlesproxy.com )是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
Charles详细的使用说明,欢迎阅读我的文章: 《iOS开发工具-网络封包分析工具Charles》
界面调试
PonyDebugger( https://github.com/square/PonyDebugger )、Reveal( http://revealapp.com/ )、Spark Inspector( http://sparkinspector.com/ )是三个常用的界面调试工具,可以在程序运行时动态调试iOS应用界面。PonyDebugger是免费并且开源的,后两者是收费的,不过功能更加强大。
对于动态或复杂的交互界面,手写UI的是不可避免的,而Reveal一类的工具可以方便我们查看控件的相应属性是否正常,并且可以在程序运行时,动态地修改界面元素。这样就不用反复地修改代码并且重启程序了。
xScope
xScope( http://xscopeapp.com/ )是一类与界面开发相关的工具集。对于iOS开发,比较好用的功能包括它的放大镜取色工具、标尺工具等。其中放大镜取色工具可以将取到的多个色集收集起来,方便后续使用,并且支持直接粘贴成相关的程序颜色代码。
xScope是收费软件,对于未付费版本,其功能有一些限制。
ImageOptim
ImageOptim( http://imageoptim.com/ )是一个图象压缩的免费工具。iOS工程默认使用的是 pngcrush 命令来压缩图片,不过其压缩比率其实不高。对于应用中图片资源比较多的读者,可以尝试使用 ImageOptim 来达到最大的图片压缩效果。
如果你从未尝试过ImageOptim一类的图片压缩工具,那么第一次给IPA文件瘦身的效果应该是比较惊人的。我个人的经验是,初次使用时ImageOptim能减少至少10%的应用图片资源占用。
ImageOptim的实现原理是使用各种开源的图像压缩工具,然后取效果最好的那一个。它尝试的工具包括:PNGOUT, Zopfli, Pngcrush, AdvPNG, extended OptiPNG, JpegOptim, jpegrescan, jpegtran 和 Gifsicle。
安装方式是从其官方网站( http://imageoptim.com/ )上下载程序文件,拖动到“应用程序”目录即可。下图是本篇文章所有的配图,可以看到使用ImageOptim达到了29.5%的体积缩小。
马克鳗
马克鳗( http://www.getmarkman.com/ )是国人开发的一款免费标注工具,可以方便地在美术输出的设计稿上标注相应界面元素的大小,颜色,边距,说明等。
命令行工具
CocoaPods
每种语言发展到一个阶段,就会出现相应的依赖管理工具或者是中央代码仓库。比如Java的maven,Nodejs的npm等。而CocoaPods( http://cocoapods.org/ )是为iOS程序提供依赖管理的工具。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。
在我开发猿题库客户端时,其使用了24个第三方开源库。在没有使用CocoaPods以前,我需要:
- 把这些第三方开源库的源代码文件复制到项目中,或者设置成git的submodule。
- 对于这些开源库通常需要依赖系统的一些framework,我需要手工地将这些framework一一增加到项目依赖中,比如通常情况下,一个网络库就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
- 对于某些开源库,我还需要设置
-licucore
或者-fno-objc-arc
等编译参数 - 管理这些依赖包的更新。
这些体力活虽然简单,但毫无技术含量并且浪费时间。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行 pod install
。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。
使用CocoaPods还需要注意以下几点:
- 需要使用CocoaPods生成的 .xcworkspace 文件来打开工程,而不是以前的 .xcodeproj 文件。
- 每次更改了Podfile文件,你需要重新执行一次
pod update
命令。 - 当你执行
pod install
之后,除了Podfile外,CocoaPods还会生成一个名为Podfile.lock
的文件,你应该把这个文件加入到版本管理中。因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install
不会更改版本,要pod update
才会改Podfile.lock
了。这样的好处是:当多人协作的时候,可以保证所有人的第三库环境是完全一样的。
详细的使用说明,欢迎阅读我的文章: 《用CocoaPods做iOS程序的依赖管理》
nomad
nomad( http://nomad-cli.com/ )是一个方便你操作苹果开发者中心(Apple Developer Center)的命令行工具,可以做的事情包括方便地添加测试设备,更新证书文件,增加App id,验证IAP的凭证等。
安装方式:
|
安装完后,首先执行 ios login
,你的Developer账号密码会被它存储到Keychain中,之后就可以用命令行来完成各种后台操作了,例如:
添加测试设备:
|
更新证书文件:
|
nomad还有很多功能,建议大家阅读其官方网站的文档进一步学习。
xctool
xctool( https://github.com/facebook/xctool )是facebook开源的一个iOS编译和测试的工具。使用它而不是用Xcode的UI界面是因为它是一个纯命令行工具。比如:我们可以使用xctool在命令生下进行编译和单元测试,然后将测试结果集成到Jenkins中,这样就实现了自动化的持续集成。虽然苹果也在OSX Server上推出了自己的自动化集成工具BOT,但其配置和使用上现在仍然不太方便。
安装xctool可以使用brew命令:
|
使用xctool编译项目可以使用如下命令:
|
使用xctool执行单元测试,可以使用如下命令:
|
xctool还有很多功能,建议大家阅读xctool官方网站的文档进一步了解更多的功能。
appledoc
appledoc( https://github.com/tomaz/appledoc )是一个从源码中抽取文档的工具。
对于开发者来说,文档最好和源码在一起,这样更新起来更加方便和顺手。象Java一类的语言本身就自带javadoc命令,可以从源码中抽取文档。而appledoc就是一个类似javadoc的命令行程序,可以从iOS工程的源代码中抽取相应的注释,生成帮助文档。
相对于其它的文档生成工具,appledoc的优点是:
- 它默认生成的文档风格和苹果的官方文档是一致的。
- appledoc就是用objective-c写的,必要的时候调试和改动也比较方便。
- 它可以生成docset,并且集成到xcode中。集成之后,在相应的API调用处,按住option再单击就可以调出相关的帮助文档。
- 它没有特殊的注释要求,兼容性高。
安装appledoc可以直接使用brew命令:
|
使用时切换到iOS工程目录下,执行以下操作即可,appledoc会扫描当前路径下的所有文件,然后生成好文档放到doc目录下。你也可以用appledoc —help查看所有可用的参数。
|
详细的使用介绍,欢迎阅读我的文章: 《使用Objective-C的文档生成工具:appledoc》
Xcode插件
Xcode是iOS的集成开发环境,虽然苹果一直在不断改进Xcode,但程序员总是有各种新奇的想法和需求,当Xcode无法满足他们时,于是他们就会通过插件的方式来为Xcode增加新的功能。本节将会给大家介绍一些常用的Xcode增强插件。
Xcode所有的插件都安装在目录 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/
下,每个插件为一个子目录,你也可以手工切换到这个目录来增加或删除插件。
Alcatraz
Alcatraz( http://alcatraz.io/ )是管理Xcode所有插件的插件,它可以直接集成到Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样。Alcatraz不但可以管理Xcode的插件,它另外还提供了管理Xcode工程模版以及颜色配置的功能。
使用如下的命令行来安装Alcatraz:
|
安装成功后重启Xcode,就可以在Xcode的顶部菜单中的”Window”–>“Package Manager”中找到Alcatraz。点击“Package Manager”,即可启动插件列表页面。你可以在右上角搜索插件,对于想安装的插件,点击其左边的图标,即可下载安装,如下所示,我正在安装KImageNamed插件:
安装完成后,再次点击插件左边的图标,可以将该插件删除。
以下所有介绍的插件均可用该方法来安装或删掉,就不另行介绍了。
Alcatraz详细的使用介绍,欢迎阅读我的文章: 《使用Alcatraz来管理Xcode插件》
KSImageNamed
KSImageNamed( https://github.com/ksuther/KSImageNamed-Xcode )是一个帮助你输入[UIImage imageNamed:]中的资源名的插件。当你输入 [UIImage imageNamed:]
时,会自动的弹出上下文菜单,供你选择你需要输入的图片资源名字,另外在选择图片资源时,还可以在左侧预览该资源。如下图所示:
XVim
XVim( https://github.com/JugglerShu/XVim )是一个Xcode的vim插件,可以在Xcode的编辑窗口中开启vim模式。
vim模式最大的好处是可以全键盘操作,可以方便地移动光标以及复制、粘贴代码。XVim对于Xcode的分栏模式也有很好的支持,与vim自带的分栏模式一样,可以用快捷键 ctrl + w
来切换当前编辑的分栏。
FuzzyAutocompletePlugin
FuzzyAutocompletePlugin ( https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin ) 允许使用模糊的方式来进行代码自动补全。
举个例子,如果我们要重载 viewDidAppear:
方法,那么我们必须依次建入view、did、appear 才能得到相应的补全信息,使用FuzzyAutocompletePlugin之后,我们可以建入vda (view、did、appear 三个单词的首字母),或任意符合viewDidAppear整个单词出现顺序的子串(例如 vdapp, adear等),即可匹配到该方法。
XToDo
XToDo( https://github.com/trawor/XToDo )是一个查找项目中所有的带有 TODO
, FIXME
, ???
, !!!
标记的注释。
通常我们在项目开发中,由于种种原因,一些事情需要以后处理,这个时候为了防止遗忘,加上 TODO
或 FIXME
注释是非常有必要的,但是上线或提交代码前要寻找这些未解决的事项却稍显麻烦。XToDo可以提供一个汇总的界面,集中显示所有的未完成的 TODO
和 FIXME
标记。
BBUDebuggerTuckAway
BBUDebuggerTuckAway( https://github.com/neonichu/BBUDebuggerTuckAway )是一个非常小的工具,可以在你编辑代码的时候自动隐藏底部的调试窗口。因为通常情况下,调试的时候是加断点或监控变量变化,或者在Console窗口用 po
来输出一些调试信息。如果开始编辑代码了,说明已经调试结束了,这个时候隐藏调试窗口,可以给编辑界面更多空间,方便我们修改代码。
SCXcodeSwitchExpander
SCXcodeSwitchExpander( https://github.com/stefanceriu/SCXcodeSwitchExpander )帮助你迅速地在 switch
语句中填充枚举类型的每种可能的取值。
例如,当你输入 switch
,然后键入一个 NSTableViewAnimationOptions
类时,该插件会将其可能的取值补全在每一个 case
之后,如下图所示:
deriveddata-exterminator
deriveddata-exterminator( https://github.com/kattrali/deriveddata-exterminator )是一个清除Xcode缓存目录的插件。
有些时候Xcode会出各种奇怪的问题,最常见的是在某些复杂操作下(例如同一个项目,来回切换到各种分支版本),会造成Xcode显示一些编译的错误或警告,但是最终却又可以编译通过。新手遇到这种问题常常束手无策,而熟悉Xcode的人就知道,通常清除Xcode缓存就可以解决这类问题。该插件在Xcode菜单上增加了一个清除缓存按钮,可以一键方便地清楚缓存内容。
VVDocumenter
VVDocumenter( https://github.com/onevcat/VVDocumenter-Xcode )是一个自动生成代码注释的工具,可以方便地将函数的参数名和返回值提取出来,这样结合上一节介绍的 appledoc
命令,就可以方便地将帮助文档输出。
ClangFormat
ClangFormat( https://github.com/travisjeffery/ClangFormat-Xcode )是一个自动调整代码风格(Code Style)的工具。Xcode本身的代码缩进自动调整功能比较弱,特别是对于JSON格式,常常产生非常丑陋的默认缩进效果。ClangFormat-Xcode可以更好地对代码进行重新排版,并且内置了各种排版风格,也支持自定义风格。
ColorSense
ColorSense( https://github.com/omz/ColorSense-for-Xcode )是一个 UIColor
颜色输入辅助工具,可以帮助你在编写 UIColor
代码时,实时预览相应的颜色,如下图所示:
XcodeBoost
XcodeBoost( https://github.com/fortinmike/XcodeBoost )包含多个辅助修改代码的小功能,比如:
- 可以在.m文件中复制方法实现,然后将该方法的定义粘贴到对应的.h文件中
- 可以在某一个源文件中直接输入正则表达式查找
- 可以复制粘贴代码时不启用Xcode的自动缩进功能(Xcode的自动缩进经常出问题,造成已经调整好的代码缩进,因为粘贴时被Xcode调整坏了)
小结
本文分图形应用工具,命令行工具,Xcode插件三个部分,介绍了iOS开发中好用的工具。其中涉及的图形工具部分是收费的,而命令行工具和Xcode插件工具全部是免费并且开源的工具,笔者在此也感谢广大的开源软件作者,是他们让整个软件生态圈更加美好。
相关推荐
这套"iOS开发工具包"包含了开发者在构建、测试和发布应用程序时可能需要的各种软件和资源。下面将详细介绍其中可能包含的关键工具和知识点: 1. **Xcode**: Xcode是Apple官方提供的iOS开发集成开发环境(IDE),它...
iOS开发之工具篇,关于IOS开发更多便捷工具和插件的介绍,极大有助于IOS编程快速开发。
html5的ios开发工具
《iOS开发进阶》分工具、实践、理论三大部分。第一部分介绍iOS 开发的常用工具,第二部分介绍iOS开发中的一些常见的实践经验,第三部分介绍iOS 开发中涉及的原理。 如果把成为iOS 开发高手的过程比作武侠小说中的...
iOS开发常用的一些小工具
《iOS开发指南(第5版)》是一本深入探讨iOS应用程序开发的专业书籍,旨在帮助开发者从零基础到熟练掌握Apple的移动操作系统上的应用构建过程。该书第五版更新了最新的开发技术和工具,确保读者能够使用最新的Xcode和...
根据提供的信息,我们可以推断出这是一本关于iOS开发进阶的书籍,作者为唐巧。虽然提供的部分内容似乎并不是实际的章节内容,但从标题、描述和标签中,我们可以推测本书可能涵盖的一些关键知识点。 ### iOS开发进阶...
资源是本人10多年ios开发过程中整理归纳的工具库, 其中包含了常用的扩展及工具库。为你的ios开发提供助力 - Category : 常用分类扩展 - Utils : 工具类
iOS 开发是指使用 Objective-C 语言在 Mac 系统上使用 Xcode 开发工具进行移动应用程序开发的过程。下面将从环境需求、环境搭建、开发语言三个方面对 iOS 开发进行详细介绍。 一、环境需求 iOS 开发需要 Mac 系统...
此外,苹果还提供了丰富的开发工具和框架来帮助开发者构建高质量的应用程序。 #### 二、开发环境设置 **Xcode**:Xcode是苹果官方提供的集成开发环境(Integrated Development Environment, IDE),用于iOS、macOS...
总之,"iOS好用的工具类归档.zip"是一个非常实用的资源,它包含了iOS开发中常用的一些功能,是iOS开发者必备的工具集合,能够帮助开发者更好地专注于核心业务逻辑,而不是被琐碎的辅助任务所牵绊。在实际项目中,...
2. **CocosBuilder**: CocosBuilder是另一款iOS开发工具,主要用于创建和编辑Cocos2d-x游戏的用户界面和交互设计。它提供了一个直观的拖放界面,让开发者可以轻松地设计场景、添加动画,并管理节点层次结构。Cocos...
作为iOS开发的基石,这份手册是每个开发者不可或缺的参考资料。下面,我们将详细探讨其中的主要内容。 首先,iOS开发的核心是Objective-C和Swift编程语言。Objective-C是早期的苹果开发语言,其语法基于C语言,加入...
WHC_DataModelFactoryMac上iOS开发辅助工具,快速把json/xml数据转换生成对应模型类属性,省去麻烦手动创建,提高开发效率。简介高效: 自动把json或者xml字符串自动生成模型类文件内容准确: 避免手工创建模型类的...
xcode_3.2.4_and_ios_sdk_4.1开发工具的下载,资源很好用。我花了很长时间才找到的,和大家分享一下。这是一个下载连接
"iOS开发调色板" 提供了开发者们在构建应用程序时所需要的颜色选择工具,使得他们能够方便地创建、管理和使用颜色方案。 在iOS中,颜色通常使用UIColor类来表示。UIColor提供了丰富的API,让开发者可以基于RGB、HSV...
这个名为“iOS开发工具小集合,不定期更新.zip”的压缩包显然包含了为iOS开发者准备的一些实用工具和资源。让我们一起深入了解一下其中可能包含的知识点。 首先,我们看到一个名为“说明.txt”的文件。这个文本文件...
下面的文章来自10 Essential iOS Developer Tools & Resources, 这个文章介绍了十个iOS开发的基础性工具和资源,其一定会很有效地帮你做iOS的开发。(在这里,我再闲扯一句,虽然Android的开发好像整整 XML文件界面...
本篇将详细介绍一种名为"PropertyView"的iOS开发调试工具,它专注于数据信息和视图信息的可视化。 PropertyView是一款强大的辅助工具,它允许开发者直观地查看应用中的对象属性和视图层次结构。在实际开发中,这种...
开发工具Xcode是Apple官方提供的集成开发环境(IDE),它集成了代码编辑、调试、构建以及测试等功能,是iOS开发者不可或缺的工具。 本教程源代码可能包括以下几个关键部分: 1. **项目结构**:iOS项目通常包含多个...