Google Play Console上傳解譯混淆對映檔案: mapping.txt

Android App一直以來都有被反組譯的風險,網路上有很多的反組譯工具教學,甚至還有聽過直接把你的apk download下來之後,直接修改內容再發佈到第三方App商城的事情發生。所以建議在build apk時都要加入混淆的機制,至少能增加一些被破解的難度。

但是當你上傳混淆過後的apk到Google Play上之後,如果App在操作的過程發生了ANR或是閃退時,使用者透過按下了「回報」的機制讓開發者收到錯誤的訊息內容,但在Google Play Console所看到的debug程式碼也都是被混淆過的程式碼,也會增加工程師debug的難度。


於是Google提供了上傳混淆程式碼的函式對映表的方式,當有使用者回報閃退時,其回報的程式碼錯誤區段能夠透過對映表再度解譯為原來的程式碼內容。

取得對映表mapping.txt的方式只要當你執行build release的apk 完成之後,就可以在下列的路徑找到:
app/build/outputs/mapping/release/mapping.txt

接著進入到Google Play Console的 當機與ANR/反混淆檔案 選擇所屬版本上傳mapping.txt檔案
上傳mapping.txt檔案之後就會出現如下圖的畫面


請注意:
1.每次Build apk之後所產生的mapping.txt都會產生新的同名檔案覆蓋
2.在Android Studio執行Build/Clean Project會把mapping.txt清除
所以每次build完release版本所產生的mapping.txt檔案要先備份起來,以便之後要上傳到Google Play Console


Reference:
http://developer.android.com/tools/help/proguard.html#decoding
https://support.google.com/googleplay/android-developer/answer/6295281?hl=zh-Hant

留言

  1. 請問mapping.txt上傳後,是馬上就可看到非混淆過的錯誤訊息,或是要過段時間才可看到?謝謝.

    回覆刪除
    回覆
    1. 我是到隔天才有看到非混淆過的錯誤訊息

      刪除

張貼留言

這個網誌中的熱門文章

Mac安裝JDK後仍出現沒有runtime的錯誤 No Java runtime present, requesting install

Android使用Callback做為傳遞資料/通知的方法

如何實作從API抓取資料顯示在列表頁(ListView)上