什么是Reveal?
Reveal是一个很强大的UI分析工具,与其他几个功能相近的工具(比如PonyDebugger)相比,其最大的特点就是非常直观,用来查看app的UI布局非常方便。今天就来简单的简述下Reveal的安装与用法。请到这里下载Reveal
用Reveal连接模拟器调试
Reveal官方介绍了好几种办法使Reveal连接模拟器,但是它们都需要修改工程文件。如果修改了工程文件,就需要项目开发的所有人都安装有Reveal,这样非常的麻烦,这次来介绍一种不修改任何工程文件的办法,在实际使用中,这种办法也是最简单方便的。
首先我们需要打开终端,输入
$ vim ~/.lldbinit
创建一个名为.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];
输入完成后, 输入
$ :wq
保存并退出。以上是四句命令,命令的意思是,给lldb设置了4个别名,这四个别名的意义是:
reveal_load_sim
:模拟器加载reveal时调用的动态链接库reveal_load_dev
:真机加载reveal时调用的动态链接库reveal_start
:启动reveal的调试功能reveal_stop
:关闭reveal的调试功能
Reveal的使用
接下来,我们再AppDelegate类的application:didFinishLaunchingWithOptions:
方法中,进行下面三步操作:
- 单击该方法的左边的行号区域,增加一个断点,之后右键该断点,选择
Edit Breakpoint
。 - 单击
Add Action
,然后输入reveal_load_sim
。 - 勾选上Options 上的
Automatically continue after evaluating
选项。
之后我们运行模拟器,打开Reveal,就可以在reveal界面的左上角看到模拟器可以链接调试,选择它,就可以在Reveal中查看调试该iOS程序的界面了。
用Reveal连接真机调试
要用Reveal连接真机调试,我们需要先把Reveal的动态链接库上传到真机上。由于iOS设备有沙盒存在,所以我们只能将Reveal的动态链接库添加工程中。
选择Reveal菜单栏的 help
-> show Reveal Library in Finder
选项中的 iOS Library
,就可以看到Reveal的动态链接库 libReveal.dylib
我们将libReveal.dylib
文件拖动到目标Xcode工程中,将libReveal.dylib
设置到 Link Frameworks and Libraries
下即可。
之后用Reveal连接真机的方式和连接模拟器的方式是类似的,我们只需要将断点中的内容 改成 reveal_load_dev
即可。
最后更新: 2023年03月25日 22:39:54
本文链接: http://aeronxie.github.io/post/f69cb241.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!