我有一个启用了Proguard的应用程序(minifyenabled为true),最近在Google Play Dev控制台上收到了崩溃报告。当我查看时,我看到以下内容:
我很惊讶在启用了Proguard之后,在第一行看到了完整的类和方法名称。以前我总是看到这样的东西:我也很好奇为什么行号会出现,因为我没有在我的Proguard配置文件中保留行号(这就是为什么我通常在我的堆栈跟踪中看到“未知来源”的原因)。at com.myname.myapp.c.f (未知来源)
我反编译了我的.apk文件,窥视了classes.dex文件,一切都看起来很正常。我找到了堆栈跟踪第一行引用的类,并且类名确实被混淆了,方法名也是如此。
现在,“MyActivity”(堆栈跟踪的第二行)是我的应用程序的启动活动,并且在清单中声明,所以我理解为什么它的名称没有被混淆,“onConnected”方法不是我的方法(它来自Google Play Games Services),所以,这也没问题。
“MyMethodName”是从“onConnected”中调用的,代码如下:
@Override
public void onConnected(Bundle arg0) {
myClassObject.myMethodName(); //Where myClassObject is an instance of MyClassName
}
我的build.gradle文件中已将Debug设置为禁用。
我不会将mapping.txt文件上传到Play Console,我手动运行retrace来查看我的反混淆堆栈跟踪。
如果有人能帮我理解为什么我在这里看到完整的类和方法名称,我会很感激。我该怎么做才能防止这种情况发生?
MyClassName
是一个Activity
类吗?你正在使用默认的ProGuard
规则吗? - Pravin Divraniya