Reveal是一個界面調(diào)試工具。使用Reveal炼邀,我們可以在iOS開發(fā)時動態(tài)地查看和修改應用程序的界面讶舰。它類似Chrome的“審查元素”功能,我們不但可以在運行時看到iOS程序的界面層級關(guān)系妇押,還可以實時地修改程序界面跷究,不用重新運行程序就可以看到修改之后的效果。
配置Reveal:
1敲霍、配置方式一(需要修改工程文件)
(1)啟動Reveal俊马,選擇Reveal -> Help -> Show Reveal Library in Finder -> iOS Library。
(2)在Xcode中打開iOS項目,將Reveal.framework拖到項目中肩杈,如果升級了Reveal柴我,對應的Reveal.framework文件也要更新到對應的版本。
(3)選擇Target -> Build Phases -> Link Binary With Libraries將Reveal.framework移除扩然。經(jīng)測試本步驟不是必須的
(4)在Xcode的Target -> Build Setting -> Other Linker Flags添加如下幾個配置項
-ObjC -lz -framework Reveal
(5)運行項目艘儒,然后打開Reveal的界面,在左上角選擇連接的設(shè)備
然后就可以看到實際的運行效果
2、配置方式二(建議使用)
Reveal官方介紹了好幾種辦法使Reveal連接模擬器彤悔,都需要修改工程文件嘉抓。但如果修改了工程文件,就需要參與項目開發(fā)的所有人都裝有Reveal晕窑,下面介紹一種比較方便的方式來集成Reveal抑片,步驟如下:
首先打開Terminal,輸入vim ~/.lldbinit創(chuàng)建一個名為.lldbinit的文件杨赤,然后將如下內(nèi)容輸入到該文件中:
command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle]? ? ? ? ? ? ? pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0? ? x4], 0x2);
command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter]? ? ? ? ? postNotificationName:@"IBARevealRequestStart" object:nil];
command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter]? ? ? ? ? ? postNotificationName:@"IBARevealRequestStop" object:nil];
該步驟其實是為lldb設(shè)置了4個別名敞斋,為了后續(xù)方便操作,這4個別名意義如下:
reveal_load_sim 為模擬器加載reveal調(diào)試用的動態(tài)鏈接庫
reveal_load_dev 為真機加載reveal調(diào)試用的動態(tài)鏈接庫
reveal_start 啟動reveal調(diào)試功能
reveal_stop 結(jié)束reveal調(diào)試功能
(1)Reveal連接模擬器
在AppDelegate類的application:didFinishLaunchingWithOptions:方法中疾牲,做如下3步操作(如下圖所示):
1)點擊該方法左邊的行號區(qū)域植捎,增加一個斷點,之后右擊該斷點阳柔,選擇“Edit Breakpoint”焰枢。
2)點擊”Action”項邊右的”Add Action”,然后輸入“reveal_load_sim”
3)勾選上Options上的”Automatically continue after evaluating”選項。
(2)Reveal連接真機
要用Reveal連接真機調(diào)試舌剂,我們需要先把Reveal的動態(tài)鏈接庫上傳到真機上济锄。由于iOS設(shè)備有沙盒存在,所以我們只能將Reveal的動態(tài)鏈接庫添加到工程中霍转。
1)點擊Reveal菜單欄的”Help”->”Show Reveal Library in Finder”選項荐绝,可以在Finder中顯示出Reveal的動態(tài)鏈接庫:libReveal.dylib
2)調(diào)整libReveal.dylib的引用方式,這里我們只需要將libReveal.dylib文件拷貝到Sandbox中避消,但是我們在引入libReveal.dylib的時候Xcode默認是以Link Binary With Libraries的方式的低滩,實際上應該是Copy Bundle Resources,所以應該先將libReveal.dylib從Link Binary With Libraries中移除掉,然后在Copy Bundle Resources中添加岩喷。
3)按照之前處理模擬器的方式恕沫,將AppDelegate類中的斷點Action改成reveal_load_dev.
啟動后在控制臺會出現(xiàn)如下內(nèi)容:
至此,Reveal成功集成至Xcode中纱意,可以進行UI調(diào)試了昏兆。