我有一個啓用了Proguard(minifyenabled true)的應用程序,最近在Google Play開發控制檯中收到了崩潰報告。當我看着它,我看到 如下:Google Play開發者控制檯顯示Stacktrace中的類和方法名稱
我很驚訝地看到第1行中完整的類和方法的名稱,如Proguard的啓用。我一直以前看到這樣的事情:
在com.myname.myapp.cf(來源不明)
我也很好奇如何爲我不是行號出現在我的Proguard配置文件中保留行號(因此,爲什麼我通常在我的堆棧跟蹤中看到「未知源」)。
我反編譯了我的.apk文件,在classes.dex文件中窺視了一下,看起來一切正常。我找到了堆棧跟蹤第1行中引用的類,並且類名確實是混淆的,方法名也是如此。
現在,'MyActivity'(stacktrace的第2行)是我的應用程序的啓動Activity,並且在Manifest中聲明,所以我明白爲什麼它的名稱沒有被混淆,並且'onConnected'方法是不是我的方法(它來自Google Play遊戲服務),因此,這也是可以的。
'MyMethodName' 從稱爲內 onConnected像這樣:
@Override
public void onConnected(Bundle arg0) {
myClassObject.myMethodName(); //Where myClassObject is an instance of MyClassName
}
調試設置爲禁用在我的build.gradle文件。
我沒有將mapping.txt文件上傳到Play控制檯,我手動運行回溯以查看我的去混淆堆棧跟蹤。
如果有人能幫助我理解爲什麼我在這裏看到我的完整課程和方法名稱,我將不勝感激。我可以/應該做些什麼來防止這種情況發生?
MyClassName是一個Activity類嗎?您是否使用默認的「ProGuard」規則? –