1. 使用CocoaPod做依賴管理
CocoaPods是iOS的一種依賴管理工具昆咽,項(xiàng)目源碼托管在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需要進(jìn)行配置抚垃,首先安裝root certificate
,點(diǎn)擊Help
->SSL Proxying
->Install Charles Root Certificate
喷楣。然后將Charles設(shè)為系統(tǒng)代理:點(diǎn)擊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
欄懈糯,點(diǎn)擊add
填入需要監(jiān)控的協(xié)議,主機(jī)地址单雾,端口號昂利。這種方式作為我們經(jīng)常性的封包過濾届腐。
2.3 截取iPhone設(shè)備上的網(wǎng)絡(luò)封包。
要截取iPhone上的網(wǎng)絡(luò)封包蜂奸,我們首先需要將Charles的代理功能打開犁苏。在菜單欄選擇Proxy
->Proxy settings
,填入代理端口8888
扩所,并且勾選Enable transparent HTTP proxying
围详。
之后在iPhone的Wifi中打開當(dāng)前連接的wifi詳情,選擇底部HTTP 代理
一項(xiàng)祖屏,將代理模式切換為手動助赞,并填入,Charles運(yùn)行所在電腦的IP地址袁勺,并將端口號設(shè)為8888雹食。設(shè)置完畢。當(dāng)我們打開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
項(xiàng)赎离,然后在對話框的下半部分設(shè)置中增加指定的Hosts項(xiàng)即可。
2.5 截取SSL信息
Charles 默認(rèn)并不截取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ù)等混槐,之后點(diǎn)擊Execute
按鈕發(fā)送修改后的網(wǎng)絡(luò)請求编兄。
2.7 修改服務(wù)器返回的內(nèi)容
我們可以修改服務(wù)器返回的內(nèi)容,方便我們的調(diào)試声登。根據(jù)具體需求狠鸳,Charles提供了Map功能揣苏,Rewrite功能和BreakPoints功能,他們都能達(dá)到修改服務(wù)器返回內(nèi)容的目的件舵。
- Map功能適合長期的將某一些請求重定向到另一個網(wǎng)絡(luò)地址或本地文件卸察。
- Rewrite功能適合對網(wǎng)絡(luò)請求進(jìn)行一些正則替換。
- 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
即可進(jìn)入功能設(shè)置頁面涡扼。對于一些復(fù)雜的網(wǎng)絡(luò)請求結(jié)果,我們可以先使用Charles提供的save response
功能 盟庞,將請求的結(jié)果保存到本地吃沪,稍加修改使其成為我們的目標(biāo)映射文件。
2.9 Rewrite功能
Rewrite功能適合對某一類網(wǎng)絡(luò)請求進(jìn)行一些正則替換什猖,以達(dá)到修改結(jié)果的目的票彪。適合批量和長期的替換。
2.10 Breakpoints功能
Breakpoints功能適合臨時性的修改卸伞。它類似于Xcode中設(shè)置斷點(diǎn)抹镊,當(dāng)指定的網(wǎng)絡(luò)請求發(fā)生時锉屈,Charles會截取該請求荤傲,這時我們可以在Charles中臨時修改網(wǎng)絡(luò)請求的返回內(nèi)容。修改完后單擊Execute
按鈕就可以讓網(wǎng)絡(luò)請求繼續(xù)進(jìn)行颈渊。
3. 界面調(diào)試工具Reveal
Reveal類似于Xcode中的界面調(diào)試工具遂黍,但是功能更強(qiáng)大,還可以查看別的程序的內(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)點(diǎn)如下:
- 不會漏掉任何應(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:模糊代碼補(bǔ)全。
XToDo:查找項(xiàng)目中所有的帶有TODO撼泛、FIXME挠说、腺办?低缩??亿汞、E诵铩8吮!標(biāo)記的注釋仔夺。
BBUDebuggerTuckAway:可以在編輯代碼的時候自動隱藏地步調(diào)試窗口琐脏。
SCXcodeSwitchExpander:能幫你迅速在switch語句中填充枚舉類型的每種可能的取值。
deriveddata-exterminator:是一個清除Xcode緩存目錄的插件缸兔,當(dāng)Xcode顯示一些編譯的錯誤或警告日裙,但是最終卻編譯通過,這時就需要清除一下Xcode緩存惰蜜。
VVDocumenter:是一個自動生成代碼注釋的工具昂拂。
ClangFormat:是一個自動調(diào)整代碼風(fēng)格的工具。
ColorSense:是一個UIColor顏色輸入輔助工具抛猖,實(shí)時預(yù)覽顏色格侯。
-
XcodeBoost:包含多個輔助修改代碼的小功能。如
將.m文件中方法的定義暴露到對應(yīng)的.h文件中财著。
在某一個源文件中直接輸入正則表達(dá)式查找联四。
可以復(fù)制粘貼代碼時,不啟用Xcode的自動縮進(jìn)功能瓢宦。 CocoaControls:
HOStringSense:字符串輸入插件碎连,幫助將特殊字符轉(zhuǎn)義為String。
XLGotoSandbox:快速進(jìn)入應(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怠噪。如果當(dāng)前版本的插件失效,那就將當(dāng)前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 手賤點(diǎn)擊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 標(biāo)注工具:馬克鰻(MarkMan)
8.5 API文檔查詢及代碼片段管理工具:(Dash)
8.6 命令行工具
- nomad:方便你操作蘋果開發(fā)者中心扣泊。
- xctool:Facebook開源的一個iOS編譯和測試的工具近范。
- appledoc:從開源代碼中抽取文檔的工具。