本文翻译自Android: How To Decode ProGuard’s Obfuscated Code From Stack Tracehtml
本篇文章是写给那些在他们的应用中使用ProGuard而且须要从堆栈信息中进行调试的Android开发者。这是一种很是简单就将混淆的错误信息转化为可读的方法。java
如下是ProGuard混淆过的堆栈信息:android
Caused by: java.lang.NullPointerException at 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)
只要在命令行写一行命令,混淆都将会被移除,以下所示:app
Caused by: java.lang.NullPointerException at 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)
能够选择命令行或者GUIui
/tools/proguard/bin/proguardgui.bat
ReTrace
选项ReTrace!
以下图所示(译者注)
.net
/tools/proguard/bin/
目录//Windows retrace.bat -verbose mapping.txt stacktrace.txt > out.txt //Mac/Linux retrace.sh -verbose mapping.txt stacktrace.txt > out.txt