2017-10-12 43 views
0

突然,我剛剛從Play商店安裝應用程序後開放的應用程序崩潰。 但問題是,當我在調試模式下運行android studio中的代碼時,應用程序不會崩潰。通過上傳progaurd規則映射文件到谷歌播放控制檯Deobfuscate生產android錯誤

當我在谷歌播放控制檯上查找崩潰錯誤時,我看到一些混淆代碼不容易從錯誤發生的位置猜測出來。

java.lang.NullPointerException: 
    at com.wl.model.a.b (Unknown Source) 
    at com.wl.model.a.a (Unknown Source) 
    at com.wl.model.a$1.a (Unknown Source) 
    at b.w$a.b (Unknown Source) 
    at b.a.b.run (Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588) 
    at java.lang.Thread.run (Thread.java:818) 

從錯誤我知道有一些空指針異常,但無法追蹤它的起源。

谷歌播放控制檯說上傳反混淆文件去混淆錯誤代碼。

現在我的問題是,我無法找到我的項目源文件夾中的去混淆文件。

我嘗試上傳pro-gaurd規則文件,但谷歌播放控制檯拒絕它。

請爲我提供尋找去混淆文件的路徑或位置(它通常出現在這裏)。

回答

1

時間後,你組裝您發佈的apk文件是在這裏:

./gradlew clean assembleFLAVORRelease 

app/build/outputs/mapping/FLAVOR/release/mapping.txt 

請記住,你應該檢查你的ProGuard規則:

-keepattributes SourceFile,LineNumberTable 

沒有此屬性,您將無法在播放控制檯中看到行和源文件名。

+0

我會試試這個。 – WitVault

1

它在build/outputs/proguard/release/mapping.txt
請確保您的ProGuard的mapping.txt來自您的編譯版本的相同版本。的mapping.txt被替換和更改每次您導出APK

+1

雖然此鏈接可能會回答問題,但最好在此處包含答案的基本部分並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17603863) –

1

一些詳細的解答和說明初學者和我一樣 -

映射文件的位置反混淆:

ProGuard的保存在文件中的應用 應用程序/構建/輸出/製圖/ FLAVOR/release/mapping.txt

感謝@chrjs爲answering它。

的一些陷阱:

的mapping.txt文件被覆蓋每次創建一個發佈版本與ProGuard的時間,因此,創建一個新的版本之前的文件先取備份。 這將有助於從舊版本的應用程序模糊堆棧跟蹤。

除此之外,還有兩種方法來混淆代碼:

1.上傳映射。txt文件到Google Play控制檯:

在Google Play上發佈您的應用時,您可以上傳mapping.txt文件。然後,Google Play會將用戶報告問題中的傳入堆棧跟蹤消除混淆,以便您可以在Google Play控制檯中查看它們。 (通過改變建立變種釋放並運行它),以交叉檢查

一些你想運行你的應用程序的發行版次:

2.使用本地SDK工具retrace.sh/retrace.bat並修復錯誤,使其不會在生產中發生(當發佈到遊戲店時)。

到模糊堆棧跟蹤轉換成可讀的一個自己,使用回掃腳本retrace.bat在Windows上;在Mac/Linux的retrace.sh)。

它位於<sdk-root>/tools/proguard/bin/目錄中。

<sdk-root>是安裝了所有android庫和sdks的地方。

的腳本採用的mapping.txt文件和你的堆棧跟蹤,產生一個新的,可讀堆棧跟蹤

命令語法:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>] 

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt 

我喜歡混淆的是很方便的預檢查生產錯誤的本地版本。

+0

這應該是被接受的答案。好總結! :) – chrjs

+0

@chrjs你在答案中指出了正確的方向。謝謝 – WitVault

相關問題