《iOS进阶》-iOS开发工具使用

1. 使用CocoaPod做依赖管理

CocoaPods是iOS的一种依赖管理工具,项目源码托管在GitHub上。
我之前整理过一篇关于CocoaPods的文章,详见iOS依赖管理工具的使用-CocoaPods

2. 网络封包分析工具Charles

Charles是Mac下常用的截取网络封包的工具,使用它截取客户端与服务器通信的接口信息非常方便,同时还能模拟网络状态,是iOS开发不可或缺的一个优秀的开发工具。

2.1 安装与配置

安装好Charles需要进行配置,首先安装root certificate,点击Help->SSL Proxying->Install Charles Root Certificate。然后将Charles设为系统代理:点击Proxy,勾选Mac OS X Proxy,这样,Charles便能截取到网络请求。

Charles主要提供两种封包视图,分别为StructureSequence,他们的功能分别为:

  1. Structure将网络请求按访问的域名分类。
  2. Sequence将网络请求按照访问的时间排序。

2.2 网络封包过滤

通常我们只需要监测我们需要的网络地址,所以我们要从众多网络请求中过滤出我们需要的请求。设置过滤有两种方法:

  1. Sequence界面,在Filter栏输入要过滤出来的关键字。这种方式做一些临时性的封包过滤。
  2. 菜单栏选择Proxy->Recording Settings,选择include栏,点击add填入需要监控的协议,主机地址,端口号。这种方式作为我们经常性的封包过滤。

2.3 截取iPhone设备上的网络封包。

要截取iPhone上的网络封包,我们首先需要将Charles的代理功能打开。在菜单栏选择Proxy->Proxy settings,填入代理端口8888,并且勾选Enable transparent HTTP proxying

之后在iPhone的Wifi中打开当前连接的wifi详情,选择底部HTTP 代理一项,将代理模式切换为手动,并填入,Charles运行所在电脑的IP地址,并将端口号设为8888。设置完毕。当我们打开iPhone上的需要网络通讯的程序,Charles便会弹出连接请求,选择allow,即可截取iPhone的网络封包。

2.4 模拟慢速请求

在菜单栏上选择Proxy->Throttle Setting,在弹出的对话框中设置Throttle Preset的类型,并勾选Enable Throttling,即可模拟网络状态。如果我们只想模拟指定的慢速网络,可以再勾选Only forselected hosts项,然后在对话框的下半部分设置中增加指定的Hosts项即可。

2.5 截取SSL信息

Charles 默认并不截取SSL信息,如果想要截取摸个网站上的SSl网络请求,可以在改请求上单击右键,选择SSL Proxying

2.6 修改网络请求的内容

iOS开发中我们需要不断调试网络接口,尝试不同的网络参数,Charles提供了网络请求修改和重发功能。使用修改功能只需要右键单击网络请求,选择Edit,即可创建一个可编辑的网络请求。我们可以修改请求的任何信息,包括URL地址,端口,参数等,之后点击Execute按钮发送修改后的网络请求。

2.7 修改服务器返回的内容

我们可以修改服务器返回的内容,方便我们的调试。根据具体需求,Charles提供了Map功能,Rewrite功能和BreakPoints功能,他们都能达到修改服务器返回内容的目的。

  1. Map功能适合长期的将某一些请求重定向到另一个网络地址或本地文件。
  2. Rewrite功能适合对网络请求进行一些正则替换。
  3. BreakPoints功能适合做一些临时性的修改。

2.8 Map功能

map功能分为Map RemoteMap Local两种,Map Remote是将指定网络请求重定向到另一个网址,Map Local是将指定的网络请求重定向到本地文件。

设置方法:Tools->Map RemoteMap Local即可进入功能设置页面。对于一些复杂的网络请求结果,我们可以先使用Charles提供的save response功能 ,将请求的结果保存到本地,稍加修改使其成为我们的目标映射文件。

2.9 Rewrite功能

Rewrite功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。适合批量和长期的替换。

2.10 Breakpoints功能

Breakpoints功能适合临时性的修改。它类似于Xcode中设置断点,当指定的网络请求发生时,Charles会截取该请求,这时我们可以在Charles中临时修改网络请求的返回内容。修改完后单击Execute按钮就可以让网络请求继续进行。

