1. 使用CocoaPod做依賴管理
CocoaPods是iOS的一種依賴管理工具,項目源碼托管在GitHub上。
我之前整理過一篇關(guān)于CocoaPods的文章,詳見iOS依賴管理工具的使用-CocoaPods。
2. 網(wǎng)絡(luò)封包分析工具Charles
Charles是Mac下常用的截取網(wǎng)絡(luò)封包的工具,使用它截取客戶端與服務(wù)器通信的接口信息非常方便,同時還能模擬網(wǎng)絡(luò)狀態(tài),是iOS開發(fā)不可或缺的一個優(yōu)秀的開發(fā)工具。
2.1 安裝與配置
安裝好Charles需要進行配置,首先安裝root certificate,點擊Help->SSL Proxying->Install Charles Root Certificate。然后將Charles設(shè)為系統(tǒng)代理:點擊Proxy,勾選Mac OS X Proxy,這樣,Charles便能截取到網(wǎng)絡(luò)請求。
Charles主要提供兩種封包視圖,分別為Structure和Sequence,他們的功能分別為:
- Structure將網(wǎng)絡(luò)請求按訪問的域名分類。
- Sequence將網(wǎng)絡(luò)請求按照訪問的時間排序。
2.2 網(wǎng)絡(luò)封包過濾
通常我們只需要監(jiān)測我們需要的網(wǎng)絡(luò)地址,所以我們要從眾多網(wǎng)絡(luò)請求中過濾出我們需要的請求。設(shè)置過濾有兩種方法:
- Sequence界面,在
Filter欄輸入要過濾出來的關(guān)鍵字。這種方式做一些臨時性的封包過濾。 - 菜單欄選擇
Proxy->Recording Settings,選擇include欄,點擊add填入需要監(jiān)控的協(xié)議,主機地址,端口號。這種方式作為我們經(jīng)常性的封包過濾。
2.3 截取iPhone設(shè)備上的網(wǎng)絡(luò)封包。
要截取iPhone上的網(wǎng)絡(luò)封包,我們首先需要將Charles的代理功能打開。在菜單欄選擇Proxy->Proxy settings,填入代理端口8888,并且勾選Enable transparent HTTP proxying。
之后在iPhone的Wifi中打開當前連接的wifi詳情,選擇底部HTTP 代理一項,將代理模式切換為手動,并填入,Charles運行所在電腦的IP地址,并將端口號設(shè)為8888。設(shè)置完畢。當我們打開iPhone上的需要網(wǎng)絡(luò)通訊的程序,Charles便會彈出連接請求,選擇allow,即可截取iPhone的網(wǎng)絡(luò)封包。
2.4 模擬慢速請求
在菜單欄上選擇Proxy->Throttle Setting,在彈出的對話框中設(shè)置Throttle Preset的類型,并勾選Enable Throttling,即可模擬網(wǎng)絡(luò)狀態(tài)。如果我們只想模擬指定的慢速網(wǎng)絡(luò),可以再勾選Only forselected hosts項,然后在對話框的下半部分設(shè)置中增加指定的Hosts項即可。
2.5 截取SSL信息
Charles 默認并不截取SSL信息,如果想要截取摸個網(wǎng)站上的SSl網(wǎng)絡(luò)請求,可以在改請求上單擊右鍵,選擇SSL Proxying。
2.6 修改網(wǎng)絡(luò)請求的內(nèi)容
iOS開發(fā)中我們需要不斷調(diào)試網(wǎng)絡(luò)接口,嘗試不同的網(wǎng)絡(luò)參數(shù),Charles提供了網(wǎng)絡(luò)請求修改和重發(fā)功能。使用修改功能只需要右鍵單擊網(wǎng)絡(luò)請求,選擇Edit,即可創(chuàng)建一個可編輯的網(wǎng)絡(luò)請求。我們可以修改請求的任何信息,包括URL地址,端口,參數(shù)等,之后點擊Execute按鈕發(fā)送修改后的網(wǎng)絡(luò)請求。
2.7 修改服務(wù)器返回的內(nèi)容
我們可以修改服務(wù)器返回的內(nèi)容,方便我們的調(diào)試。根據(jù)具體需求,Charles提供了Map功能,Rewrite功能和BreakPoints功能,他們都能達到修改服務(wù)器返回內(nèi)容的目的。
- Map功能適合長期的將某一些請求重定向到另一個網(wǎng)絡(luò)地址或本地文件。
- Rewrite功能適合對網(wǎng)絡(luò)請求進行一些正則替換。
- BreakPoints功能適合做一些臨時性的修改。
2.8 Map功能
map功能分為Map Remote和Map Local兩種,Map Remote是將指定網(wǎng)絡(luò)請求重定向到另一個網(wǎng)址,Map Local是將指定的網(wǎng)絡(luò)請求重定向到本地文件。
設(shè)置方法:Tools->Map Remote或Map Local即可進入功能設(shè)置頁面。對于一些復(fù)雜的網(wǎng)絡(luò)請求結(jié)果,我們可以先使用Charles提供的save response功能 ,將請求的結(jié)果保存到本地,稍加修改使其成為我們的目標映射文件。
2.9 Rewrite功能
Rewrite功能適合對某一類網(wǎng)絡(luò)請求進行一些正則替換,以達到修改結(jié)果的目的。適合批量和長期的替換。
2.10 Breakpoints功能
Breakpoints功能適合臨時性的修改。它類似于Xcode中設(shè)置斷點,當指定的網(wǎng)絡(luò)請求發(fā)生時,Charles會截取該請求,這時我們可以在Charles中臨時修改網(wǎng)絡(luò)請求的返回內(nèi)容。修改完后單擊Execute按鈕就可以讓網(wǎng)絡(luò)請求繼續(xù)進行。
3. 界面調(diào)試工具Reveal
Reveal類似于Xcode中的界面調(diào)試工具,但是功能更強大,還可以查看別的程序的內(nèi)容。
4. 移動統(tǒng)計工具Flurry
Flurry是一家專門為移動應(yīng)用提供數(shù)據(jù)統(tǒng)計和分析的公司,類似的還有Google Analytics,國內(nèi)的友盟
5. 崩潰日志記錄工具Crashlytics
Crashlytics是專門為移動應(yīng)用開發(fā)者提供的保存和分析應(yīng)用崩潰信息的專業(yè)工具。現(xiàn)在Apple也出了自家的崩潰日志記錄工具。優(yōu)點如下:
- 不會漏掉任何應(yīng)用崩潰信息。
- 可以像Bug管理工具那樣,管理崩潰日志。
- 可以每天和每周將崩潰信息匯總發(fā)到你的郵箱。
6. App Store統(tǒng)計工具App Annie
App Annie是一個App Store數(shù)據(jù)的統(tǒng)計分析工具。該工具可以統(tǒng)計App在App Store的下載量、排名變化、銷售收入情況及用戶評價等信息。
7. Xcode插件
目前很多大牛都開發(fā)了很多優(yōu)秀的插件,但是存在一個問題就是更新Xcode之后這些插件一般都需要更新,如果作者不更新插件可能就無法使用。
7.1 插件管理工具Alcatraz
Alcatraz是一個能幫你管理Xcode插件,模板及顏色配置的工具。他可以直接集成到Xcode的圖形界面中。安裝好之后可以在Window->Package Manager中打開,使用簡單。
7.2 常用插件
KSImageNamed:幫助輸入圖片資源名的插件。
XVim:可以開啟Vim模式,全鍵盤操作。
FuzzyAutocompletePlugin:模糊代碼補全。
XToDo:查找項目中所有的帶有TODO、FIXME、???、!??!標記的注釋。
BBUDebuggerTuckAway:可以在編輯代碼的時候自動隱藏地步調(diào)試窗口。
SCXcodeSwitchExpander:能幫你迅速在switch語句中填充枚舉類型的每種可能的取值。
deriveddata-exterminator:是一個清除Xcode緩存目錄的插件,當Xcode顯示一些編譯的錯誤或警告,但是最終卻編譯通過,這時就需要清除一下Xcode緩存。
VVDocumenter:是一個自動生成代碼注釋的工具。
ClangFormat:是一個自動調(diào)整代碼風(fēng)格的工具。
ColorSense:是一個UIColor顏色輸入輔助工具,實時預(yù)覽顏色。
-
XcodeBoost:包含多個輔助修改代碼的小功能。如
將.m文件中方法的定義暴露到對應(yīng)的.h文件中。
在某一個源文件中直接輸入正則表達式查找。
可以復(fù)制粘貼代碼時,不啟用Xcode的自動縮進功能。 CocoaControls:
HOStringSense:字符串輸入插件,幫助將特殊字符轉(zhuǎn)義為String。
XLGotoSandbox:快速進入應(yīng)用程序沙盒。
ZLXCodeLine:統(tǒng)計代碼行數(shù)。
7.4 插件失效問題的解決
Xcode插件存放在~/Library/Application Support/Developer/Shared/Xcode/Plug-ins目錄下,為.xcpluging格式.通過里面的顯示包內(nèi)容會有一個Info.plist文件,打開文件,可以看到一個字段叫DVTPlugInCompatibilityUUIDs,這個字段存儲能使用次插件的Xcode的UUID。如果當前版本的插件失效,那就將當前Xcode版本的UUID加入到DVTPlugInCompatibilityUUIDs中。
查看Xcodee的信息可以通過打開Xcode的包內(nèi)容中的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,最后數(shù)字為Xcode版本號,重啟Xcode便會提示加載bundle了。
8. 其他工具介紹
8.1 取色工具:自帶數(shù)碼測色計(DigitalColor Meter)
8.2 取色,測量工具:xScope
8.3 圖像壓縮工具:ImageOptim
8.4 標注工具:馬克鰻(MarkMan)
8.5 API文檔查詢及代碼片段管理工具:(Dash)
8.6 命令行工具
- nomad:方便你操作蘋果開發(fā)者中心。
- xctool:Facebook開源的一個iOS編譯和測試的工具。
- appledoc:從開源代碼中抽取文檔的工具。