前言
開發(fā)人員不會因為做不出一個功能而頭疼,大部分開發(fā)人員頭痛的是,如何采用一些大廠的實現(xiàn)方案,達到便于維護、性能優(yōu)異的目的。尤其對于UI開發(fā)來說,能找到其他主流App的實現(xiàn)方案,確實能幫助開發(fā)者減少頁面設(shè)計、調(diào)試、性能上的負擔(dān)。
接下來我們就利用IPAPatch和Reveal來讓手機不越獄查看一些App的UI層級關(guān)系(例如:QQ、微信等),當(dāng)然調(diào)試只支持真機調(diào)試,這一點需要注意。
流程
IPAPatch通過將ipa文件替換為Xcode編譯項目的.app文件的方式,讓ipa文件可以以Xcode真機調(diào)試的方式,安裝到調(diào)試手機上。
一、IPAPatch項目
首先下載IPAPatch的項目,git地址:https://github.com/Naituw/IPAPatch,下載完成后,用Xcode打開項目。

我們找到項目設(shè)置,可以發(fā)現(xiàn)這里是跟我們平常開發(fā)的項目是一樣的,選擇好我們的開發(fā)證書,修改好BundleID即可運行。
二、替換ipa文件
之前說過,IPAPatch通過替換.app的方式,讓ipa在我們的手機上運行。我們就需要找到我們想了解的App的ipad包。這里需要說明的是,正常App Store上下載的ipa文件,是加密的,我們沒法知道里面的任何代碼,同樣IPAPatch也是通過解密的方式,將ipa的代碼進行修改以供使用的。加密的ipa文件外面有一層殼,我們要拿到的是剝了殼的ipa文件。
想下載這些解密了的ipa,直接去越獄商店下載就好。這里以我所用的手機助手為例。

找到越獄商店,下載微信:

下載好后,可以在“下載管理”中找到我們下載的ipa。

修改ipa文件名為app.ipa,將這個文件放在我們下載的git工程的如下路徑下:

接下來直接運行項目,即可將ipa文件安裝到我們的手機上,當(dāng)然僅限真機。安裝后,不會覆蓋原來的App,因為Bundle ID是不一樣的。

三、代碼注入
打開新安裝的微信,會彈出一個AlertView提示,這是我們注入的代碼。

四、Reveal調(diào)試
既然新的ipa以Xcode真機調(diào)試的方式運行在我們手機上,則我們可以通過Reveal來調(diào)試它的UI。
Reveal下載:http://xclient.info/s/reveal.html
安裝好后,找到RevealServer.framework,集成到我們的項目中。Reveal通過這個framework來對我們調(diào)試的App進行UI的解析。
在Reveal的Help中,我們可以找到RevealServer.framework。

將RevealServer.framework放到我們項目的指定目錄下,IPAPatch會將這個framework注入到微信App中。

重新運行項目,再打開Reveal。我們可以看到正在運行的可Reveal調(diào)試的App:

點擊其中任意一個,即可查看App的UI布局了:

同樣Reveal也可以用來調(diào)試我們自己開發(fā)的App,但要在上線的時候保證RevealServer.framework從項目中移除,因為這個框架中用到了蘋果的私有API。
總結(jié)
以上功能不僅讓我們可以分身應(yīng)用,還可以看到任何三方App的UI結(jié)構(gòu)、層級,在開發(fā)中可以參考一些成熟廠商所開發(fā)的App的解決方案,不僅讓我們開發(fā)者少走彎路,也為我們開發(fā)者提供了更多的新思路,讓我們技術(shù)成長更快。
參考文章:http://weibo.com/ttarticle/p/show?id=2309404086977153611942 整理加強而成,適合任何開發(fā)新手