《iOS進階》-iOS開發(fā)工具使用

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主要提供兩種封包視圖,分別為StructureSequence,他們的功能分別為:

  1. Structure將網(wǎng)絡(luò)請求按訪問的域名分類。
  2. Sequence將網(wǎng)絡(luò)請求按照訪問的時間排序。

2.2 網(wǎng)絡(luò)封包過濾

通常我們只需要監(jiān)測我們需要的網(wǎng)絡(luò)地址,所以我們要從眾多網(wǎng)絡(luò)請求中過濾出我們需要的請求。設(shè)置過濾有兩種方法:

  1. Sequence界面,在Filter欄輸入要過濾出來的關(guān)鍵字。這種方式做一些臨時性的封包過濾。
  2. 菜單欄選擇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)容的目的。

  1. Map功能適合長期的將某一些請求重定向到另一個網(wǎng)絡(luò)地址或本地文件。
  2. Rewrite功能適合對網(wǎng)絡(luò)請求進行一些正則替換。
  3. BreakPoints功能適合做一些臨時性的修改。

2.8 Map功能

map功能分為Map RemoteMap Local兩種,Map Remote是將指定網(wǎng)絡(luò)請求重定向到另一個網(wǎng)址,Map Local是將指定的網(wǎng)絡(luò)請求重定向到本地文件。

設(shè)置方法:Tools->Map RemoteMap 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)點如下:

  1. 不會漏掉任何應(yīng)用崩潰信息。
  2. 可以像Bug管理工具那樣,管理崩潰日志。
  3. 可以每天和每周將崩潰信息匯總發(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:從開源代碼中抽取文檔的工具。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容