iOS UI調試工具Reveal使用詳解

Reveal簡介

? ? ? ?Reveal是一個iOS程序界面調試工具。可以在Reveal上查看視圖的層級和修改控件的屬性,用來調試UI,同時還可以利用越獄手機查看其它應用的結構,做逆向分析,在應用開發過程中很有用處。

Reveal功能

一、查看應用結構層級

下面是淘寶購物車iOS客戶端的層級結構圖

1、左邊的部分是頁面的層級結構,可以看出每一層是由哪些控件構成的,自定義控件的名字,從視圖結構可以看出,淘寶的商品tableView中由以下幾種Cell組成的。

2、中間部分是一個view的可視化視圖,可以在這里實時查詢view的視圖效果,包括視圖框架,縮放、2D視圖和3D視圖等。

3、右邊部分是選中控件的屬性,以及一些參數設置,下面是選中view的部分屬性信息,包括frame和transform,backgroundColor等。

二、修改屬性調試UI

? ? ? 從Reveal的右面的界面可以看到控件的屬性,下面以選中蘋果手機殼的那個cell為例,修改其背景顏色由白色修改為紅色,效果圖如下:

? ? ? 同時還可以修改其frame,alpha,hidden,title等屬性,可以在不重新運行應用的情況下,通過Reveal修改其屬性,達到調試UI的目的。

Reveal在開發中的作用

一、快速查找項目中某個功能所對應的代碼

? ? 在實際開發過程中,如果某天需要做一個新功能,在沒有頭緒的時候,如果此時項目中其它模塊有類似的功能,需要在項目中找功能對應的類,那么你可以打開Reveal,然后切換到對應的頁面,通過Reveal展示的界面關系,可以快速的找到應用界面對應的類,然后再對應的類中查找具體代碼實現,比如我想查看全選按鈕是怎么實現的,我可選中全選按鈕,然后看Reveal中全選按鈕的對應的類是TBShopCartFooterView,然后在TBShopCartFooterView中找到具體的實現代碼。

二、點擊事件不響應,設置屬性未達到預期效果,查看view層級,快速定位問題

? ? ? ?在開發中常常出現點擊事件不響應,設置屬性未達到預期的時候,這個時候往往不好查找原因,可以通過Reveal查看視圖的層級,來確定控件是否被透明層遮蓋,響應事件是否被屏蔽,對應的屬性是否已設置成功等。假設點擊購物車的全選按鈕沒響應,通過查看代碼,發現響應事件沒有被調用,這個時候可以通過Reveal查看全選按鈕是否被遮蓋,點擊事件響應鏈是否被中斷,是否超出父view的frame等原因。

三、逆向分析其它應用的實現

? ? ? ?這篇文章是以淘寶為例的,其實就是逆向分析,查看淘寶客戶端的具體層級結構和實現,看看某些功能是通過哪些控件實現的,學習界面布局。

Reveal的安裝

下面給大家介紹一下Reveal的官網,可以去上面看具體使用方法和安裝教程

一、Reveal在模擬器中調試

Reveal在模擬器中的使用的安裝方法有好幾種,最方便的是通過斷點的方式進行安裝(官網教程),不需要向程序中添加代碼,很方便,下面我就介紹一下具體步驟:

1、在Xcode中打開你的項目,選擇View → Navigators → Show Breakpoint Navigator.然后選中Add Symbolic Breakpoint.

2.Symbol輸入UIApplicationMain

3.然后點擊Add Action按鈕, 設置為Debugger Command.

4、拷貝下列代碼到下面的文本框中,下面加粗部分為你的Reveal的對應目錄,可以在Reveal的Help->Show Reveal Library Finder->iOS Library中查看,比如我的Reveal目錄為/Users/xiaominge/Documents/MacSoft/Reveal/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib

expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework/Reveal", 0x2) : ((void*)0)

5、選中 Automatically continue after evaluating actions.下面是全部設置

二、Reveal在真機中調試應用

在真機中調試的安裝方法,在模擬器中也可以實現,不過需要添加代碼到工程中,略微麻煩(真機調試官網教程

1、打開Xcode工程

2、在Reveal選擇Help->Show Reveal Library Finder->iOS Library查看Reveal.framework路徑。

3、按住Option (?)Reveal.framework拖入項目工程的根目錄

4、在項目工程的Build settingsOther Linker Flags項的Debug中增加-ObjC -framework Reveal(如果項目中有多個靜態文件,這種方式可能有問題,需要改成-force_load

$(SRCROOT)/Reveal.framework/Reveal)

5.運行的程序,即可在Reveal中找到。

三、Reveal在調試其它應用的安裝方法

在Reveal中調試其它應用,需要一部越獄的手機,沒越獄的手機沒辦法調試。具體的安裝步驟如下:

1.首先在手機的Cydia(越獄手機自帶的,類似App Store)中搜索并安裝Reveal Loader(無效了),請使用Reveal2Loader

2.然后找到iOS設備的目錄/Library/MobileSubstrate/DynamicLibraries(推薦使用Cydia中安裝OpenSSH工具的方式,還可以通過pp助手->工具->系統文件,通過PP助手移動文件,可能會出現手機不能開機的問題),libReveal.dylib 放到該目錄下。)

注意:使用Reveal2Loader 不需要導入文件了

3、然后重啟手機,或者利用OpenSSH在電腦終端執行killall SpringBoard 重啟桌面,可以在手機設置中查看到Reveal,然后選中Reveal->Enabled Applications,打開想要查看的應用開關,然后退出,打開想要查看的app,即可查看對應的層級結構。

參考鏈接:

http://support.revealapp.com/kb/getting-started/reveal-integration-guide

https://xiuchundao.me/post/integrating-reveal-inspect-app-on-jailbreak-device-with-reveal

http://chaosky.me/2016/07/27/iOS-Security-Defense-Reveal/

http://chuansong.me/n/1308113

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,229評論 4 61
  • ①等待 炙熱的陽光烤在大地上,裸露的肌膚曬得有些生疼,我們一行人焦急地等待著。瑞這會兒痛的厲害,站也不是,坐也不是...
    玖月冬暖閱讀 225評論 2 2
  • 七年前的下午 陽光照著我空白單純的心 我以為 這份空白會經歷每一年的這樣的下午 直到遇到你 所謂愛情 就是你用你的...
    郝東東閱讀 521評論 2 4
  • 今天上午兒女還是去學的書法,中午我去接他倆回家,我們吃完午飯,在家休息了會,午睡起來后,我帶著他倆去蒂...
    梁佳碩媽媽閱讀 196評論 0 1