本文翻譯自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