然后输入,大家不但可以在运维时见到iOS程序的界面层级关系

近年来在唐巧哥的微信看到Reveal中国大降价,一贯听大人说这一个软件很霸气,然则对盗版软件的采取很力不从心,所以在此之前没有用过,果断买下了。

买了后,发现不会布置,看的唐哥的《iOS开发进阶》讲很也不细,像本人如此的小白,连vim都不熟习,还是可以懂怎么保存?!?!

正文为工具类作品,参考至唐巧的博客


Reveal公共配置


Reveal是1个界面调试工具。使用Reveal,我们得以在iOS开发时动态地查看和改动应用程序的界面。它好像Chrome的“审查成分”作用,我们不仅可以在运营时见到iOS程序的界面层级关系,还足以实时地修改程序界面,不用再行运营程序就足以观望修改之后的成效。

(1)在此时此刻用户目录下,打开终端中新建二个.lldbinit文本,位置是~/.lldbinit。

命令是: vim ~/.lldbinit
接下来粘贴下边代码:

command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);

command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);

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

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

按一下esc键,然后输入:wq
下一场就保存了成就布置的首要一步啦,可以关闭终端了。

一 、模拟器调试

  • vim ~/.lldbinit
  • 在 lldbinit 中输入以下内容:

command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStop" object:nil];
  • 含义:
    • 1、reveal_load_sim 为模拟器加载 reveal 调试用的动态链接库
    • 2、reveal_load_dev 为真迹加载 reveal 调试用的动态链接库
    • 3、reveal_start 运营 reveal 调试功效
    • 4、reveal_stop 截至调试效用
  • 在 AppDelegate 中, didFinishLaunchingWithOptions:中展开如下操作,
    • 添加壹个断点,并右键点击-> 艾德it Breakpoint
    • 单击 Action 右边的+ 按钮,输入 reveal_load_sim
    • 勾选 Options 上的 Automatically continue after evaluating 选项
      打开 Reveal 就 ok 拉。
      附送效果图:
    ![](https://upload-images.jianshu.io/upload_images/266345-749ebb3ebc94648f.png)

    屏幕快照 2015-12-06 下午11.14.16.png

配置Reveal:

连日来到模拟器调试

在项目代理中的application:didFinishLaunchingWithOptions:方法中,进行以下几步,
首先:添加叁个断点,并右击编辑
第二:单击“Action”右边的“+”,输入“reveal_load_sim”
其三:勾选上“Option” 上的选项 “Automatically continue after evaluating”,

甭管一行中打断点

然后运转APP在模拟器,打开Reveal就足以看来左上角有个一连调试。

② 、真机调试

  • Help-> Show Reveal library in Finder,
    然后将包拖入工程,那里,Xcode
    会将包放错地点,所以我们须求手动调整一下,将包从 Link Binary With
    Libraries 中除去,添加到 Copy Bundle Resources 上面。
![](https://upload-images.jianshu.io/upload_images/266345-43802f367942983b.png)

屏幕快照 2015-12-06 下午11.17.05.png

-   从这里删除



    ![](https://upload-images.jianshu.io/upload_images/266345-51a028c7737c4e54.png)

    屏幕快照 2015-12-06 下午11.19.34.png

-   在这里加上



    ![](https://upload-images.jianshu.io/upload_images/266345-6e1d1d0e9b2e64d4.png)

    屏幕快照 2015-12-06 下午11.19.43.png

-   最后别忘修改断点信息:将 reveal\_load\_sim 改成
    reveal\_load\_dev 即可。

① 、配置方式一(须求修改工程文件)

一而再到真机调试

(1)添加Reveal链接动态库到大家工程:在Reveal菜单“Help”->”Show Reveal
Library in Finder” 找到动态库后拖拽到工程中;

把那二个文本平昔拉到下边

成功拉到库中

(2)注意Xcode暗中同意是将其安装到“Link Binary With
Libraries”中,须求删除它,并添加到 “Copy Bundle Resources”下边;

原先职位

选中上边的libReveal.dylib,直接拽拉到下边

(3)选中 Build Settings栏找到Linking下面的Other Linker Flags setting:

日前接纳为空

 -ObjC -lz -framework Reveal

添加` -ObjC -lz -framework Reveal`到里面

(4)在档次代理中的application:didFinishLaunchingWithOptions:方法中,进行以下几步,
先是:添加三个断点,并右击编辑
第二:单击“Action”右边的“+”,输入“reveal_load_dev”
其三:勾选上“Option” 上的选项 “Automatically continue after evaluating”,

扩展断点

按command+大切诺基编译项目,在Reveal中得以见到:

花色当前界面的社团十分明显了

(1)启动Reveal,选择Reveal -> Help -> Show Reveal Library in Finder
-> iOS Library。

末段证实

出于尚未越狱的电话,所以并未伸张越狱的布署。
本文也不曾切磋陈设和原理的底细,简主也不懂!请自行脑补!
其余细节,如有错误,欢迎一起谈谈!

图片 1

(2)在Xcode中开拓iOS项目,将Reveal.framework拖到项目中,即使升级了Reveal,对应的Reveal.framework文件也要翻新到对应的本子。

图片 2

(3)拔取Target -> Build Phases -> Link Binary With
Libraries将Reveal.framework移除。经测试本步骤不是必须的

图片 3

(4)在Xcode的Target -> Build Setting -> Other Linker
Flags添加如下多少个布局项

-ObjC -lz -framework Reveal

图片 4

(5)运维品种,然后打开Reveal的界面,在左上角选取总是的装备

图片 5

然后就足以看来实际的运作效果

图片 6

贰 、配置格局二(指出利用)

Reveal官方介绍了少数种办法使Reveal连接模拟器,都亟需修改工程文件。但借使改动了工程文件,就要求参预项目支付的全数人都装有Reveal,上面介绍一种比较便宜的方法来集成Reveal,步骤如下:

率先打开Terminal,输入vim
~/.lldbinit创制八个名为.lldbinit的文书,然后将如下内容输入到该文件中:

command alias reveal_load_sim expr
(void*)dlopen(“/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib”,
0x2);

command alias reveal_load_dev expr
(void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle]   
          pathForResource:@”libReveal” ofType:@”dylib”]
cStringUsingEncoding:0    x4], 0x2);

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

command alias reveal_stop expr
(void)[(NSNotificationCenter*)[NSNotificationCenter
defaultCenter]           
postNotificationName:@”IBARevealRequestStop” object:nil];

该步骤其实是为lldb设置了六个别名,为了继承方便操作,这六个别名意义如下:

reveal_load_sim 为模拟器加载reveal调试用的动态链接库

reveal_load_dev 为真机加载reveal调试用的动态链接库

reveal_start 运营reveal调试功用

reveal_stop 为止reveal调试作用

(1)Reveal连接模拟器

在AppDelegate类的application:didFinishLaunchingWithOptions:方法中,做如下3步操作(如下图所示):

图片 7

1)点击该方式右边的行号区域,伸张二个断点,之后右击该断点,选取“艾德it
Breakpoint”。

2)点击”Action”项边右的”Add Action”,然后输入“reveal_load_sim”

3)勾选上Options上的”Automatically continue after evaluating”选项。

(2)Reveal连接真机

要用Reveal连接真机调试,我们须要先把Reveal的动态链接库上传到真机上。由于iOS设备有沙盒存在,所以大家只好将Reveal的动态链接库添加到工程中。

1)点击Reveal菜单栏的”Help”->”Show Reveal Library in
Finder”选项,可以在Finder中显得出Reveal的动态链接库:libReveal.dylib

图片 8

2)调整libReveal.dylib的引用格局,那里我们只必要将libReveal.dylib文件拷贝到Sandbox中,然则大家在引入libReveal.dylib的时候Xcode默许是以Link
Binary With Libraries的法门的,实际上应该是Copy Bundle
Resources,所以理应先将libReveal.dylib从Link Binary With
Libraries中移除掉,然后在Copy Bundle Resources中丰盛。

3)根据在此以前处理模拟器的办法,将AppDelegate类中的断点Action改成reveal_load_dev.

图片 9

启航后在控制台会合世如下内容:

图片 10

于今,Reveal成功集成至Xcode中,可以开展UI调试了。

相关文章