zoukankan      html  css  js  c++  java
  • 最新Reveal安装与使用,可以查看任意AppUI布局。

      最近在看iOS逆向的资料,发现了调试UI的工具--Reveal,发现这在实际开发中也是很有用处。当我们需要参照其他App界面布局的时候,使用这个工具可以看他的布局情况。不过这需要手机越狱才行。如果没有越狱的话,只能调试自己的App,有同学会说,如果是自己的App,那我用自带就够了,其实Reveal有个比Xcode自带的更有用的功能。Reveal提供一个可以即时改布局属性的功能,即我不需要修改代码,再重启App来查看。只需要在右边约束直接修改数值,回车一下,就能看到相关的布局了,类似于前端通过浏览器修改界面,个人觉得非常的方便。

      安装与使用Reveal的主要步骤:

    1. 安装Reveal软件。
    2. 导入RevealServer.framework到项目的根目录。(记得打包前移除,RevealServer.framework在Reveal应用的Help-->Show Reveal Library in Finder-->iOS Library中获取,如果是调试自己的App,到这一步就可以了)。
    3. 将libReveal.dylib和libReveal.plist移到iOS设备的目录/Library/MobileSubstrate/DynamicLibraries。

      1. 安装Reveal软件:

        https://blog.csdn.net/Crazy_SunShine/article/details/78843023 这位博主大大提供了破解版。里边也有其他几种方式使用Reveal,这里就记录使用过的最简单的方式。

      2. 导入RevealServer.framework到项目的根目录: 

        RevealServer.framework在Reveal应用的Help-->Show Reveal Library in Finder-->iOS Library中获取。取到后,拖进项目的根目录。然后在TARGETS中添加RevealServer.framework。

      

        到这一步后,运行项目,打开Reveal,即可看到对应的项目。

        随便选择一个即可看到对应的层级结构。到这一步就能调试自己的App了。

      3. 查看其它任意App的布局:

        这一步需要越狱的手机,越狱的方法很多,PP助手、爱思助手都可以。越狱后在Cydia中安装三个重要的插件:Cydia Substrate、OpenSSH、Reveal Loader。

        安装好对应的插件后,开始准备工作:

      1. 将libReveal.dylib和libReveal.plist移到iOS设备的目录/Library/MobileSubstrate/DynamicLibraries。新版的Reveal没有libReveal.dylib。需要将RevealServer.framework中的RevealServer文件移入时重命名成libReveal.dylib,使用的命令是(将IP地址换成iOS设备的IP地址,主要要保持在一个局域网内):
    scp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework/RevealServer root@192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.dylib

    需要输入的默认密码是:apline

          这里我因为试了一下 OpenSSH 能不能成功连上手机。使用了。"ssh root@192.168.2.6"。输入密码apline后,成功连接了iPhone的机子,再使用上面命令一直说找不到文件目录,是因为当前设备主体不对。小小注意一下。另外类似的代码将libReveal.plist也移入到设备中:

    scp xxx/libReveal.plist  root@192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.plist 

        plist的内容是你要调试的App的bundle id。如下图:

        这里再贴上一份。获取手机所有应用的bundle id的代码。

    NSMutableArray *allID = [[NSMutableArray alloc] init];
        Class  LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
        NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
        NSArray *appArray = [workspace  performSelector:@selector(allApplications)];
        NSString *model = [UIDevice currentDevice].model;
        for (NSString *str in appArray) {
            //转换成字符串类型
            NSString *string  =  [str description];
            NSRange rg1 = [string rangeOfString:@">"];
            string = [string substringFromIndex:rg1.location + 2];
            if ([model isEqualToString:@"iPad"]) {
                NSRange rg2 = [string rangeOfString:@"<"];
                string = [string substringToIndex:rg2.location - 1];
            }
            NSDictionary *dic = @{@"bundleID":string};
            [allID addObject:dic];
        }
        NSLog(@"allID-----%@",allID);

    2. 在iOS设备上设置中 Reveal 的Enabled Applications指定要查看的App。

    到这里就完成了。
    接下来打开你要查看的App,再打开Reveal。即可看到对应界面。

  • 相关阅读:
    数据结构与算法基础 模块七
    操作系统
    数据结构与算法基础 模块六
    数据库技术
    数据库技术
    数据库 SQL语句
    数据结构与算法基础 模块五
    同源策略和解决
    初识单例模式
    Django—内置用户权限管理
  • 原文地址:https://www.cnblogs.com/guanshenbao/p/9253870.html
Copyright © 2011-2022 走看看