Reveal集成有三種方法:
- CocoaPods集成(推薦)
- framework集成(極度不推薦)
- LLDB集成(推薦)
一春贸、CocoaPods集成Reveal(推薦)
CocoaPods是第三方庫(kù)的管理工具柏蘑,CocoaPods安裝和使用教程
CocoaPods配置完畢后颤陶,在Podfile文件中添加
pod 'Reveal-SDK', :git => 'https://git.coding.net/kakukeme/Reveal-SDK.git', :configurations => ['Debug']
Reveal在正式發(fā)版中并不需要,所以通過(guò)configurations設(shè)置只在debug模式下使用
優(yōu)點(diǎn)
- 集成之后真機(jī)纤垂、模擬器均可使用
缺點(diǎn)
- 每個(gè)項(xiàng)目都需要單獨(dú)集成Reveal
二抄课、framework集成Reveal(極度不推薦)
該方法需要預(yù)先下載Reveal的framework虏两,手動(dòng)添加到項(xiàng)目中,該方法弊端太多铛只,不細(xì)講埠胖,只吐槽。
弊端:
- 倘若framework升級(jí)仍需手動(dòng)下載替換淳玩,而CocoaPods管理可以自動(dòng)檢測(cè)升級(jí)
- 該方法需要修改項(xiàng)目的Build Setting——Other Linker Flags直撤,這種配置的修改在Xcode升級(jí)時(shí)容易踩雷。多人開(kāi)發(fā)時(shí)蜕着,倘若配置沒(méi)有同步谋竖,會(huì)編譯出錯(cuò)
- 發(fā)版打包時(shí)倘若把該framework打進(jìn)去,會(huì)增大包的體積
三承匣、LLDB集成(推薦)
-
給項(xiàng)目添加一個(gè)斷點(diǎn)蓖乘,運(yùn)行項(xiàng)目,觸發(fā)斷點(diǎn)
-
查找Reveal動(dòng)態(tài)鏈接庫(kù)的位置
找到Reveal韧骗,通常是應(yīng)用程序里嘉抒,也有可能在Download里,這個(gè)要自己安裝時(shí)到底放在哪里了
右鍵"顯示包內(nèi)容"——Contents——SharedSupport——iOS-Libraries
看一下這個(gè)目錄下面有沒(méi)有l(wèi)ibReveal.dylib
Reveal4.0及之后袍暴,該目錄下只有RevealServer.framework
解決方法:
將RevealServer.framework中的RevealServer復(fù)制到iOS-Libraries目錄之后,改名為libReveal.dylib
由此得到libReveal.dylib的路徑備用(因人而異):
/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib
-
在Xcode——LLDB中輸入(注意更換路徑)
expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)
等有反饋后繼續(xù)輸入
expr (void)[(NSNotificationCenter *)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
如果顯示INFO: Reveal Server started. 代表Reveal啟動(dòng)成功些侍。然后放開(kāi)斷點(diǎn)。
簡(jiǎn)化命令--為L(zhǎng)LDB命令設(shè)置別名
每次啟動(dòng)Reveal都輸入上面兩條命令太過(guò)繁瑣政模,可以給這兩條命令設(shè)置別名
打開(kāi)終端娩梨,vim ~/.lldbinit ,然后輸入
command alias reveal_load_sim expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)
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];
reveal_load_sim:為模擬器加載動(dòng)態(tài)鏈接庫(kù)(真機(jī)不能用)
reveal_start:?jiǎn)?dòng)reveal調(diào)試
reveal_stop:結(jié)束reveal調(diào)試
保存后重啟Xcode之后览徒,即可以使用別名:
優(yōu)點(diǎn)
- 一次集成狈定,各個(gè)項(xiàng)目只要使用模擬器調(diào)試,則均可使用
缺點(diǎn)
- 真機(jī)不可用(想用的話需要在項(xiàng)目中添加libReveal.dylib习蓬,弊端參考framework集成Reveal)