Reveal是一个界面调试工具。使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的界面。它类似Chrome的“审查元素”功能,我们不但可以在运行时看到iOS程序的界面层级关系,还可以实时地修改程序界面,不用重新运行程序就可以看到修改之后的效果。
在使用时,我们将Reveal连接上模拟器或真机上正在运行的iOS程序,然后就可以查看和调试iOS程序的界面。
下载安装
Releal官方提供试用版本,免费试用期是30天,功能和正式版没有差别.点此下载。
配置Reveal
1、配置方式一
(1)启动Reveal,选择Reveal -> Help -> Show Reveal Library in Finder。
(2)在Xcode中打开iOS项目,将Reveal.framework拖到项目中,如果升级了Reveal,对应的Reveal.framework文件也要更新到对应的版本。
(3)选择Target -> Build Phases -> Link Binary With Libraries将Reveal.framework移除。经测试本步骤不是必须的
(4)在Xcode的Target -> Build Setting -> Other Linker Flags添加如下几个配置项
-ObjC -lz -framework Reveal
(5)运行项目,然后打开Reveal的界面,在左上角选择连接的设备
然后就可以看到实际的运行效果
2、配置方式二
Reveal官方介绍了好几种办法使Reveal连接模拟器,都需要修改工程文件。但如果修改了工程文件,就需要参与项目开发的所有人都装有Reveal,下面介绍一种比较方便的方式来集成Reveal,步骤如下:
首先打开Terminal,输入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:0 x4], 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];
该步骤其实是为lldb设置了4个别名,为了后续方便操作,这4个别名意义如下:
reveal_load_sim为模拟器加载reveal调试用的动态链接库
reveal_load_dev为真机加载reveal调试用的动态链接库
reveal_start启动reveal调试功能
reveal_stop结束reveal调试功能
(1)Reveal连接模拟器
在AppDelegate类的application:didFinishLaunchingWithOptions:方法中,作如下3步操作(如下图所示):
1)点击该方法左边的行号区域,增加一个断点,之后右击该断点,选择“Edit Breakpoint”。
2)点击”Action”项边右的”Add Action”,然后输入“reveal_load_sim”
3)勾选上Options上的”Automatically continue after evaluating”选项。
(2)Reveal连接真机
要用Reveal连接真机调试,我们需要先把Reveal的动态链接库上传到真机上。由于iOS设备有沙盒存在,所以我们只能将Reveal的动态链接库添加到工程中。
1)点击Reveal菜单栏的”Help”->”Show Reveal Library in Finder”选项,可以在Finder中显示出Reveal的动态链接库:libReveal.dylib
2)调整libReveal.dylib的引用方式,这里我们只需要将libReveal.dylib文件拷贝到Sandbox中,但是我们在引入libReveal.dylib的时候Xcode默认是以Link Binary With Libraries的方式的,实际上应该是Copy Bundle Resources,所以应该先将libReveal.dylib从Link Binary With Libraries中移除掉,然后在Copy Bundle Resources中添加。
3)安装之前处理模拟器的方式,将配置文件改成reveal_load_dev.
启动后在控制台会出现如下内容:
参考资料
2、《Integrating Reveal without modifying your Xcode project》
最近的文章
说明:本文并不是介绍关于Python如何使用或者是Python的语法知识的,重点是分享在开发中使用Python来减少重复性的劳动的思路。Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议 。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C...…
2015-06-07•Python继续阅读
更早的文章
在iOS开发中经常遇到需要对已经上线的APP进行功能微调,或者是一些紧急的Bug修复。对于需要提交到AppStore的程序来说,每次审核的周期都会较长,在审核过程中很有可能因为各种原因被拒。由于Apple的限制,开发者无法在iOS上动态的加载Objective-C源码,使用脚本语言就可以在一定程度上解决这个问题。比如使用HTML+Javascript的方式,支付宝钱包的彩票等功能就是使用这一方式实现的。另外也可以使用Lua脚本来实现,最初我了解到的Lua是使用在游戏上面的,包括Angry ...…
2015-05-09•iOS继续阅读