看完這篇文章你將會(huì)GET以下幾個(gè)技能
- 蘋果手機(jī)越獄
- 動(dòng)態(tài)調(diào)試自己的
APP界面 - 動(dòng)態(tài)調(diào)試第三方的
APP界面
前言
我們平時(shí)在做原生界面開(kāi)發(fā)的時(shí)候,想要查看界面的層次結(jié)構(gòu),可以使用Xcode自帶的功能Debug View Hierarchy,但如果電腦稍微舊一點(diǎn),可能打開(kāi)都會(huì)卡一會(huì)才能顯示出來(lái),而且功能又少,只能簡(jiǎn)單地查看一下當(dāng)前界面的層次結(jié)構(gòu)。
Reveal or Lookin
為了解決這個(gè)開(kāi)發(fā)中的痛點(diǎn),其實(shí)國(guó)內(nèi)外都已經(jīng)有很成熟的第三方軟件可以供我們調(diào)試界面了,例如國(guó)外開(kāi)發(fā)的Reveal以及國(guó)內(nèi)由騰訊技術(shù)團(tuán)隊(duì)開(kāi)發(fā)的Lookin。
Reveal:可以調(diào)試自己的APP(不需要越獄)以及其他第三方APP的界面結(jié)構(gòu)(需要越獄)
Lookin:僅可以調(diào)試自己的APP的界面結(jié)構(gòu),不需要越獄
比較之下,Reveal的功能更加強(qiáng)大點(diǎn),所以接下來(lái)我會(huì)講解Reveal,Reveal可以干些什么呢?
- 實(shí)時(shí)顯示
APP當(dāng)前界面的層次結(jié)構(gòu)。(Lookin還可以看到對(duì)應(yīng)元素的命名) - 可以動(dòng)態(tài)更改界面的元素,例如文字顏色,背景顏色,
View之間的間距等等。這個(gè)很有用,有時(shí)候我們想要改一下間距或者顏色的話,需要改一次又編譯一次,然后不滿意繼續(xù)改繼續(xù)編譯,浪費(fèi)了很多時(shí)間,學(xué)會(huì)利用Reveal會(huì)讓你節(jié)省很多開(kāi)發(fā)時(shí)間,提高工作效率 - 可以直接調(diào)試第三方
APP的界面(本文的重點(diǎn)) - ...
我在網(wǎng)上搜到很多關(guān)于Reveal的文章大多都是幾年前的了,到現(xiàn)在沒(méi)有更新過(guò),如果我們直接按著這些文章來(lái)學(xué)的話可能會(huì)走很多彎路,因?yàn)橛幸恍〇|西沒(méi)有講得很清楚并且Reveal最新版本的其中的一些文件已經(jīng)改了名了,所以在這里整理一下目前正確的使用方法
調(diào)試自己的APP
如果僅僅需要調(diào)試自己的APP的話,直接把下面流程拿到的RevealServer.framework丟進(jìn)工程目錄就可以進(jìn)行調(diào)試了,不需要越獄
進(jìn)入正題 - 分析任意APP的界面結(jié)構(gòu)
準(zhǔn)備材料
- 一臺(tái)越獄
iPhone - 安裝
Reveal(官網(wǎng)版本是收費(fèi)的,有一段免費(fèi)使用時(shí)間,我在網(wǎng)上找到一個(gè)破解版本可以免費(fèi)使用,下載鏈接:https://pan.baidu.com/s/1cKbaoAm2dBsJ9gw-c9j0OQ 密碼:2b49)
越獄
我使用的是iPhone5s 系統(tǒng)版本 9.3.2
建議用windows電腦下載愛(ài)思助手,一鍵越獄(mac版本的愛(ài)思助手好像已經(jīng)不能使用越獄功能了),也可以使用其他越獄方法,能成功越獄就行。

按照步驟一步一步越獄就可以了
- 越獄成功后會(huì)有一個(gè)軟件叫
Cydia,能打開(kāi)說(shuō)明越獄成功,上面那種越獄方法是非完美越獄,重啟設(shè)備后需要重新越獄,手機(jī)瀏覽網(wǎng)站http://jb92.i4.cn進(jìn)行修復(fù)即可 - 打開(kāi)
Cydia,點(diǎn)搜索,分別按順序搜索并安裝Cydia Substrate和OpenSSH。 -
CydiaSubstrate是一個(gè)框架,允許第三方的開(kāi)發(fā)者在系統(tǒng)的方法里打一些運(yùn)行時(shí)補(bǔ)丁,擴(kuò)展一些方法.只有安裝了CydiaSubstrate才會(huì)有下面要用到的目錄,/Library/MobileSubstrate/DinamicLibraries
配置文件
- 手機(jī)需要用數(shù)據(jù)線連接電腦
- 安裝好
openSSH之后,需要拷貝Reveal的兩個(gè)東西到手機(jī)對(duì)應(yīng)目錄里面 - 如果是下載了我上面提供的破解版,里面的文件目錄是這樣的

把Reveal拖入應(yīng)用程序即安裝完成,然后打開(kāi)Reveal->Help->Show Reveal Library in Finder->iOS Library

- 拷貝
Reveal.framework
打開(kāi)后把RevealServer.framework拷貝到桌面或者其他地方

把拷貝完的文件的文件名由RevealServer.framework修改為Reveal.framework

然后丟進(jìn)手機(jī)文件夾/System/Library/Frameworks/目錄下,可以直接使用愛(ài)思助手的文件管理導(dǎo)入到該目錄下面,也可以使用openSSH導(dǎo)入
終端輸入
scp -r /Users/Jimmy/Desktop/Reveal.framework root@192.168.0.x:/System/Library/Frameworks
上面這條指令中,注意替換一下自己的reveal.framework的絕對(duì)路徑,以及自己手機(jī)的ip地址
- 拷貝
libReveal.dylib
還有一個(gè)文件需要導(dǎo)入,把reveal.framework下的RevealServer名字改為libReveal.dylib

然后按上面那種方式導(dǎo)入到/Library/MobileSubstrate/DynamicLibraries/目錄下
scp /Users/Jimmy/Desktop/RevealServer.framework/RevealServer root@192.168.0.x:/Library/MobileSubstrate/DynamicLibraries
- 創(chuàng)建
libReveal.plist文件并導(dǎo)入
通過(guò)終端在電腦上創(chuàng)建一個(gè)名為libReveal.plist文件
MacdeMacBook-Pro:~ Jimmy$ echo "" > libReveal.plist
往文件里加入下面內(nèi)容
{
Filter = {
Bundles = (
"com.taobao.taobao4iphone"
);
};
}
如下

加入你想查看的App的Bundle Id到Bundles數(shù)組中,可以通過(guò)愛(ài)思助手查看對(duì)應(yīng)APP文件夾的iTunesMetadata.plist文件中的softwareVersionBundleId對(duì)應(yīng)的值,以上是某寶的Bundle Id
然后把這個(gè)文件導(dǎo)入到/Library/MobileSubstrate/DynamicLibraries/目錄下,導(dǎo)入方式同上。
配置完成
重啟一下手機(jī),如果是非完美越獄的話重啟后需要再次越獄(如果是按我這種方式越獄的話,手機(jī)瀏覽愛(ài)思助手提供的網(wǎng)站進(jìn)行修復(fù)即可)
現(xiàn)在可以直接打開(kāi)
Reveal調(diào)試第三方App了,這里我用某寶舉例。
有兩種連接方式,一種是通過(guò)數(shù)據(jù)線連接,另一種是通過(guò)WIFI連接(手機(jī)和電腦必須在同一個(gè)WIFI下)-
手機(jī)打開(kāi)某寶
APP,Reveal的可調(diào)試列表中就會(huì)顯示某寶了
下面是某寶的首頁(yè)的層次結(jié)構(gòu)
以后遇到什么不懂的布局/覺(jué)得自己的布局很糟糕/對(duì)別人app的布局好奇的話都可以通過(guò)
Reveal來(lái)分析他們的布局了,對(duì)比優(yōu)秀的App的布局和你的布局,學(xué)習(xí)他們好的地方~

