那些好用的iOS开发工具
版權說明
本文首發于《程序員》雜志2014年6月刊,未經允許,請勿轉載。
前言
從蘋果發明iPhone起,AppStore上的一個又一個類似flappy bird的一夜暴富的故事刺激著大量開發者加入移動開發大軍。隨著這些開發者出現的,還有大量方便iOS開發者的各種工具。這些工具作為整個應用開發生態鏈的重要一環,極大地方便了廣大應用開發者,節省了應用開發的時間。
本文將從應用工具、命令行工具、插件工具3個方面,介紹這些優秀的應用。
圖形應用工具
Charles
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, AdvPNG, extended OptiPNG, JpegOptim, jpegrescan, jpegtran 和 Gifsicle。
安裝方式是從其官方網站(http://imageoptim.com/)上下載程序文件,拖動到“應用程序”目錄即可。下圖是本篇文章所有的配圖,可以看到使用ImageOptim達到了29.5%的體積縮小。
馬克鰻
馬克鰻(http://www.getmarkman.com/)是國人開發的一款免費標注工具,可以方便地在美術輸出的設計稿上標注相應界面元素的大小,顏色,邊距,說明等。
命令行工具
CocoaPods
每種語言發展到一個階段,就會出現相應的依賴管理工具或者是中央代碼倉庫。比如Java的maven,Nodejs的npm等。而CocoaPods(http://cocoapods.org/)是為iOS程序提供依賴管理的工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設置和更新第三方開源庫的時間。
在我開發猿題庫客戶端時,其使用了24個第三方開源庫。在沒有使用CocoaPods以前,我需要:
這些體力活雖然簡單,但毫無技術含量并且浪費時間。在使用CocoaPods之后,我只需要將用到的第三方開源庫放到一個名為Podfile的文件中,然后執行pod install。CocoaPods就會自動將這些第三方開源庫的源碼下載下來,并且為我的工程設置好相應的系統依賴和編譯參數。
使用CocoaPods還需要注意以下幾點:
詳細的使用說明,歡迎閱讀我的文章:《用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/facebook/xctool)是facebook開源的一個iOS編譯和測試的工具。使用它而不是用Xcode的UI界面是因為它是一個純命令行工具。比如:我們可以使用xctool在命令生下進行編譯和單元測試,然后將測試結果集成到Jenkins中,這樣就實現了自動化的持續集成。雖然蘋果也在OSX Server上推出了自己的自動化集成工具BOT,但其配置和使用上現在仍然不太方便。
安裝xctool可以使用brew命令:
| 1 | brew install xctool |
使用xctool編譯項目可以使用如下命令:
| 1 2 3 4 | path/to/xctool.sh \ -project YourProject.xcodeproj \ -scheme YourScheme \ build |
使用xctool執行單元測試,可以使用如下命令:
| 1 2 3 4 | 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查看所有可用的參數。
| 1 2 3 | 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
Alcatraz(http://alcatraz.io/)是管理Xcode所有插件的插件,它可以直接集成到Xcode的圖形界面中,讓你感覺就像在使用Xcode自帶的功能一樣。Alcatraz不但可以管理Xcode的插件,它另外還提供了管理Xcode工程模版以及顏色配置的功能。
使用如下的命令行來安裝Alcatraz:
| 1 2 3 4 5 | 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插件:
安裝完成后,再次點擊插件左邊的圖標,可以將該插件刪除。
以下所有介紹的插件均可用該方法來安裝或刪掉,就不另行介紹了。
Alcatraz詳細的使用介紹,歡迎閱讀我的文章:《使用Alcatraz來管理Xcode插件》
KSImageNamed
KSImageNamed(https://github.com/ksuther/KSImageNamed-Xcode)是一個幫助你輸入[UIImage imageNamed:]中的資源名的插件。當你輸入[UIImage imageNamed:]時,會自動的彈出上下文菜單,供你選擇你需要輸入的圖片資源名字,另外在選擇圖片資源時,還可以在左側預覽該資源。如下圖所示:
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等),即可匹配到該方法。
XToDo
XToDo(https://github.com/trawor/XToDo)是一個查找項目中所有的帶有?TODO,?FIXME,????,?!!!?標記的注釋。
通常我們在項目開發中,由于種種原因,一些事情需要以后處理,這個時候為了防止遺忘,加上TODO或FIXME注釋是非常有必要的,但是上線或提交代碼前要尋找這些未解決的事項卻稍顯麻煩。XToDo可以提供一個匯總的界面,集中顯示所有的未完成的TODO和FIXME標記。
BBUDebuggerTuckAway
BBUDebuggerTuckAway(https://github.com/neonichu/BBUDebuggerTuckAway)是一個非常小的工具,可以在你編輯代碼的時候自動隱藏底部的調試窗口。因為通常情況下,調試的時候是加斷點或監控變量變化,或者在Console窗口用po來輸出一些調試信息。如果開始編輯代碼了,說明已經調試結束了,這個時候隱藏調試窗口,可以給編輯界面更多空間,方便我們修改代碼。
SCXcodeSwitchExpander
SCXcodeSwitchExpander(https://github.com/stefanceriu/SCXcodeSwitchExpander)幫助你迅速地在switch語句中填充枚舉類型的每種可能的取值。
例如,當你輸入switch,然后鍵入一個NSTableViewAnimationOptions類時,該插件會將其可能的取值補全在每一個case之后,如下圖所示:
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命令,就可以方便地將幫助文檔輸出。
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代碼時,實時預覽相應的顏色,如下圖所示:
XcodeBoost
XcodeBoost(https://github.com/fortinmike/XcodeBoost)包含多個輔助修改代碼的小功能,比如:
- 可以在.m文件中復制方法實現,然后將該方法的定義粘貼到對應的.h文件中
- 可以在某一個源文件中直接輸入正則表達式查找
- 可以復制粘貼代碼時不啟用Xcode的自動縮進功能(Xcode的自動縮進經常出問題,造成已經調整好的代碼縮進,因為粘貼時被Xcode調整壞了)
小結
本文分圖形應用工具,命令行工具,Xcode插件三個部分,介紹了iOS開發中好用的工具。其中涉及的圖形工具部分是收費的,而命令行工具和Xcode插件工具全部是免費并且開源的工具,筆者在此也感謝廣大的開源軟件作者,是他們讓整個軟件生態圈更加美好。
總結
以上是生活随笔為你收集整理的那些好用的iOS开发工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派4b移植4G USB驱动Quect
- 下一篇: 【基础】ARM芯片上电取第一条指令流程