• Android 混淆后的代码调试


    ProGuard的输出文件及用处

    混淆之后,会给我们输出一些文件,在gradle方式下是在<project_dir>/build/proguard/目录下,ant是在<project_dir>/bin/proguard目录,eclipse构建在<project_dir>/proguard目录像。
    分别有以下文件:
    + dump.txt 描述apk文件中所有类文件间的内部结构。
    + mapping.txt 列出了原始的类,方法,和字段名与混淆后代码之间的映射。
    + seeds.txt 列出了未被混淆的类和成员
    + usage.txt 列出了从apk中删除的代码

    当我们发布的release版本的程序出现bug时,可以通过以上文件(特别时mapping.txt)文件找到错误原始的位置,进行bug修改。同时,可能一开始的proguard配置有错误,也可以通过错误日志,根据这些文件,找到哪些文件不应该混淆,从而修改proguard的配置。

    注意:重新release编译后,这些文件会被覆盖,所以没吃发布程序,最好都保存一份配置文件。

    调试Proguard混淆后的程序

    上面说了输出的几个文件,我们在改bug时可以使用,通过mapping.txt,通过映射关系找到对应的类,方法,字段等。

    另外Proguard文件中包含retrace脚本,可以将一个被混淆过的堆栈跟踪信息还原成一个可读的信息,window下时retrace.bat,Linux和mac是retrace.sh,在<sdk_root>/tools/proguard/文件夹下。语法为:

    retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

    例如:

    retrace.bat -verbose mapping.txt obfuscated_trace.txt

    如果你没有指定<stacktrace_file>,retrace工具会从标准输入读取。

  • 相关阅读:
    PostgreSQL之扩展SQL:触发器、自定义函数、存储过程
    PostgreSQL之并发控制
    PostgreSQL之全文搜索
    PostgreSQL之索引(三)索引分析
    PostgreSQL之索引(二)索引使用
    PostgreSQL之索引(一)索引类型
    PostgreSQL之数据类型(二)文本搜索、UUID、XML、JSON、数组
    源码分析之Map(四)Map实现类特性对比
    JAVA集合面试题
    源码分析之Map(三)HashMap
  • 原文地址:https://www.cnblogs.com/mysticCoder/p/7465408.html
Copyright © 2020-2023  润新知