前言
開(kāi)發(fā)人員不會(huì)因?yàn)樽霾怀鲆粋€(gè)功能而頭疼懂更,大部分開(kāi)發(fā)人員頭痛的是,如何采用一些大廠的實(shí)現(xiàn)方案急膀,達(dá)到便于維護(hù)沮协、性能優(yōu)異的目的。尤其對(duì)于UI開(kāi)發(fā)來(lái)說(shuō)卓嫂,能找到其他主流App的實(shí)現(xiàn)方案慷暂,確實(shí)能幫助開(kāi)發(fā)者減少頁(yè)面設(shè)計(jì)、調(diào)試晨雳、性能上的負(fù)擔(dān)行瑞。
接下來(lái)我們就利用IPAPatch和Reveal來(lái)讓手機(jī)不越獄查看一些App的UI層級(jí)關(guān)系(例如:QQ、微信等)餐禁,當(dāng)然調(diào)試只支持真機(jī)調(diào)試血久,這一點(diǎn)需要注意。
流程
IPAPatch通過(guò)將ipa文件替換為Xcode編譯項(xiàng)目的.app文件的方式帮非,讓ipa文件可以以Xcode真機(jī)調(diào)試的方式氧吐,安裝到調(diào)試手機(jī)上绷旗。
一、IPAPatch項(xiàng)目
首先下載IPAPatch的項(xiàng)目副砍,git地址:https://github.com/Naituw/IPAPatch衔肢,下載完成后,用Xcode打開(kāi)項(xiàng)目豁翎。
我們找到項(xiàng)目設(shè)置角骤,可以發(fā)現(xiàn)這里是跟我們平常開(kāi)發(fā)的項(xiàng)目是一樣的,選擇好我們的開(kāi)發(fā)證書(shū)心剥,修改好BundleID即可運(yùn)行邦尊。
二、替換ipa文件
之前說(shuō)過(guò)优烧,IPAPatch通過(guò)替換.app的方式蝉揍,讓ipa在我們的手機(jī)上運(yùn)行。我們就需要找到我們想了解的App的ipad包畦娄。這里需要說(shuō)明的是又沾,正常App Store上下載的ipa文件,是加密的熙卡,我們沒(méi)法知道里面的任何代碼杖刷,同樣IPAPatch也是通過(guò)解密的方式,將ipa的代碼進(jìn)行修改以供使用的驳癌。加密的ipa文件外面有一層殼滑燃,我們要拿到的是剝了殼的ipa文件。
想下載這些解密了的ipa颓鲜,直接去越獄商店下載就好表窘。這里以我所用的手機(jī)助手為例。
找到越獄商店甜滨,下載微信:
下載好后乐严,可以在“下載管理”中找到我們下載的ipa。
修改ipa文件名為app.ipa艳吠,將這個(gè)文件放在我們下載的git工程的如下路徑下:
接下來(lái)直接運(yùn)行項(xiàng)目麦备,即可將ipa文件安裝到我們的手機(jī)上,當(dāng)然僅限真機(jī)昭娩。安裝后,不會(huì)覆蓋原來(lái)的App黍匾,因?yàn)锽undle ID是不一樣的栏渺。
三、代碼注入
打開(kāi)新安裝的微信锐涯,會(huì)彈出一個(gè)AlertView提示磕诊,這是我們注入的代碼。
四、Reveal調(diào)試
既然新的ipa以Xcode真機(jī)調(diào)試的方式運(yùn)行在我們手機(jī)上霎终,則我們可以通過(guò)Reveal來(lái)調(diào)試它的UI滞磺。
Reveal下載:http://xclient.info/s/reveal.html
安裝好后,找到RevealServer.framework莱褒,集成到我們的項(xiàng)目中击困。Reveal通過(guò)這個(gè)framework來(lái)對(duì)我們調(diào)試的App進(jìn)行UI的解析。
在Reveal的Help中广凸,我們可以找到RevealServer.framework阅茶。
將RevealServer.framework放到我們項(xiàng)目的指定目錄下,IPAPatch會(huì)將這個(gè)framework注入到微信App中谅海。
重新運(yùn)行項(xiàng)目脸哀,再打開(kāi)Reveal。我們可以看到正在運(yùn)行的可Reveal調(diào)試的App:
點(diǎn)擊其中任意一個(gè)扭吁,即可查看App的UI布局了:
同樣Reveal也可以用來(lái)調(diào)試我們自己開(kāi)發(fā)的App撞蜂,但要在上線的時(shí)候保證RevealServer.framework從項(xiàng)目中移除,因?yàn)檫@個(gè)框架中用到了蘋(píng)果的私有API侥袜。
總結(jié)
以上功能不僅讓我們可以分身應(yīng)用谅摄,還可以看到任何三方App的UI結(jié)構(gòu)、層級(jí)系馆,在開(kāi)發(fā)中可以參考一些成熟廠商所開(kāi)發(fā)的App的解決方案送漠,不僅讓我們開(kāi)發(fā)者少走彎路,也為我們開(kāi)發(fā)者提供了更多的新思路由蘑,讓我們技術(shù)成長(zhǎng)更快闽寡。
參考文章:http://weibo.com/ttarticle/p/show?id=2309404086977153611942 整理加強(qiáng)而成,適合任何開(kāi)發(fā)新手