3. 界面调试工具Reveal

Reveal类似于Xcode中的界面调试工具,但是功能更强大,还可以查看别的程序的内容。

4. 移动统计工具Flurry

Flurry是一家专门为移动应用提供数据统计和分析的公司,类似的还有Google Analytics,国内的友盟

5. 崩溃日志记录工具Crashlytics

Crashlytics是专门为移动应用开发者提供的保存和分析应用崩溃信息的专业工具。现在Apple也出了自家的崩溃日志记录工具。优点如下:

  1. 不会漏掉任何应用崩溃信息。
  2. 可以像Bug管理工具那样,管理崩溃日志。
  3. 可以每天和每周将崩溃信息汇总发到你的邮箱。

6. App Store统计工具App Annie

App Annie是一个App Store数据的统计分析工具。该工具可以统计App在App Store的下载量、排名变化、销售收入情况及用户评价等信息。

7. Xcode插件

目前很多大牛都开发了很多优秀的插件,但是存在一个问题就是更新Xcode之后这些插件一般都需要更新,如果作者不更新插件可能就无法使用。

7.1 插件管理工具Alcatraz

Alcatraz是一个能帮你管理Xcode插件,模板及颜色配置的工具。他可以直接集成到Xcode的图形界面中。安装好之后可以在Window->Package Manager中打开,使用简单。

7.2 常用插件

  • KSImageNamed:帮助输入图片资源名的插件。

  • XVim:可以开启Vim模式,全键盘操作。

  • FuzzyAutocompletePlugin:模糊代码补全。

  • XToDo:查找项目中所有的带有TODO、FIXME、???、!!!标记的注释。

  • BBUDebuggerTuckAway:可以在编辑代码的时候自动隐藏地步调试窗口。

  • SCXcodeSwitchExpander:能帮你迅速在switch语句中填充枚举类型的每种可能的取值。

  • deriveddata-exterminator:是一个清除Xcode缓存目录的插件,当Xcode显示一些编译的错误或警告,但是最终却编译通过,这时就需要清除一下Xcode缓存。

  • VVDocumenter:是一个自动生成代码注释的工具。

  • ClangFormat:是一个自动调整代码风格的工具。

  • ColorSense:是一个UIColor颜色输入辅助工具,实时预览颜色。

  • XcodeBoost:包含多个辅助修改代码的小功能。如

    将.m文件中方法的定义暴露到对应的.h文件中。
    在某一个源文件中直接输入正则表达式查找。
    可以复制粘贴代码时,不启用Xcode的自动缩进功能。

  • CocoaControls:

  • HOStringSense:字符串输入插件,帮助将特殊字符转义为String。

  • XLGotoSandbox:快速进入应用程序沙盒。

  • ZLXCodeLine:统计代码行数。

7.4 插件失效问题的解决

Xcode插件存放在~/Library/Application Support/Developer/Shared/Xcode/Plug-ins目录下,为.xcpluging格式.通过里面的显示包内容会有一个Info.plist文件,打开文件,可以看到一个字段叫DVTPlugInCompatibilityUUIDs,这个字段存储能使用次插件的Xcode的UUID。如果当前版本的插件失效,那就将当前Xcode版本的UUID加入到DVTPlugInCompatibilityUUIDs中。

查看Xcodee的信息可以通过打开Xcode的包内容中的plist文件查看DVTPlugInCompatibilityUUIDs。我们可以通过命令find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID`批量向插件增加UUID。

有人也写了一个小脚本:cikelengfeng/RPAXU,一样的效果。

7.5 手贱点击Skip Bundle解决办法

在命令行中输入defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-7.1,最后数字为Xcode版本号,重启Xcode便会提示加载bundle了。

8. 其他工具介绍

8.1 取色工具:自带数码测色计(DigitalColor Meter)

8.2 取色,测量工具:xScope

8.3 图像压缩工具:ImageOptim

8.4 标注工具:马克鳗(MarkMan)

8.5 API文档查询及代码片段管理工具:(Dash)

8.6 命令行工具

  • nomad:方便你操作苹果开发者中心。
  • xctool:Facebook开源的一个iOS编译和测试的工具。
  • appledoc:从开源代码中抽取文档的工具。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容