那些好用的iOS開發工具

jopen 10年前發布 | 33K 次閱讀 iOS開發 移動開發

 

前言

從蘋果發明 iPhone 起,AppStore 上的一個又一個類似 flappy bird 的一夜暴富的故事刺激著大量開發者加入移動開發大軍。隨著這些開發者出現的,還有大量方便 iOS 開發者的各種工具。這些工具作為整個應用開發生態鏈的重要一環,極大地方便了廣大應用開發者,節省了應用開發的時間。

本文將從應用工具、命令行工具、插件工具 3 個方面,介紹這些優秀的應用。

圖形應用工具

Charles

那些好用的iOS開發工具 - 賣故事的雜貨鋪

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, AdV*NG, extended OptiPNG, JpegOptim, jpegrescan, jpegtran 和 Gifsicle。

安裝方式是從其官方網站(http://imageoptim.com/)上下載程序文件,拖動到 “應用程序” 目錄即可。下圖是本篇文章所有的配圖,可以看到使用 ImageOptim 達到了 29.5% 的體積縮小。

那些好用的iOS開發工具 - 賣故事的雜貨鋪

馬克鰻

馬克鰻(http://www.getmarkman.com/)是國人開發的一款免費標注工具,可以方便地在美術輸出的設計稿上標注相應界面元素的大小,顏色,邊距,說明等。

命令行工具

CocoaPods

那些好用的iOS開發工具 - 賣故事的雜貨鋪

每種語言發展到一個階段,就會出現相應的依賴管理工具或者是中央代碼倉庫。比如 Java 的 maven,Nodejs 的 npm 等。而 CocoaPods(http://cocoapods.org/)是為 iOS 程序提供依賴管理的工具。開發 iOS 項目不可避免地要使用第三方開源庫,CocoaPods 的出現使得我們可以節省設置和更新第三方開源庫的時間。

在我開發猿題庫客戶端時,其使用了 24 個第三方開源庫。在沒有使用 CocoaPods 以前,我需要:

  1. 把這些第三方開源庫的源代碼文件復制到項目中,或者設置成 git 的 submodule。

  2. 對于這些開源庫通常需要依賴系統的一些 framework,我需要手工地將這些 framework 一一增加到項目依賴中,比如通常情況下,一個網絡庫就需要增加以下 framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。

  3. 對于某些開源庫,我還需要設置-licucore或者 -fno-objc-arc等編譯參數

  4. 管理這些依賴包的更新。

這些體力活雖然簡單,但毫無技術含量并且浪費時間。在使用 CocoaPods 之后,我只需要將用到的第三方開源庫放到一個名為 Podfile 的文件中,然后執行pod install。CocoaPods 就會自動將這些第三方開源庫的源碼下載下來,并且為我的工程設置好相應的系統依賴和編譯參數。

使用 CocoaPods 還需要注意以下幾點:

  1. 需要使用 CocoaPods 生成的 .xcworkspace 文件來打開工程,而不是以前的 .xcodeproj 文件。

  2. 每次更改了 Podfile 文件,你需要重新執行一次pod update命令。

  3. 當你執行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 的憑證等。

安裝方式:

1
gem install nomad-cli

安裝完后,首先執行ios login,你的 Developer 賬號密碼會被它存儲到 Keychain 中,之后就可以用命令行來完成各種后臺操作了,例如:

添加測試設備:

1
ios devices:add "TangQiaos iPhone"=<Device Identifier>

更新證書文件:

1
ios profiles:devices:add TangQiao_Profile "TangQiaos iPhone"=<Device Identifier>

nomad 還有很多功能,建議大家閱讀其官方網站的文檔進一步學習。

xctool

xctool(https://github.com/非死book/xctool)是 非死book 開源的一個 iOS 編譯和測試的工具。使用它而不是用 Xcode 的 UI 界面是因為它是一個純命令行工具。比如:我們可以使用 xctool 在命令生下進行編譯和單元測試,然后將測試結果集成到 Jenkins 中,這樣就實現了自動化的持續集成。雖然蘋果也在 OSX Server 上推出了自己的自動化集成工具 BOT,但其配置和使用上現在仍然不太方便。

安裝 xctool 可以使用 brew 命令:

1
brew install xctool

使用 xctool 編譯項目可以使用如下命令:

1234
path/to/xctool.sh \  -project YourProject.xcodeproj \  -scheme YourScheme \  build

使用 xctool 執行單元測試,可以使用如下命令:

1234
path/to/xctool.sh \  -workspace YourWorkspace.xcworkspace \  -scheme YourScheme \  test

xctool 還有很多功能,建議大家閱讀 xctool 官方網站的文檔進一步了解更多的功能。

appledoc

appledoc(https://github.com/tomaz/appledoc)是一個從源碼中抽取文檔的工具。

對于開發者來說,文檔最好和源碼在一起,這樣更新起來更加方便和順手。象 Java 一類的語言本身就自帶 javadoc 命令,可以從源碼中抽取文檔。而 appledoc 就是一個類似 javadoc 的命令行程序,可以從 iOS 工程的源代碼中抽取相應的注釋,生成幫助文檔。

相對于其它的文檔生成工具,appledoc 的優點是:

  • 它默認生成的文檔風格和蘋果的官方文檔是一致的。

  • appledoc 就是用 objective-c 寫的,必要的時候調試和改動也比較方便。

  • 它可以生成 docset,并且集成到 xcode 中。集成之后,在相應的 API 調用處,按住 option 再單擊就可以調出相關的幫助文檔。

  • 它沒有特殊的注釋要求,兼容性高。

安裝 appledoc 可以直接使用 brew 命令:

1
brew install appledoc

使用時切換到 iOS 工程目錄下,執行以下操作即可,appledoc 會掃描當前路徑下的所有文件,然后生成好文檔放到 doc 目錄下。你也可以用 appledoc —help 查看所有可用的參數。

123
appledoc -o <output_path> \--project-name <project_name> \--project-company <project_company> .

詳細的使用介紹,歡迎閱讀我的文章:《使用 Objective-C 的文檔生成工具:appledoc》

Xcode 插件

Xcode 是 iOS 的集成開發環境,雖然蘋果一直在不斷改進 Xcode,但程序員總是有各種新奇的想法和需求,當 Xcode 無法滿足他們時,于是他們就會通過插件的方式來為 Xcode 增加新的功能。本節將會給大家介紹一些常用的 Xcode 增強插件。

Xcode 所有的插件都安裝在目錄~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/下,每個插件為一個子目錄,你也可以手工切換到這個目錄來增加或刪除插件。

Alcatraz

那些好用的iOS開發工具 - 賣故事的雜貨鋪

Alcatraz(http://alcatraz.io/)是管理 Xcode 所有插件的插件,它可以直接集成到 Xcode 的圖形界面中,讓你感覺就像在使用 Xcode 自帶的功能一樣。Alcatraz 不但可以管理 Xcode 的插件,它另外還提供了管理 Xcode 工程模版以及顏色配置的功能。

使用如下的命令行來安裝 Alcatraz:

12345
mkdir -p ~/Library/Application\ Support/\Developer/Shared/Xcode/Plug-ins;curl -L http://git.io/lOQWeA |\ tar xvz -C ~/Library/Application\ Support/\ Developer/Shared/Xcode/Plug-ins

安裝成功后重啟 Xcode,就可以在 Xcode 的頂部菜單中的 “Window”–>“Package Manager” 中找到 Alcatraz。點擊 “Package Manager”,即可啟動插件列表頁面。你可以在右上角搜索插件,對于想安裝的插件,點擊其左邊的圖標,即可下載安裝,如下所示,我正在安裝 KImageNamed 插件:

那些好用的iOS開發工具 - 賣故事的雜貨鋪

安裝完成后,再次點擊插件左邊的圖標,可以將該插件刪除。

以下所有介紹的插件均可用該方法來安裝或刪掉,就不另行介紹了。

Alcatraz 詳細的使用介紹,歡迎閱讀我的文章:《使用 Alcatraz 來管理 Xcode 插件》

KSImageNamed

KSImageNamed(https://github.com/ksuther/KSImageNamed-Xcode)是一個幫助你輸入 [UIImage imageNamed:] 中的資源名的插件。當你輸入[UIImage imageNamed:]時,會自動的彈出上下文菜單,供你選擇你需要輸入的圖片資源名字,另外在選擇圖片資源時,還可以在左側預覽該資源。如下圖所示:

那些好用的iOS開發工具 - 賣故事的雜貨鋪

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 等),即可匹配到該方法。

那些好用的iOS開發工具 - 賣故事的雜貨鋪

XToDo

XToDo(https://github.com/trawor/XToDo)是一個查找項目中所有的帶有 TODOFIXME???!!! 標記的注釋。

通常我們在項目開發中,由于種種原因,一些事情需要以后處理,這個時候為了防止遺忘,加上TODOFIXME注釋是非常有必要的,但是上線或提交代碼前要尋找這些未解決的事項卻稍顯麻煩。XToDo 可以提供一個匯總的界面,集中顯示所有的未完成的TODOFIXME標記。

BBUDebuggerTuckAway

BBUDebuggerTuckAway(https://github.com/neonichu/BBUDebuggerTuckAway)是一個非常小的工具,可以在你編輯代碼的時候自動隱藏底部的調試窗口。因為通常情況下,調試的時候是加斷點或監控變量變化,或者在 Console 窗口用po來輸出一些調試信息。如果開始編輯代碼了,說明已經調試結束了,這個時候隱藏調試窗口,可以給編輯界面更多空間,方便我們修改代碼。

SCXcodeSwitchExpander

SCXcodeSwitchExpander(https://github.com/stefanceriu/SCXcodeSwitchExpander)幫助你迅速地在switch語句中填充枚舉類型的每種可能的取值。

例如,當你輸入switch,然后鍵入一個NSTableViewAnimationOptions類時,該插件會將其可能的取值補全在每一個case之后,如下圖所示:

那些好用的iOS開發工具 - 賣故事的雜貨鋪

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命令,就可以方便地將幫助文檔輸出。

那些好用的iOS開發工具 - 賣故事的雜貨鋪

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代碼時,實時預覽相應的顏色,如下圖所示:

那些好用的iOS開發工具 - 賣故事的雜貨鋪

XcodeBoost

XcodeBoost(https://github.com/fortinmike/XcodeBoost)包含多個輔助修改代碼的小功能,比如:

  • 可以在 .m 文件中復制方法實現,然后將該方法的定義粘貼到對應的 .h 文件中

  • 可以在某一個源文件中直接輸入正則表達式查找

  • 可以復制粘貼代碼時不啟用 Xcode 的自動縮進功能(Xcode 的自動縮進經常出問題,造成已經調整好的代碼縮進,因為粘貼時被 Xcode 調整壞了)

小結

本文分圖形應用工具,命令行工具,Xcode 插件三個部分,介紹了 iOS 開發中好用的工具。其中涉及的圖形工具部分是收費的,而命令行工具和 Xcode 插件工具全部是免費并且開源的工具,筆者在此也感謝廣大的開源軟件作者,是他們讓整個軟件生態圈更加美好。


來自: http://my.oschina.net/shaw1688/blog/572067

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!