Reveal集成有三种方法:
- CocoaPods集成(推荐)
- framework集成(极度不推荐)
- LLDB集成(推荐)
一、CocoaPods集成Reveal(推荐)
CocoaPods是第三方库的管理工具,CocoaPods安装和使用教程
CocoaPods配置完毕后,在Podfile文件中添加
pod 'Reveal-SDK', :git => 'https://git.coding.net/kakukeme/Reveal-SDK.git', :configurations => ['Debug']
Reveal在正式发版中并不需要,所以通过configurations设置只在debug模式下使用
优点
- 集成之后真机、模拟器均可使用
缺点
- 每个项目都需要单独集成Reveal
二、framework集成Reveal(极度不推荐)
该方法需要预先下载Reveal的framework,手动添加到项目中,该方法弊端太多,不细讲,只吐槽。
弊端:
- 倘若framework升级仍需手动下载替换,而CocoaPods管理可以自动检测升级
- 该方法需要修改项目的Build Setting——Other Linker Flags,这种配置的修改在Xcode升级时容易踩雷。多人开发时,倘若配置没有同步,会编译出错
- 发版打包时倘若把该framework打进去,会增大包的体积
三、LLDB集成(推荐)
-
给项目添加一个断点,运行项目,触发断点
-
查找Reveal动态链接库的位置
找到Reveal,通常是应用程序里,也有可能在Download里,这个要自己安装时到底放在哪里了
右键"显示包内容"——Contents——SharedSupport——iOS-Libraries
看一下这个目录下面有没有libReveal.dylib
Reveal4.0及之后,该目录下只有RevealServer.framework
解决方法:
将RevealServer.framework中的RevealServer复制到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)
等有反馈后继续输入
expr (void)[(NSNotificationCenter *)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
如果显示INFO: Reveal Server started. 代表Reveal启动成功。然后放开断点。
简化命令--为LLDB命令设置别名
每次启动Reveal都输入上面两条命令太过繁琐,可以给这两条命令设置别名
打开终端,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:为模拟器加载动态链接库(真机不能用)
reveal_start:启动reveal调试
reveal_stop:结束reveal调试
保存后重启Xcode之后,即可以使用别名:
优点
- 一次集成,各个项目只要使用模拟器调试,则均可使用
缺点
- 真机不可用(想用的话需要在项目中添加libReveal.dylib,弊端参考framework集成Reveal)