本文翻译自Android: How To Decode ProGuard’s Obfuscated Code From Stack Trace

本篇文章是写给那些在他们的应用中使用ProGuard并且需要从堆栈信息中进行调试的Android开发者。这是一种非常简单就将混淆的错误信息转化为可读的方法。

还原前

以下是ProGuard混淆过的堆栈信息:

Caused by: java.lang.NullPointerExceptionat net.simplyadvanced.ltediscovery.be.u(Unknown Source)at net.simplyadvanced.ltediscovery.at.v(Unknown Source)at net.simplyadvanced.ltediscovery.at.d(Unknown Source)at net.simplyadvanced.ltediscovery.av.onReceive(Unknown Source)

还原后

只要在命令行写一行命令,混淆都将会被移除,如下所示:

Caused by: java.lang.NullPointerExceptionat net.simplyadvanced.ltediscovery.UtilTelephony.boolean is800MhzNetwork()(Unknown Source)at net.simplyadvanced.ltediscovery.ServiceDetectLte.void checkAndAlertUserIf800MhzConnected()(Unknown Source)at net.simplyadvanced.ltediscovery.ServiceDetectLte.void startLocalBroadcastReceiver()(Unknown Source)at net.simplyadvanced.ltediscovery.ServiceDetectLte$2.void onReceive(android.content.Context,android.content.Intent)(Unknown Source)

如何还原堆栈信息

可以选择命令行或者GUI

GUI

  • 1.打开/tools/proguard/bin/proguardgui.bat
  • 2.选择左边栏的ReTrace选项
  • 3.添加你的mapping文件和混淆过的堆栈信息
  • 4.点击ReTrace!

如下图所示(译者注)

命令行

  • 1.需要你的ProGuard的mapping文件和你想要还原的堆栈信息(如stacktrace.txt)
  • 2.最简单的方法就是将这些文件拷贝到/tools/proguard/bin/目录
  • 3.运行以下命令
//Windowsretrace.bat -verbose mapping.txt stacktrace.txt > out.txt//Mac/Linuxretrace.sh -verbose mapping.txt stacktrace.txt > out.txt



更多相关文章

  1. Android Stuido Ndk-Jni 开发(二):Jni中打印log信息
  2. AndroidManifest.xml文件详解(manifest)
  3. Android生成签名文件并用其对apk文件进行签名
  4. android异步下载mp3文件
  5. Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等
  6. 我的android 第9天 - 文件存储

随机推荐

  1. android限制输入框长度与限制输入数字
  2. Android(安卓)体系结构介绍
  3. Android——build.prop 解析
  4. [Android(安卓)Pro] 完美Android(安卓)Cu
  5. Android怎么让RadioButton图片居中显示
  6. 疯狂android讲义学习总结---toggle与swit
  7. 在CentOS下搭建Android(安卓)开发环境
  8. Android(安卓)NDK带来什么
  9. Android实现插件化(热加载)和插件加密
  10. Android——体系架构 +四层