• 项目总结(五)--- 界面调试工具Reveal


      在开发中,我们也许会碰到以下需求:对于一些动态复杂的交互界面,手码去制定界面是常有的事情,然而我们在开发中想修改过一些参数后想看下实时效果,只能重新运行项目,进入到对应的页面来进行修改,是不是有点麻烦呢? 还有,作为屌丝程序猿想脱离屌丝行列,不断学习先进的东东是必不可少的,那么,如果看到别的大公司开发的优秀APP,想借鉴学习下,又该怎么入手呢?这时,Reveal会帮助我们。

      1、Reveal的下载

        进入到官网(http://revealapp.com/)后 

        

        下载就可以(注意下载后默认保存的是在“下载”下面,手动移动到“应用程序”下面,方便下面使用时的一些操作)。

      2、界面认识

        

      3、Reveal的使用

        1》连接到模拟器调试

          连接到模拟器调试有好几种方法,有的是必须修改功能文件(缺点显而易见,协作开发时得要求别人也安装这玩意),有的是断点后在LLDB输入命令等等。在这就简单记录下最方便简单地一种方式,步骤如下:

          (1)在当前用户目录下,建立.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];

          (2)在项目代理中的application:didFinishLaunchingWithOptions:方法中,进行以下几步,

            第一:添加一个断点,并右击编辑

            第二:单击“Action”右边的“+”,输入“reveal_load_sim”

            第三:勾选上“Option” 上的选项 “Automatically continue after evaluating”,如图:

            

        然后运行APP在模拟器,打开Reveal就可以看到左上角有个连接调试。到此就可以尽情享受你的成果了。

      2》连接到真机调试

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

        (2)注意Xcode默认是将其设置到“Link Binary With Libraries”中,需要删除它,并添加到 “Copy Bundle Resources”下面;

        (3)下面步骤与上面类似,只需要将断点中得Action 改为 reveal_load_dev 就可以了。

      3》使用此工具调试其他应用界面

        (1)要求手机必须越狱,至于越狱教程,去其他地方搜吧,好多

        (2)将Reveal 的动态链接库上传到iOS设备目录 /Library/MobileSubstrate/DynamicLibraries (这里存放着所有在系统启动时就需要加载的动态链接库)中即可。(上传方法;可以安装OpenSSH后,用scp来上传)

        (3)同时编辑并上传一个libReveal.plist,格式如下:

          {

            Filter={

                Bundles = ("需要分析的BundleID 1","需要分析的BundleID 2" …);

            };

          }

        这样可以监控指定的APP,不上传这个文件也可以,那样就可以监控所有的APP,速度慢点而已。

        注意:如果libReveal.dylib没有执行权限,可以使用 chmod+x libReveal.dylib命令来增加权限后,执行 killall SpringBoard重启桌面。

      当然,类似的软件还有PonyDebugger, Spark Inspector来进行调试。

  • 相关阅读:
    区间dp体会
    P1083借教室 noip提高组复赛2012
    P2678跳石头体会 noip2015提高组
    tarjan求LCA的体会
    P1006 传纸条
    P1140 相似基因 详解
    UVA1025 城市里的间谍 A Spy in the Metro 题解
    DAG上的动规嵌套矩形问题(含思考题)
    洛谷P1030c++递归求解先序排列
    Test 2019.7.22
  • 原文地址:https://www.cnblogs.com/dashunzi/p/4255235.html
Copyright © 2020-2023  润新知