首页 > 代码库 > 项目总结(五)--- 界面调试工具Reveal
项目总结(五)--- 界面调试工具Reveal
在开发中,我们也许会碰到以下需求:对于一些动态复杂的交互界面,手码去制定界面是常有的事情,然而我们在开发中想修改过一些参数后想看下实时效果,只能重新运行项目,进入到对应的页面来进行修改,是不是有点麻烦呢? 还有,作为屌丝程序猿想脱离屌丝行列,不断学习先进的东东是必不可少的,那么,如果看到别的大公司开发的优秀APP,想借鉴学习下,又该怎么入手呢?这时,Reveal会帮助我们。
1、Reveal的下载
进入到官网(http://revealapp.com/)后
下载就可以(注意下载后默认保存的是在“下载”下面,手动移动到“应用程序”下面,方便下面使用时的一些操作)。
2、界面认识
3、Reveal的使用
1》连接到模拟器调试
连接到模拟器调试有好几种方法,有的是必须修改功能文件(缺点显而易见,协作开发时得要求别人也安装这玩意),有的是断点后在LLDB输入命令等等。在这就简单记录下最方便简单地一种方式,步骤如下:
(1)在当前用户目录下,建立.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];
(2)在项目代理中的application:didFinishLaunchingWithOptions:方法中,进行以下几步,
第一:添加一个断点,并右击编辑
第二:单击“Action”右边的“+”,输入“reveal_load_sim”
第三:勾选上“Option” 上的选项 “Automatically continue after evaluating”,如图:
然后运行APP在模拟器,打开Reveal就可以看到左上角有个连接调试。到此就可以尽情享受你的成果了。
2》连接到真机调试
(1)添加Reveal链接动态库到我们工程:在Reveal菜单“Help”->"Show Reveal Library in Finder" 找到动态库后拖拽到工程中;
(2)注意Xcode默认是将其设置到“Link Binary With Libraries”中,需要删除它,并添加到 “Copy Bundle Resources”下面;
(3)下面步骤与上面类似,只需要将断点中得Action 改为 reveal_load_dev 就可以了。
3》使用此工具调试其他应用界面
(1)要求手机必须越狱,至于越狱教程,去其他地方搜吧,好多
(2)将Reveal 的动态链接库上传到iOS设备目录 /Library/MobileSubstrate/DynamicLibraries (这里存放着所有在系统启动时就需要加载的动态链接库)中即可。(上传方法;可以安装OpenSSH后,用scp来上传)
(3)同时编辑并上传一个libReveal.plist,格式如下:
{
Filter={
Bundles = ("需要分析的BundleID 1","需要分析的BundleID 2" …);
};
}
这样可以监控指定的APP,不上传这个文件也可以,那样就可以监控所有的APP,速度慢点而已。
注意:如果libReveal.dylib没有执行权限,可以使用 chmod+x libReveal.dylib命令来增加权限后,执行 killall SpringBoard重启桌面。
当然,类似的软件还有PonyDebugger, Spark Inspector来进行调试。
项目总结(五)--- 界面调试工具Reveal