
做iOS的开发,UI是非常非常重要的一环。调试时我们一般用模拟器,提交前用真机做测试。用模拟器来调试UI效果虽然快捷方便,但有时仍然希望有更强大的工具来帮助分析UI,尤其是专注在UI的效果调试时。最近看到了Reveal这个工具,发现真的是强大无比,类似于FireFox上的FireBug,对于UI上的层的显示很清晰直观,可以很方便的用于UI的调试,用来学习UI的使用也是无上利器。
【Reveal软件说明】
要调试iOS应用,开发者要将应用程序与Reveal安装的框架层关联。Reveal会扫描其网络中关联的应用程序,并让开发者选择连接其中之一,当连接到一个应用程序后,Reveal将显示其UI,其中包括大量的参数和设置。开发人员现在可以检查UI或者更改设置,直到用户界面的外观和行为达到预期目标。目前它尚不支持布局约束,但根据Reveal的支持文档来看,这一功能将在未来的版本中发布。Reveal可以和iOS模拟器一起使用,也可以用在运行在真机上的应用程序上。另外,Reveal的安装只需几分钟。除了解析出UI参数外,Reveal也会通过一个分解的3D视图显示复杂的UI层次结构。开发者可以轻松的检查UI组件的分层,并在其层次结构中选择特定元素。为了进一步简化调试,也可以仅关注部分UI,而把其余部分屏蔽起来。
【Reveal安装教程】
安装Reveal不算复杂,要把Reveal用到工程中则需要把framework或者dylib编入。
1. 打开Xcode工程
2. 打开Revel工具,选择Menu->Help->Show Reveal Library in Finder,这样就会打开RevealApp里面带的库
3. 把Reveal.framework加入工程,在弹出框中选中Copy items into destination group’s folder (if needed).
4.在工程设置中,在Other Linker Flags项增加-ObjC -framework Reveal
如果你使用的还是Xcode4,那么还需要增加-frame CFNetwork -frame QuartzCore -framework CoreGraphics
5. 运行你的应用,应用可以是在模拟器上,也可以在真机上,不过必须保证Reveal和你的设备在同一个网络里面,然后选择Reveal里面的链接目标,连上应用后UI就会显示出来,每个层次,每个元素都可以显示,而且可以选中了看到数据。
我这里做的说明是把Reveal作为静态库链接到应用中的,也可以作为动态库来载入,当然,设置略微有点不同,需要在AppDelegate.m文件中增加载入和移除的代码。
【查看任意app的高级技巧】
Reveal是一个很强大的UI分析工具,与其他几个功能相近的工具(比如PonyDebugger)相比,其最大的特点就是非常直观,用来查看app的UI布局非常方便。其常规用法是将framework集成至Xcode工程中,可参见Reveal的官网,但我们这次讲述的却是非常规用法。
在12/21的#阿里技术嘉年华#上,我给听众展示了使用Reveal查看任意app的效果,估计是当时所展示的工具中最亮眼的一个。既然如此,我就提前在这里把Reveal的这个技巧详细的列出来。
1、越狱设备,iPhone/iTouch/iPad都可以,iOS6以上(惊闻iOS7也已经越狱了);
2、安装Reveal,Trail或正式版都可以,然后越狱设备与安装Reveal的Mac在同一wifi内。
3、点击菜单Help / Show Reveal Library in Finder,获取libReveal.dylib
4、将libReveal.dylib上传到设备的/Library/MobileSubstrate/DynamicLibraries
5、同时编辑并上传一个libReveal.plist,格式如下:
注意,此时是可以指定多个BundleID的,也就是说,你可以同时监控任意多的app;再扩大一步说,如果你愿意,不上传这个libReveal.plist,你可以监控所有app,只要你不觉得机器很慢。。。
6、re-spring或重启iOS设备,打开你想看的app,再从Reveal界面左上角选择要连接的机器,进入不同的页面之后还可以点击右上角的刷新钮来刷新监测的页面信息。
以上是不写一行代码就能够查看任意app的方法,各位看别人app爽的时候,也可以摸摸脖子想想自己的app。
这种“高级技巧”从来没有被Reveal官方提起过,而是我们接触到Reveal之后逐步发现的。一开始的方法比较粗暴,是直接hook想看的app,把libReveal.dylib插进去;后来经过@卢明华 的进一步探索,才总结出这个更简单粗暴的方法。
虽然Reveal是最直观的一个工具,但是在iOS逆向这个领域,它占的比重连1/10都不到,真正的大块头都有点难啃,相信各位都是理解的。
最后,相信我们的书出来之后,会给朋友们更多深度撞击的感觉。