• Reveal:分析iOS UI该武器



    Reveal是分析iOS应用UI的利器:

    Reveal可以在执行时调试和改动iOS应用程序。它能连接到应用程序,并同意开发人员编辑各种用户界面參数。这反过来会马上反应在程序的UI上。就像用FireBug调试HTML页面一样。在不须要重写代码、又一次构建和又一次部署应用程序的情况下就行调试和改动iOS用户界面。--InfoQ

    Reveal执行在Mac上。眼下的最新版本号是1.0.4,能够从这里下载,要求Mac OS X 10.8及以上,iOS 6以及以上。

    如今正式版本号能够下载试用30天,试用期后须要购买。有须要的话能够买一个,功能相当强大。

    Reveal的功能

    查看iOS应用的View层次结构

    使用Reveal的效果如图: 

    图中最左側能够看到View的名称。中间是View的3D展示效果,能够很清楚的看到View的层次结构。

    改动參数后无需编译就可以看到效果

    Reveal还有一个很实用的功能就是动态改动參数,无需编辑动态查看效果。例如以下图所看到的:

    显示出UILabel和UIView的关键属性值,更重要的是,这些都能够动态改动。比方我们改成測试,例如以下图: 

    把当中的图片的宽度从80改成50。改之后的效果如图:

    下图箭头所指向的对方都能够动态改动。

    关于Reveal的很多其它功能,欢迎大家去探索并分享。

    以下介绍Reveal怎样集成到iOS应用中去调试。

    Reveal的3种载入方法

    载入方法(1)

    下载Reveal之后打开,在菜单中的Help中能够找到集成到Xcode项目的方法,这里不再赘述。

    载入方法(2)

    Integrating Reveal without modifying your Xcode project 
    reveal: 檢視 iOS app 的 view 結構。 
    给出了怎样不用改动Xcodeproject就能够载入使用Reveal的方法。

    在当前用户文件夹新建一个文件.lldbinit,位于~/.lldbinit。LLDB每次启动的时候都会载入这个文件。

    在.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];
    

    上述文件创建了4个命令:

    reveal_load_sim,reveal_load_dev, reveal_start 和 reveal_stop
    
    • reveal_load_sim 这个仅仅在iOS模拟器上有效。

      它从Reveal的应用程序bundle中找到并载入libReveal.dylib(请确保你把Reveal安装到了系统的Application目录,假设你换地方了。你改动上述的文件)。

    • reveal_load_dev 这个命令在iOS设备和模拟器上都有效。只是。它须要你在Build Phase中的的Copy Bundle Resources中加上libReveal.dylib。请确保没有放到Link Binary With Libraries这个地方

    • reveal_start 这个命令发出一个通知启动Reveal Server。

    • reveal_stop 这个命令发出一个通知停止Reveal Server。

    请注意:仅仅有在iOS应用发出了UIApplicationDidFinishLaunchingNotification通知之后。比方应用的delegate已经处理过application::didFinishLaunchingWithOptions:之后才干调用上面的reveal_load_*命令。然后再调用reveal_start

    在设备起来之后,你就能够断下应用。在LLDB提示框中输入上述的命令了。

    上述的过程还须要手动输入。以下介绍怎样设置条件断点,使得Reveal在启动之后自己主动载入。

    在你的应用的application:didFinishLaunchingWithOptions 中的代码出加一个断点,然后右键,选择编辑断点。

    输入例如以下图一样的命令:

    又一次执行下应用。假设控制台输出了例如以下信息:

     Reveal server started.
    

    说明Reveal已经自己主动成功载入。

    载入方法(3)

    Reveal查看随意app的高级技巧介绍了怎样在越狱设备上查看随意app的技巧:

    • iOS设备须要越狱,iOS6以上
    • 安装Reveal,越狱设备与安装Reveal的Mac在同一wifi内。
    • 点击菜单Help / Show Reveal Library in Finder。获取libReveal.dylib
    • 将libReveal.dylib上传到设备的/Library/MobileSubstrate/DynamicLibraries
    • 编辑并上传一个libReveal.plist。格式和/Library/MobileSubstrate/DynamicLibraries以下的其它plist类似,当中的filter的bundle写要查看的iOS App的bundle Id。 格式例如以下:

      { Filter = { Bundles = ( "你要查看的app的bundle Id" ); }; }

    • 重新启动iOS设备

    小结

    本文简要介绍了Reveal的功能和几种载入方法。

    欢迎大家去体验下Reveal的强大功能。最后,能够看看关于Reveal的tips:Reveal tips: Navigation

  • 相关阅读:
    Nodejs下载和第一个Nodejs示例
    永久关闭Win10工具栏的TaskbarSearch控件
    对称加密,非对称加密,散列算法,签名算法
    【转】TTL和RS232之间的详细对比
    zlg核心板linux系统中查看系统内存等使用信息
    Power BI后台自动刷新数据报错 The operation was throttled by Power BI Premium because there were too many datasets being processed concurrently.
    剪切板和上传文件内容获取
    CSS, LESS, SCSS, SASS总结
    文字程序
    electron 打包“ERR_ELECTRON_BUILDER_CANNOT_EXECUTE”
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4593269.html
Copyright © 2020-2023  润新知