移动开发这一块做的最多的无疑就是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_startzxp_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天的方法,还望多指点我。

分析iOS UI的利器Reveal安装破解教程

字数371 阅读7836 评论40 喜欢75

在网上有很多类似的教程.. 但是基本都是你拷贝我,我拷贝你. 根本就不能真正的让这个软件运行. 让我无比蛋疼.

想要使用这个神器,可以先在官网revealapp.com下载正式版本 接下要搞很牛逼的一步了,破解Reveal1.5.x通杀破解.zip_免费高速下载  有什么问题可以留言(最近升级1.6.X的小伙伴,这破解方法依然有效哦)

接下来 进入真正使用环节

(1). 使用Xcode 打开想要查看UI的程序.

(2).打开破解好的Reveal  点击Help → Show Reveal Library in Finder

第一步

(3).将Reveal.framework 拖入打开的Xcode工程.并点击完成

拖进工程

(4). 按箭头步骤点击Build Phases  然后从Link Binary With Libraries 删除Reveal.framework

按步骤操作

(5).然后选中Build Settings 在搜索栏中输入 Other Linker Flags

选中Other Linker Flags

在Other Linker Flags中输入下面代码

-ObjC -lz -framework Reveal

(6).按步骤 完成上边操作后 command + R  运行Xcode程序.

(7).然后 点击Reveal 程序 点击No Connection连接模拟器

连接模拟器

(8).成功

ui结构

注意: 这里需要说明一下 运行模拟器,真机都可以. 不过要是使用真机 需要真机在同一个网络环境下.

按照步骤操作,运行应该没有问题,如果遇到问题,可以留言, 我尽力解决.

UI调试神器 for ios:Reveal的使用与破解相关推荐

  1. iOS开发UI调试神器----Reveal

    做iOS的开发,UI是非常非常重要的一环.调试时我们一般用模拟器,提交前用真机做測试.用模拟器来调试UI效果尽管快捷方便,但有时仍然希望有更强大的工具来帮助分析UI,尤其是专注在UI的效果调试时.近期 ...

  2. iOS开发笔记 - 界面调试神器Reveal

    http://blog.csdn.net/jackfrued/article/details/50934092 Reveal是iOS开发工具中的神器之一,它能够在应用程序运行过程中调试应用程序界面. ...

  3. Swift 代码调试-善用XCode工具(UI调试,五种断点,预览UIImage...)

    原创Blog,转载请注明出处   http://blog.csdn.net/hello_hwc?viewmode=list  我的stackoverflow 工欲善其事,必先利其器,强烈建议新手同学好 ...

  4. web移动端调试神器Eruda

    在Web开发过程中,对html页面进行开发和调试的时候都会用到浏览器提供的调试工具,小编我最常用的就是Chrome浏览器自带的开发者工具了,可以很方便的对JS代码进行断点调试,log也很方便.但是在移 ...

  5. html5页面调试工具,web移动端调试神器Eruda

    在Web开发过程中,对html页面进行开发和调试的时候都会用到浏览器提供的调试工具,小编我最常用的就是Chrome浏览器自带的开发者工具了,可以很方便的对JS代码进行断点调试,log也很方便.但是在移 ...

  6. Xamarin.iOS调试提示需要iOS SDK

    Xamarin.iOS调试提示需要iOS SDK 错误信息:The version of Xamarin.iOS requires th iOS 9.3 SDK (shipped with Xcode ...

  7. 在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试

    在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 版权声明:本作品采用知识共享署名-非商业性 ...

  8. python 如何边改代码边调试_Python 代码调试神器:PySnooper

    给大家推荐本我自己写的电子书<PyCharm中文指南>,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来.有兴趣的可以看它的在线文档: http://pycharm.i ...

  9. json.tojsonstring 导致cpu飙高_阿里调试神器立功了!进程导致Kubernetes节点CPU飙高的排查与解决...

    来源:https://www.cnblogs.com/maxzhang1985/p/12673160.html 一.发现问题 在一次系统上线后,我们发现某几个节点在长时间运行后会出现CPU持续飙升的问 ...

最新文章

  1. Linux 开机网络无法自动连接配置、网络开机自动连接
  2. js 调 CDHtmlDialog API
  3. opengl加载显示3D模型SIB类型文件
  4. 软件工程课堂作业——寻找“水王”
  5. 【渝粤教育】国家开放大学2018年春季 0269-21T文学概论 参考试题
  6. Maven依赖的是本地工程还是仓库jar包?
  7. python中用于标识字符串的定界符_001.python-基础-Template的字符串格式化
  8. 好难啊……一个 try-catch 问出这么多花样
  9. (王道408考研操作系统)第四章文件管理-第一节1:文件管理初识
  10. can总线报文是固定的吗_CAN总线传输协议
  11. Vue三大核心之三(插槽)
  12. 端到端测试哪家强?不容错过的Cypress
  13. 高度固定 宽度裁剪_ffmpeg 视频裁剪
  14. HEXO Nunjucks Error
  15. linux pppoe 共享上网,Linux操作系统下如何PPPOE拨号共享上网?
  16. 自动驾驶高精地图-概述与分析
  17. CPU+GPU异构集群搭建的总结说明
  18. Python3.7入门什么Bug?Bug最基本的调试Debug
  19. LC3环境下的汇编语言程序调试攻略
  20. 使用f031的SPI单引脚(MOSI)+DMA实现WS2812B三色灯的级联控制

热门文章

  1. 科研经验2:云协作建立实验室工作总结和内部资料共享平台
  2. numpy使用[]语法索引二维numpy数组中指定指定列之后所有数据列的数值内容(accessing columns in numpy array after specifc column)
  3. 预测概率是什么?ROC曲线是什么?PR曲线是什么?ROC曲线和PR曲线使用场景差异?
  4. python使用imbalanced-learn的InstanceHardnessThreshold方法进行下采样处理数据不平衡问题
  5. python使用imbalanced-learn的RandomOverSampler方法进行上采样处理数据不平衡问题
  6. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二)
  7. R语言数据类型:Logical、Numeric、Integer、Complex、Character、Vectors、Lists、Matrices、Arrays、Factors、DataFrames
  8. sklearn MLP(多层感知机、Multi-layer Perceptron)模型使用RandomSearchCV获取最优参数及可视化
  9. js 操作vuex数据_Vuex 数据状态持久化如何处理?
  10. mysql text index_MySQL 全文索引(fulltext index)