Reveal:分析iOS UI该武器
Reveal是分析iOS應用UI的利器:
Reveal可以在執行時調試和改動iOS應用程序。它能連接到應用程序,并同意開發人員編輯各種用戶界面參數。這反過來會馬上反應在程序的UI上。就像用FireBug調試HTML頁面一樣。在不須要重寫代碼、又一次構建和又一次部署應用程序的情況下就行調試和改動iOS用戶界面。--InfoQ
Reveal執行在Mac上。眼下的最新版本號是1.0.4,能夠從這里下載,要求Mac OS X 10.8及以上,iOS 6以及以上。
如今正式版本號能夠下載試用30天,試用期后須要購買。有須要的話能夠買一個,功能相當強大。
Reveal的功能
查看iOS應用的View層次結構
使用Reveal的效果如圖:?
圖中最左側能夠看到View的名稱。中間是View的3D展示效果,能夠很清楚的看到View的層次結構。
改動參數后無需編譯就可以看到效果
Reveal還有一個很實用的功能就是動態改動參數,無需編輯動態查看效果。例如以下圖所看到的:
顯示出UILabel和UIView的關鍵屬性值,更重要的是,這些都能夠動態改動。比方我們改成測試,例如以下圖:?
把當中的圖片的寬度從80改成50。改之后的效果如圖:
下圖箭頭所指向的對方都能夠動態改動。
關于Reveal的很多其它功能,歡迎大家去探索并分享。
以下介紹Reveal怎樣集成到iOS應用中去調試。
Reveal的3種載入方法
載入方法(1)
下載Reveal之后打開,在菜單中的Help中能夠找到集成到Xcode項目的方法,這里不再贅述。
載入方法(2)
Integrating Reveal without modifying your Xcode project?
reveal: 檢視 iOS app 的 view 結構。?
給出了怎樣不用改動Xcodeproject就能夠載入使用Reveal的方法。
在當前用戶文件夾新建一個文件.lldbinit,位于~/.lldbinit。LLDB每次啟動的時候都會載入這個文件。
在.lldbinit中輸入例如以下內容:
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:0x4], 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];上述文件創建了4個命令:
reveal_load_sim,reveal_load_dev, reveal_start 和 reveal_stop-
reveal_load_sim?這個僅僅在iOS模擬器上有效。
它從Reveal的應用程序bundle中找到并載入libReveal.dylib(請確保你把Reveal安裝到了系統的Application目錄,假設你換地方了。你改動上述的文件)。
-
reveal_load_dev?這個命令在iOS設備和模擬器上都有效。只是。它須要你在Build Phase中的的Copy Bundle Resources中加上libReveal.dylib。請確保沒有放到Link Binary With Libraries這個地方。
-
reveal_start?這個命令發出一個通知啟動Reveal Server。
-
reveal_stop?這個命令發出一個通知停止Reveal Server。
請注意:僅僅有在iOS應用發出了UIApplicationDidFinishLaunchingNotification通知之后。比方應用的delegate已經處理過application::didFinishLaunchingWithOptions:之后才干調用上面的reveal_load_*命令。然后再調用reveal_start
在設備起來之后,你就能夠斷下應用。在LLDB提示框中輸入上述的命令了。
上述的過程還須要手動輸入。以下介紹怎樣設置條件斷點,使得Reveal在啟動之后自己主動載入。
在你的應用的application:didFinishLaunchingWithOptions 中的代碼出加一個斷點,然后右鍵,選擇編輯斷點。
輸入例如以下圖一樣的命令:
又一次執行下應用。假設控制臺輸出了例如以下信息:
Reveal server started.說明Reveal已經自己主動成功載入。
載入方法(3)
Reveal查看隨意app的高級技巧介紹了怎樣在越獄設備上查看隨意app的技巧:
- iOS設備須要越獄,iOS6以上
- 安裝Reveal,越獄設備與安裝Reveal的Mac在同一wifi內。
- 點擊菜單Help / Show Reveal Library in Finder。獲取libReveal.dylib
- 將libReveal.dylib上傳到設備的/Library/MobileSubstrate/DynamicLibraries
-
編輯并上傳一個libReveal.plist。格式和/Library/MobileSubstrate/DynamicLibraries以下的其它plist類似,當中的filter的bundle寫要查看的iOS App的bundle Id。 格式例如以下:
{ Filter = { Bundles = ( "你要查看的app的bundle Id" ); }; }
-
重新啟動iOS設備
小結
本文簡要介紹了Reveal的功能和幾種載入方法。
歡迎大家去體驗下Reveal的強大功能。最后,能夠看看關于Reveal的tips:Reveal tips: Navigation。
轉載于:https://www.cnblogs.com/blfshiye/p/4593269.html
總結
以上是生活随笔為你收集整理的Reveal:分析iOS UI该武器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LibLinear(SVM包)使用说明之
- 下一篇: Hybrid App开发者一定不要错过的