您的位置:首页 > 产品设计 > UI/UE

UI调试神器 for ios:Reveal的使用与破解

2016-07-11 21:08 656 查看


UI调试神器 for ios:Reveal的使用与破解

字数1593 阅读2704 评论35 喜欢64



镇楼图

移动开发这一块做的最多的无疑就是UI和交互,而UI调试也是移动开发人员经常干的一苦逼事。虽然目前iOS开发工具Xcode集成了UI调试功能(Debug View Hierarchy),但带给我们的却只有失望。接下来就如标题所见,笔者来简单介绍和使用Reveal,因为这东西使用起来并不难,所以着重讲解怎么集成到工程里。但是...这个工具是收费的,不过还好我们在天朝(你懂得,暴力破解)。


简单介绍

Reveal的使用其实真的很简单,就如第一张镇楼图的效果一样。中间是3D可视化当前APP页面的视图,左侧则是这些UI元素和层次结构,而右侧则是View的属性,你可以修改View的颜色、frame等等,并且效果还是及时渲染到模拟器上的。当你真正使用的时候一眼就能看懂。而关于Reveal的下载就去Google一下就搞定了。至于没翻墙的童鞋则随意百度就行。


集成

把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。(如下图)



暂停app的效果图

第二步: 依次输入两条命令即可,分别如下:

第一条:
expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)


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
命令。则就会以文本编辑器打开此文件。然后再把如下字符复制到文本编辑器里即可:
command alias zxp_reveal_load_sim expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)

command alias zxp_reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];


command alias 其格式为:command alias 别名 LLDB命令,因此如上
zxp_reveal_start
zxp_reveal_load_sim
就是我设置的别名。你们也可以替换成你们自己喜欢的名字

然后,现在在按照如上LLDB集成的步骤,运行项目,暂停app,这时候你在输入
zxp_reveal_load_sim
然后在输入
zxp_reveal_start
即可在Reveal里审查你的UI元素了。(如下图)



自定义LLDB命令使用的效果图


破解

由于Reveal是收费的,所以我们得要用点手段才行。正所谓上有政策下有对策嘛。其实也很简单,直接把
~/Library/Preferences/com.ittybittyapps.Reveal.plist
这个路径下的这个文件给干掉,然后在重启一下电脑即可。但这并不是完全破解,而是一直循环30天试用。等30天试用完了,在把这个文件干掉,然后在重启电脑即可。当然
~/Library/Preferences/
这个目录下的文件较多,现在你打开你的终端,然后输入
rm
~/Library/Preferences/com.ittybittyapps.Reveal.plist
这条命令即可删除。然后继续重启你的电脑吧。这个破解方法简单粗暴也实用,如果童鞋们有其他更好的方法或者有完全破解不需要循环30天的方法,还望多指点我。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: