最近在关注友盟后台反馈应用崩溃情况,但是在看log日志的时候不是太直观,原因是上传到线上的apk文件是经过混淆的。那么我们该怎么样才能更直观的看到log的问题尼?这个解决的方法很简单,就是上传混淆后的apk的mapping文件(友盟的错误列表下面就可以添加mapping文件了,之后就可以直观的查看log了,这个mapping文件是分版本的,所有得根据自己的需求处理)。

今天大致的介绍下这个功能的原理。

其实友盟实现这个功能也是根据android的ProGuard 实现的。ProGuard 在开发中很常用,但是我们只用在混淆代码,今天就简单的记录下他是怎么还原混淆代码的操作。

首先看一个被混淆的log日志:

java.lang.NullPointerException: null format argument

at com.test.proguard.activity.ListActivity.a(ZuoWenListAct ivity.java:126)

对于上面log中的a我们不太好理解,那么这时借助ProGuard+mapping文件我们就可还原a的具体名称,处理后的log日志:

java.lang.NullPointerException: null format argument

at com.test.proguard.activity.ListActivity.initData(ZuoWenListActivity.java:126)

这样我们就可以清除的看到a代表initData方法。

工具的使用:

该工具位于  /tools/proguard/bin/ 目录下。

里面的 proguardgui.bat 为 GUI 工具,

1) 运行 proguardgui.bat

2) 从左边的菜单选择  “ReTrace”

3) 在上面的 mapping 文件中选择你的 mapping 文件 ,在下面输入框输入要还原的代码

4) 点击 “ReTrace!” 按钮

retrace.bat 为命令行工具, 把 mapping 文件和 要还原的堆栈信息保存在 stacktrace 文件中,

然后把这两个文件复制到 retrace.bat 目录下,运行如下命令即可。 retrace.bat -verbose mapping.txt stacktrace.txt > out.txt

这里就对ProGuard 的一个小功能简单的介绍下。方便自己和大家的学习。

欢迎加入公众号:

android mapping.txt,Android根据mapping.txt还原混淆的代码相关推荐

  1. Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://sch

    我Flutter,在运行应用程序时,我在调试控制台中收到如下错误: Warning: Mapping new ns http://schemas.android.com/repository/andr ...

  2. 性能优化-Android之ANR分析解决 traces.txt文件分析 CPU占用过高 解决ANR文件没有导出权限问题

    (由于公司项目特殊情况,需要使用一些小厂的三防功能手机,不能使用我们平时用的这些民用手机) 前期测试的时候是用民用手机测试的,有六七种机型(小米,华为,中兴,oppo),使用过程中均没有出现ANR的情 ...

  3. 性能优化-Android之ANR分析解决 traces.txt文件分析

    (由于公司项目特殊情况,需要使用一些小厂的三防功能手机,不能使用我们平时用的这些民用手机) 前期测试的时候是用民用手机测试的,有六七种机型(小米,华为,中兴,oppo),使用过程中均没有出现ANR的情 ...

  4. Android开发创建txt文件并读写txt文件数据

    在Android开发过程中,经常会遇到需要创建txt文件并写入数据的情况.今天我们来介绍一下如何实现这样的功能. 一.创建txt文件 /*** 创建txt文件*/private void create ...

  5. android 加载器loader详解

     Loaders loader在android 3.0之后才被引入,它简化了在activity和fragment中异步加载数据的步骤(个人认为简化是次要的,更重要的是优雅的实现了异步加载),loa ...

  6. java还原混淆代码,android混淆 android如何将混淆代码还原?

    android studio的混淆文件是哪个曾几何时,我们做了世上那最柔情的人,为一朵花低眉,为一朵云驻足,为一滴雨感动. 关于代码混淆的作用,就不多解释了,整个过程大致如下:在app下的build. ...

  7. android备份手机号码,Android手机通讯录备份还原代码

    最近想写段Android程序玩玩.开发环境 Eclipse ,Android 2.2 开发环境搭建 1.先安装jdk 2.下载安装eclipse 3.下载安装android sdk 4.安装eclip ...

  8. Android之——短信的备份与还原

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47091281 眼下,Android手机中的一些软件能够实现手机短信的备份与还原操作 ...

  9. android+proguard目录,Android proguard问题:路径可能不是null或空字符串.路径=“空”...

    在设置之前,每件事情都很好 minifyEnabled true 和 shrinkResources true 设置这些值后,每当我运行项目时,我都会收到此错误: Information:Gradle ...

最新文章

  1. UVALive 7070 The E-pang Palace 暴力
  2. 可想实现一个自己的简单jQuery库?(五)
  3. ofbiz之entity 实体解析 扩展 视图 复合列写法
  4. JavaScript数学,四舍五入到小数点后两位[重复]
  5. 全球酒店详情查看API接口-基于极核数据
  6. 页面布局与编写(续2)
  7. 生成jar文件的方法
  8. ckedit 3.0 配置(一)
  9. java 使用json-lib 对象,String,json互转
  10. python 切片_知乎问答之 Python 切片整理
  11. 【Computer Organization笔记07】实验课:可编程逻辑器件介绍,硬件编程方法与原则,硬件编程流程
  12. 程序员应具备的素质[转帖]
  13. python spark教程菜鸟教程_菜鸟教程hadoop-hadoop入门教程
  14. 短址(short URL)原理及其实现 来源:http://blog.csdn.net/beiyeqingteng
  15. silverlight mysql_Silverlight中衔接MySQL数据库实例详解
  16. AI萃取的5G咖啡,只有华为能调出这个味道
  17. FireStart教程:基于SharePoint的出差报销流程二
  18. IPinfo上架uTools插件中心
  19. The tomcat server configuration at /sever/tomcat v9.0 localhost-config is.......错误解析
  20. python 当前时间的毫秒时间戳转换为 年-月-日 时:分:秒

热门文章

  1. SpringMVC之RequestHeader注解与CookieValue注解详解
  2. Linux安装MySQL8.0
  3. 06构造方法和文件读取
  4. 兰州大学计算机调剂2020,兰州大学2020考研调剂公告
  5. android 输出字节数组,Android蓝牙通信字节数组的数据类型转换 求教!
  6. 在linux服务器搭建函数,linux ftp服务器搭建
  7. mysql记录是乱码_mysql查询数据库导致中文乱码
  8. 解决pytorch softmax警告UserWarning: Implicit ....Change the call to include dim=X as an argument.
  9. Linux安装mysql(解决E: Package ‘mysql-server‘ has no installation candidate与ERROR 1698 (28000))
  10. Mac selenium调试已经存在的Chrome浏览器