UI调试神器 for ios:Reveal的使用与破解
来源:互联网 发布:网络舆情队伍建设 编辑:程序博客网 时间:2024/06/11 17:06
UI调试神器 for ios:Reveal的使用与破解
移动开发这一块做的最多的无疑就是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。(如下图)
第二步: 依次输入两条命令即可,分别如下:
第一条:
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元素了。(如下图)
破解
由于Reveal是收费的,所以我们得要用点手段才行。正所谓上有政策下有对策嘛。其实也很简单,直接把~/Library/Preferences/com.ittybittyapps.Reveal.plist
这个路径下的这个文件给干掉,然后在重启一下电脑即可。但这并不是完全破解,而是一直循环30天试用。等30天试用完了,在把这个文件干掉,然后在重启电脑即可。当然~/Library/Preferences/
这个目录下的文件较多,现在你打开你的终端,然后输入rm ~/Library/Preferences/com.ittybittyapps.Reveal.plist
这条命令即可删除。然后继续重启你的电脑吧。这个破解方法简单粗暴也实用,如果童鞋们有其他更好的方法或者有完全破解不需要循环30天的方法,还望多指点我。
最后
由于本篇废话有点多,可能多少有点枯燥。总之就先忍忍吧,每天进步一点点,生活会更精彩一点。
- UI调试神器 for ios:Reveal的使用与破解
- UI调试神器 for ios:Reveal的使用与破解
- UI调试神器 for ios:Reveal的使用与破解
- iOS开发UI调试神器----Reveal
- 12.真机UI调试神器Reveal的使用
- iOS UI 调试工具Reveal破解方法
- Reveal破解版本 与XCODE UI 的使用
- Reveal 破解(分析iOS UI的利器)
- IOS UI调试reveal基本使用
- 使用Reveal调试UI
- Reveal调试UI工具的使用
- iOS-UI分析利器--Reveal安装破解以及简单使用
- UI 调试神器 injection for Xcode 的使用详解
- iOS之reveal调试UI
- iOS开发笔记 - 界面调试神器Reveal
- iOS开发UI调试利器Reveal简单使用
- Reveal---iOS项目UI调试工具使用教程
- iOS进阶之UI利器Reveal(1)--Reveal的下载,安装和破解
- pcl里面的RoPs特征(Rotational Projection Statistics)
- jQuery on()方法
- [算法练习]实现itoa,atoi
- NYOJ Cut the rope
- 写博客,从现在开始
- UI调试神器 for ios:Reveal的使用与破解
- jqGrid 学习笔记整理——进阶篇(二)
- js 声明变量
- WebViewJavascriptBridge详细使用
- Swift高阶函数map,filter,reduce实践
- 首试GPU并行运算
- 常用正则表达式
- MongoDB在Windows32bit(linux)下配置成自动开启的服务器注意事项
- Swift StateMachine源码分析