前言
最近看到一篇文章專訪YYKit作者郭曜源:開源大牛是怎樣煉成的,?其中 ibireme提到了他的學(xué)習(xí)方法,一個(gè)就是大量地閱讀優(yōu)秀項(xiàng)目的源代碼,另一個(gè)就是自己動(dòng)手實(shí)踐來嘗試。這非常值得學(xué)習(xí),對(duì)我來說,沉下心來好好寫代碼才是提高水平的上策,Talk is cheap, Show me the code!
這篇blog主要記錄仿寫一個(gè)App的準(zhǔn)備工作,這里以美團(tuán)為例。
素材
首先到iTunes下載美團(tuán)到本地

在Finder中顯示,解壓ipa文件

點(diǎn)擊imeituan,顯示包內(nèi)容

就能隨意查看imeituan的素材內(nèi)容。

接口
-
Charles
這是一款在 Mac 下常用的網(wǎng)絡(luò)封包截取工具,Charles 通過將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器,使得所有的網(wǎng)絡(luò)訪問請(qǐng)求都通過它來完成,這里我們主要用它來截取網(wǎng)絡(luò)封包來分析。
這里我們主要截取iPhone上App的網(wǎng)絡(luò)請(qǐng)求,所以使用 Charles 的第一步在菜單欄上選擇 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的設(shè)置。如下圖所示::

然后我們需要獲取 Charles 運(yùn)行所在電腦的 IP 地址,Charles 的頂部菜單的 “Help”–>“Local IP Address”,即可在彈出的對(duì)話框中看到 IP 地址,如下圖所示:

最后在 iPhone 的「HTTP 代理」,將其切換成手動(dòng),然后填上 Charles 運(yùn)行所在的電腦的 IP,以及端口號(hào) 8888,如下圖所示:
接下來在手機(jī)上運(yùn)行美團(tuán),就能再Charles上查看網(wǎng)絡(luò)請(qǐng)求,如下所示:


這是美團(tuán)啟動(dòng)是Charles的顯示,可以看到
http://data.flurry.com的請(qǐng)求,顯而易見美團(tuán)iOS是使用flurry統(tǒng)計(jì)數(shù)據(jù)的。關(guān)于Charles詳細(xì)使用方法可以查看這篇博客。
App結(jié)構(gòu)
這里使用Reaveal + iPhone(越獄)來分析App的UI視圖結(jié)構(gòu)。
準(zhǔn)備工作:
1.iPhone越獄。
2.越獄后iPhone上會(huì)自行安裝上Cydia商店,打開Cydia,先在tabBar的“變更”頁面刷新軟件源。刷新成功后用Cydia搜索并安裝Reveal loader ,安裝完成后點(diǎn)擊重啟springboard。
3.在系統(tǒng)設(shè)置中找到Reveal,點(diǎn)擊Reveal - Enabled Applications,將美團(tuán)選為Enabled。
4.安裝Reveal。
5.首先保證iPhone和Mac在同一局域網(wǎng)(WiFi)中,在iPhone中運(yùn)行你要監(jiān)視的app,如果app已經(jīng)運(yùn)行,需在后臺(tái)殺死進(jìn)程重新打開,保持app在前臺(tái),然后在Mac中打開Reveal,點(diǎn)擊左上角的No Connection,然后選擇即可。
6.Commend+5 切換3D模式。每當(dāng)iPhone上的app頁面切換后,需要點(diǎn)擊Reveal窗口右上角刷新(Commend+R)。在局域網(wǎng)內(nèi)負(fù)荷較大時(shí),視圖刷新會(huì)很慢,可以用iPhone共享熱點(diǎn)給Mac解決。
準(zhǔn)備完畢后,就能在Reveal上隨意查看App結(jié)構(gòu)了,如下圖所示:

后記
這篇blog主要記錄仿寫一個(gè)App的準(zhǔn)備工作,包括獲取素材,接口,以及查看App層級(jí)結(jié)構(gòu),關(guān)于如何仿寫怎么仿寫,就得自己去Coding了。