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

原文地址:咖啡猪_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这条命令即可删除。然后继续重启你的电脑吧。这个破解方法简单粗暴也实用.

时间: 2024-08-26 21:40:26

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

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

做iOS的开发,UI是非常非常重要的一环.调试时我们一般用模拟器,提交前用真机做測试.用模拟器来调试UI效果尽管快捷方便,但有时仍然希望有更强大的工具来帮助分析UI,尤其是专注在UI的效果调试时.近期看到了Reveal这个工具,发现真的是强大无比,类似于FireFox上的FireBug,对于UI上的层的显示非常清晰直观,能够非常方便的用于UI的调试,用来学习UI的使用也是无上利器. 这个工具眼下已经出到正式版了,须要花费银子购买,好在还有30天的试用版本号能够下载尝尝鲜.(下载地址http://

iOS UI调试神器,插件injectionforxcode使用方法

项目越来越大,代码编译时间越来越长,你是不是早已经厌倦了改一点点UI布局就要重新编译一次项目的过程,我们一分钟几百万上下的,怎能被编译浪费掉珍贵的时间.使用injectionforxcode这款插件,提高我们编程时的效率. 先上插件的GitHub地址:injectionforxcodeGitHub地址 官方演示 看看强大的效果,即写即看到效果: 安装 我们可以通过Alcatraz来安装,如果安装成功没有找到多出来的两个选项,我们通过下载插件-->打开工程,编译后,重启Xcode. 再次打开Xco

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

原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=list 我的stackoverflow 工欲善其事,必先利其器,强烈建议新手同学好好研究下XCode这个工具.比如Build Settings,Build Info Rules,Build Parse, Edit Scheme- 前言:这个Swift调试系列分为四篇 图形化界面调试 LLDB常用命令 LLDB进阶使用 Zombie等其他调试 2015.12月和2016.1月主要更新iO

Android UI 调试常用工具(Dump view UI hierarchy for Automator)

UI调试时程序员比较头疼的问题:有时候经常会被1dp.2dp的问题,搞得无言以对(Android开发深有体会) 下面介绍一个在实际开发过程中常用的一个调试工具,可以精确到每个View在屏幕中的绝对位置(精确到具体的px),有了这样的工具,就可以很好地找到UI中存在的问题了. 其实就是在DDMS视图下,使用Dump view UI hierarchy for Automator: 找到它也很简单的 1.Android studio(大家用了都说好 ),点击上面的小机器人 2.选择DDMS视图,找到

【转】段错误调试神器 - Core Dump详解

from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联网 作者:Alex 时间:2013-07-08 Tag:Linux   点击: 11670 一.前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得困难起来

Android UI之自定义——类似iOS的Tabbar

Android UI之自定义--类似iOS的Tabbar Tabbar最早出现在iOS,iOS中的TabBarController实现了这个功能,开发起来相当简单.现在的APP,大多数都会使用Tabbar来作为应用的功能导航,界面简单清晰.那么Android常见的实现是通过RadioGroup来实现,今天将带来自定义实现,补充RadioGroup实现的不足. 先看看常见的软件中的使用: 这个是高铁管家APP,大家应该非常熟悉.这个APP的首页底部就是一个类似iOS的Tabbar.这里就不多举例子

内核调试神器SystemTap — 简介与使用(一)

a linux trace/probe tool. 官网:https://sourceware.org/systemtap/ 简介 SystemTap是我目前所知的最强大的内核调试工具,有些家伙甚至说它无所不能:) (1) 发展历程 Debuted in 2005 in Red Hat Enterprise Linux 4 Update 2 as a technology preview. After four years in development, System 1.0 was relea

内核调试神器SystemTap — 更多功能与原理(三)

a linux trace/probe tool. 官网:https://sourceware.org/systemtap/ 用户空间 SystemTap探测用户空间程序需要utrace的支持,3.5以上的内核版本默认支持. 对于3.5以下的内核版本,需要自己打相关补丁. 更多信息:http://sourceware.org/systemtap/wiki/utrace 需要: debugging information for the named program utrace support i

内核调试神器SystemTap — 探测点与语法(二)

a linux trace/probe tool. 官网:https://sourceware.org/systemtap/ 探测点 SystemTap脚本主要是由探测点和探测点处理函数组成的,来看下都有哪些探测点可用. The essential idea behind a systemtap script is to name events, and to give them handlers. Systemtap works by translating the script to C,