Google Play开发者控制台在Stacktrace

时间:2017-09-03 13:31:58

标签: android google-play proguard android-proguard deobfuscation

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

enter image description here

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

  

at com.myname.myapp.c.f(Unknown Source)

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

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

现在,'MyActivity'(stacktrace的第2行)是我的应用程序的启动Activity,因此在Manifest中声明,所以我理解为什么它的名称没有被混淆,并且'onConnected'方法不是我的一种方法(它来自Google Play游戏服务),所以,这也没关系。

'MyMethodName'是从 on onConnected中调用的,如下所示:

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

我用于测试此应用程序的设备不是“主流”设备,Dev Consol中出现的“名称”与设备的实际名称没有任何相似之处,所以我没有立即注意到。< / p>

我很确定这在过去从未发生过(直到现在我还没有看到) - 为什么有人会希望他们的调试版本中的崩溃报告出现在Dev Console中以及生成构建崩溃,我不知道。

所以,如果有人看到这个问题,请检查它不是你自己的调试版本,导致堆栈跟踪涌入之前!

答案 1 :(得分:-2)

  

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

然后,您可能希望将mapping.txt添加到Google Play,以确保您的包和类名称被混淆。