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

在Finder中顯示,解壓ipa文件

點擊imeituan,顯示包內容

就能隨意查看imeituan的素材內容。

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

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

最后在 iPhone 的「HTTP 代理」,將其切換成手動,然后填上 Charles 運行所在的電腦的 IP,以及端口號 8888,如下圖所示:
接下來在手機上運行美團,就能再Charles上查看網絡請求,如下所示:


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

后記
這篇blog主要記錄仿寫一個App的準備工作,包括獲取素材,接口,以及查看App層級結構,關于如何仿寫怎么仿寫,就得自己去Coding了。