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

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主要提供兩種封包視圖铣焊,分別為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欄懈糯,點(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)容的目的件舵。

  1. Map功能適合長期的將某一些請求重定向到另一個網(wǎng)絡(luò)地址或本地文件卸察。
  2. Rewrite功能適合對網(wǎng)絡(luò)請求進(jìn)行一些正則替換。
  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即可進(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)如下:

  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:模糊代碼補(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:從開源代碼中抽取文檔的工具。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末延蟹,一起剝皮案震驚了整個濱河市评矩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱飘,老刑警劉巖斥杜,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異俯萌,居然都是意外死亡果录,警方通過查閱死者的電腦和手機(jī)上枕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門咐熙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辨萍,你說我怎么就攤上這事棋恼。” “怎么了锈玉?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵爪飘,是天一觀的道長。 經(jīng)常有香客問我拉背,道長师崎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任椅棺,我火速辦了婚禮犁罩,結(jié)果婚禮上齐蔽,老公的妹妹穿的比我還像新娘。我一直安慰自己床估,他們只是感情好含滴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丐巫,像睡著了一般谈况。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上递胧,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天碑韵,我揣著相機(jī)與錄音,去河邊找鬼缎脾。 笑死泼诱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赊锚。 我是一名探鬼主播治筒,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舷蒲!你這毒婦竟也來了耸袜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤牲平,失蹤者是張志新(化名)和其女友劉穎堤框,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纵柿,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜈抓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昂儒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沟使。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖渊跋,靈堂內(nèi)的尸體忽然破棺而出腊嗡,到底是詐尸還是另有隱情,我是刑警寧澤拾酝,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布燕少,位于F島的核電站,受9級特大地震影響蒿囤,放射性物質(zhì)發(fā)生泄漏客们。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望底挫。 院中可真熱鬧嗽桩,春花似錦、人聲如沸凄敢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涝缝。三九已至扑庞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拒逮,已是汗流浹背罐氨。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滩援,地道東北人栅隐。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像玩徊,于是被迫代替她去往敵國和親租悄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容