Reveal调试界面

1.简介

1.1.场景

  • 场景1

我们在模拟器或真机上调试自家应用时,一般的过程可能是:

修改界面元素 → 编译运行 → 效果不满意继续修改 → 编译运行

当某些效果需要反复调试时,很多时间会浪费在编译运行阶段,尤其是当你的应用比较复杂时。

解决这个痛点有多种方式,如使用RNFlutter等框架,它们都支持实时渲染,不过这些都涉及到成本的取舍。

  • 场景2

有时我们需要研究某些第三方应用的界面布局,如做竞品分析或者学习优秀应用的设计,可问题在于我们有拿不到这些应用的源码,挠头~

解决这个痛点时,我所知道的是可以通过砸壳+反编译来获取这些应用的伪代码,修改后重新签名打包看效果。但伪代码可读性差,非所见即所得,也不能实时调试。


要解决上面两种场景下的界面调试问题,更便捷的Reveal就派上用场了~

reveal

1.2.描述

下面是摘自官网的描述:

Reveal brings powerful runtime view debugging to iOS developers. With advanced visualisations, comprehensive inspectors and the ability to modify applications on the fly, you’ll be debugging view layout and rendering problems in seconds.

Reveal是一款面向iOS开发者的视图调试工具。它具有可视化、综合检视、可修改、实时显示结果的特点。

1.3.作用

  • 3D展示应用中的视图及其层级关系;
  • 支持检视图层layer;
  • 支持检视手势Gesture Recognizers、修改其行为;
  • 支持检视自动布局Auto Layout信息;

1.4.对象

  • Xcode编译出的、在模拟器上运行的自家测试版应用;
  • 真机上运行的第三方或自家的商店版应用;

2.安装

Reveal是一款收费应用,个人版售价$59,商业版$119,企业版另议,有能力的话还是支持一下正版吧。网上有破解版仅供学习使用,这里就不放传送门了。另外你需要一台越狱后的设备以便调试第三方应用。你也可以直接在模拟器上调试,不过只能调试自家应用。不论是调试三方应用还是自家应用,你都需要集成reveal的库文件,只是两者的集成方式稍有不同。

3.集成

3.1.自家应用

要调试自家应用,除了在MAC上安装Reveal外,你还需要在自己的工程中集成reveal库:

We maintain a CocoaPods Podspec for integrating Reveal into your Xcode projects.

  • 修改Podfile:
1
2
3
target 'YourMainAppTargetName' do
pod 'Reveal-SDK', :configurations => ['Debug']
end
  • 导入RevealServer.framework
1
pod install
  • 编译运行,模拟器中应用跑起来之后,Reveal界面中会自动显示该应用。具体的效果如下:

reveal_cocoapods_server

  • 愉快的调试吧(界面是不是很眼熟?)

reveal_debug_views

WARNING: Never ship a product which has been linked with the Reveal Server framework. The Podfile example below will only link the Reveal Server framework into builds of your app compiled using the “Debug” configuration.

注意!!来自官方的警告:不要将集成了Reveal Server framework的应用提交到商店!!!

3.2.第三方应用

  • MAC上启动Reveal → Help → Show Reveal Library in Finder → iOS-Libraries:

REVEAL

  • 选择RevealServer.framework静态库:

revealserver_framework

  • 终端中通过scp命令,拷贝库到设备的/Library/Frameworks/目录下:
1
2
// 这个IP地址是手机所在WiFi的IP地址
scp -r RevealServer.framework root@192.168.xx.xxx:/Library/Frameworks/
  • 重启SpringBoard,以便让导入的 RevealServer 库生效:
1
2
3
4
5
6
//手机/设备所在WiFi的IP地址
$ ssh root@192.168.31.xx
// 输入root用户的密码,默认值alphine,修改过的话自行输入
root@192.168.31.xx's password:
//重启springboard
Hes-iPhone:~ root# killall SpringBoard
  • 越狱手机上,在Cydia商店中搜索并安装Reveal2Loader:
    reveal_tweek_1

  • 手机设置中找到reveal:
    reveal_tweek_2

  • 设置需要调试的应用,打开对应的开关即可:
    reveal_tweek_3

  • 设备上启动要调试的应用,MAC上的Reveal能自动检测到此待调试的应用:
    reveal_baidu

  • 点击待调试的应用即可进入调试界面:
    reveal_baidu_debug

  • 接下来就可以愉快的调试了~

4.注意事项

Reveal支持 USB 和 WiFi 两种连接模式,如果在自己的设备上调试第三方应用,你需要确保手机通过数据线连接到MAC上,或者让手机与MAC处于同一WiFi环境中。

不要将集成了Reveal Server framework的应用提交到商店!!


相关参考:

#©reveal的三种集成方式

#©reveal的集成

#©越狱设备调试第三方应用


Reveal调试界面
https://davidlii.cn/2019/04/01/reveal.html
作者
Davidli
发布于
2019年4月1日
许可协议