Google Play开发者控制台在Stacktrace中显示类和方法名称

Zip*_*ppy 8 android proguard deobfuscation google-play android-proguard

我有一个启用了Proguard的应用程序(minifyenabled true),最近在Google Play开发者控制台中收到了崩溃报告.当我看着它时,我看到了以下内容:

在此输入图像描述

当Proguard启用时,我很惊讶地看到第1行中的完整类和方法名称.我以前总是看到这样的事情:

在com.myname.myapp.cf(未知来源)

我也很好奇线号是如何出现的,因为我没有在我的Proguard配置文件中保留行号(因此,为什么我通常在我的堆栈跟踪中看到'未知来源').

我反编译我的.apk,偷看了classes.dex文件,看起来一切都很好.我找到了堆栈跟踪的第1行中引用的类,并且类名确实是模糊的,方法名称也是如此.

现在,'MyActivity'(stacktrace的第2行)是我的应用程序的启动Activity,因此在Manifest中声明,所以我理解为什么它的名称没有被混淆,'onConnected'方法不是我的(它来自谷歌Play游戏服务),所以,再次,这是好的.

"MyMethodName"从所谓的 onConnected像这样:

@Override
public void onConnected(Bundle arg0) {
    myClassObject.myMethodName();       //Where myClassObject is an instance of MyClassName
}
Run Code Online (Sandbox Code Playgroud)

在我的build.gradle文件中将Debug设置为disabled.

我没有将mapping.txt文件上传到Play控制台,我手动运行回扫以查看我的去混淆堆栈跟踪.

如果有人能帮助我理解为什么我在这里看到我的全班和方法名,我会很感激?我可以/应该做些什么来防止这种情况发生?

Zip*_*ppy 3

经过几周的苦恼,我终于找到了原因......

可以说,我发布的应用程序完全被混淆了 - 这些去混淆的堆栈跟踪来自我自己的测试设备

是的,我自己的测试设备直接通过 Android Studio 运行应用程序并且未签名。(出于显而易见的原因,我没有在调试版本上启用 ProGuard)。

我用于测试此应用程序的设备不是“主流”设备,并且 Dev Consol 中显示的“名称”与设备的实际名称没有相似之处,因此我没有立即注意到。

我相当确定这在过去从未发生过(我当然直到现在才看到它)——这就是为什么有人希望他们的调试版本的崩溃报告与生产版本崩溃一起出现在开发控制台中,我不知道知道。

因此,如果有人看到这个问题,请先检查一下是否是您自己的调试版本导致了堆栈跟踪的涌入!