通过mapping.txt解析混淆apk的出错信息
2016-07-02 15:48
363 查看
一、eclipse导出混淆后的项目时,在项目根目录下会生成一个proguard文件夹,文件夹下包含dump.txt,mapping.txt,seeds.txt, usage.txt四个文件。
dump.txt 描述apk保重所有class的代码结构
mapping.txt 列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信息反翻译为源代码中的类,方法和成员名字。
seeds.txt 表示没有混淆的类和成员
usage.txt表示被剥离的类
保存好每一个已发布给用户的程序的mapping.txt文件。通过保存发布构建版本的mapping.txt文件拷贝,确保当用户碰到bug,并把混淆后的堆栈调试跟踪信息提交给你时,你可以进行调试从而修复问题。程序的mapping.txt文件在每次发布构建时都会被覆盖,所以你一定要注意保存正确的版本。
例如,假设你已经发布了一个应用程序并在继续在新的版本中开发添加新的功能。接着你马上启动混淆器并创建一个新的发布版本。该操作把mapping.txt文件覆盖了。一个用户提交了来自当前发布版本的bug报告,该报告包含了堆栈调试信息。你再也不能对用户的堆栈信息进行调试了,因为这个对应用户本机上版本的mapping.txt文件不存在了。其他覆盖mapping.txt文件的情况还有很多,所以对于每一个可能需要调试的版本,你都要确保有一份拷贝。
如何保存mapping.txt文件由你决定。例如,你可以根据版本和构建号来重命名它们,或者连同你的源代码进行版本控制。
二、还原混淆后log方法
sdk\tools\proguard\bin 目录下有个retrace.bat工具可以将混淆后的报错堆栈解码成正常的类名
使用方法如下:
将你的报错堆栈保存到文件中,如obfuscated_trace.txt
拿到版本发布时生成的mapping.txt
执行命令retrace.bat -verbose mapping.txt obfuscated_trace.txt
dump.txt 描述apk保重所有class的代码结构
mapping.txt 列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信息反翻译为源代码中的类,方法和成员名字。
seeds.txt 表示没有混淆的类和成员
usage.txt表示被剥离的类
保存好每一个已发布给用户的程序的mapping.txt文件。通过保存发布构建版本的mapping.txt文件拷贝,确保当用户碰到bug,并把混淆后的堆栈调试跟踪信息提交给你时,你可以进行调试从而修复问题。程序的mapping.txt文件在每次发布构建时都会被覆盖,所以你一定要注意保存正确的版本。
例如,假设你已经发布了一个应用程序并在继续在新的版本中开发添加新的功能。接着你马上启动混淆器并创建一个新的发布版本。该操作把mapping.txt文件覆盖了。一个用户提交了来自当前发布版本的bug报告,该报告包含了堆栈调试信息。你再也不能对用户的堆栈信息进行调试了,因为这个对应用户本机上版本的mapping.txt文件不存在了。其他覆盖mapping.txt文件的情况还有很多,所以对于每一个可能需要调试的版本,你都要确保有一份拷贝。
如何保存mapping.txt文件由你决定。例如,你可以根据版本和构建号来重命名它们,或者连同你的源代码进行版本控制。
二、还原混淆后log方法
sdk\tools\proguard\bin 目录下有个retrace.bat工具可以将混淆后的报错堆栈解码成正常的类名
使用方法如下:
将你的报错堆栈保存到文件中,如obfuscated_trace.txt
拿到版本发布时生成的mapping.txt
执行命令retrace.bat -verbose mapping.txt obfuscated_trace.txt
相关文章推荐
- Android用回调函数实现Service中更新Activity进度条
- android sudio 如何获取sha1与md5值
- unity3d优化-代码篇(不定期更新)
- Android屏幕知识点
- android studio中.9图片的用法。
- Can't get WebApplicationContext object from ContextRegistry.GetContext(): Resource handler for the 'web' protocol is not defined
- Android自定义Toast的使用
- iOS开发中几种刷新数据的方法
- iOS 9以上系统调用不了支付宝客户端只能调用网页解决方法
- Android Socket 遇到的Soure Not Find 错误
- Android自动化测试之环境搭建
- iOS自定义字体
- Android Button按钮点击两次之后,才执行点击事件的操作。
- iOS—PageViewController循环切换界面问题
- Android主题与Toolbar样式之间的关系
- YYModel 源码解读(二)之NSObject+YYModel.h (5)
- Android期末基础复习
- RTX2013和微信企业号打通
- Design Patterns in Swift:单例模式(中)
- Android 在C代码中调用logcat