原文地址:咖啡猪_iOSer
移动开发这一块做的最多的无疑就是UI和交互,而UI调试也是移动开发人员经常干的一苦逼事。虽然目前iOS开发工具Xcode集成了UI调试功能(Debug View Hierarchy),但带给我们的却只有失望。接下来就如标题所见,笔者来简单介绍和使用Reveal,因为这东西使用起来并不难,所以着重讲解怎么集成到工程里。但是...这个工具是收费的,不过还好我们在天朝(你懂得,暴力破解)。
简单介绍
Reveal的使用其实真的很简单,就如第一张镇楼图的效果一样。中间是3D可视化当前APP页面的视图,左侧则是这些UI元素和层次结构,而右侧则是View的属性,你可以修改View的颜色、frame等等,并且效果还是及时渲染到模拟器上的。当你真正使用的时候一眼就能看懂。而关于Reveal的下载就去Google一下就搞定了。至于没FQ的童鞋则随意百度就行。
集成
把Reveal集成到项目里有两种方式。第一种则是添加Reveal的framework
到工程里(不推荐)。第二种是用LLDB命令(狂吐血推荐)。
framework集成(不推荐)
而关于用framework
集成的方式可参考我很久以前在CSDN上写的一篇文章,点我传送过去。因为用这种方式集成的弊端就是在于,你还要配置project的other linker Flags
,还要注意不要在打包发布的时候也一起打包进去了。而且每个项目都要去加入Reveal的framework,并且配置other linker Flags
。那么问题来了,有没有一劳永逸的方式尼?就是配置一次环境,以后不管有多少项目都直接使用?答案是有的。那就是用第二种方式LLDB来配置,因为这需要一点LLDB的基础知识,在本章都会进行简单介绍。
LLDB集成(吐血推荐)
LLDB集成的优势就是在于不用担心打包会把Reveal的framework也打包进去的问题。而且本地配置好了,只要在这台机器上任何项目都通用。最最最主要的一点就是,高bigger。
使用LLDB命令集成
其实也很简单,大体分为如下两步。
第一步: 点击pause program execution
,暂停app。(如下图)
第二步: 依次输入两条命令即可,分别如下:
第一条:
expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)
1 ps:/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib这个地址为绝对路径,我的Reveal是存放于application目录下的,所以路径就是/Applications/Reveal.app/.....
第二条
expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
两条命令顺利的话,控制台则会打印INFO: Reveal Server started (Protocol Version 25).
这条信息。(如下图)
ps:如果最后未能正常输出INFO: Reveal Server started
,那你就要好好检查一下第一条命令里的dlopen里包含的路径是否正确了。
最后,你在点击continue
按钮或者在控制台里继续输入c
字符然后回车,让程序结束暂停即可。
现在,你在打开你的Reveal
,在你的左上角点击No Connection
,瞅瞅,是否有你的app啦。接下来你就好好的享受Reveal带给你的快感吧。。。
.lldbinit里设置别名
但是,这还没有结束尼。每次需要Reveal来审查UI的时候都要输入这两条看着如此蛋疼的命令。这,不是要我老命嘛? so... 幸运的是我们可以在~/
目录下的.lldbinit
文件里为我们的LLDB
命令添加别名。
首先,简单科普一下吧。.lldbinit
是一个隐藏文件,貌似默认是没有的。而Xcode
每次启动的时候,则都会去~/.lldbinit
这个目录寻找这个文件里的LLDB
命令。所以我们可以在这个文件里进行一些命令的初始化设置或者设置别名等等(本篇不做这方面介绍)。
现在,我们打开终端,在终端里输入touch ~/.lldbinit
命令来进行创建。然后在输入open ~/.lldbinit
命令。则就会以文本编辑器打开此文件。然后再把如下字符复制到文本编辑器里即可:
1 command alias bd_reveal_sim expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0); 2 command alias bd_reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
command alias 其格式为:command alias 别名 LLDB命令,因此如上bd_reveal_start和bd_reveal_sim就是我设置的别名。你们也可以替换成你们自己喜欢的名字
破解
由于Reveal是收费的,所以我们得要用点手段才行。正所谓上有政策下有对策嘛。其实也很简单,直接把~/Library/Preferences/com.ittybittyapps.Reveal.plist
这个路径下的这个文件给干掉,然后在重启一下电脑即可。但这并不是完全破解,而是一直循环30天试用。等30天试用完了,在把这个文件干掉,然后在重启电脑即可。当然~/Library/Preferences/
这个目录下的文件较多,现在你打开你的终端,然后输入rm ~/Library/Preferences/com.ittybittyapps.Reveal.plist
这条命令即可删除。然后继续重启你的电脑吧。这个破解方法简单粗暴也实用.