知是行的主意,行是知的功夫。这篇文章主要讲述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
【Android 混淆后的代码调试】如果你没有指定< stacktrace_file> ,retrace工具会从标准输入读取。
推荐阅读
- xamarin.android 绑定百度地图SDK遇到的问题
- WinForm中Application.Idle事件用法
- android获取手机机型厂商deviceID基本信息
- android studio 引用aar
- android 点击,触摸事件
- Android入门之文件系统操作文件操作相关指令
- AGG第二十课 agg::ellipse 方法approximation_scale()
- 关于xamarin.forms Android创建文件与写文件 (ftp)
- Java AWT面板