我有一个启用了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”规则? –