我们正在尝试调试发生在某些用户身上的崩溃,但无法确定确切的原因。
在Google Play控制台中,我们看到了这个:
java.lang.RuntimeException:
at android.app.ActivityThread.handleReceiver (ActivityThread.java:3331)
at android.app.ActivityThread.-wrap20 (ActivityThread.java)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1734)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6688)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1358)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass (ClassLoader.java:380)
at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
at android.app.ActivityThread.handleReceiver (ActivityThread.java:3326)
我们在项目中设置了Crashlytics,它是应用程序启动时加载的第一件事。我怀疑也许清单文件中缺少其中一个类,但我们已经查看过它(甚至反汇编APK以确保),它们都在。
我们怀疑可能是某个活动在初始化期间使用的类,但其中一些是第三方SDK,因此我们无法访问其源代码。
有没有办法看到未找到的类名?错误没有显示在Crashlytics上,我们也无法在我们拥有的任何设备/模拟器上重现该错误。
谢谢!
编辑:部分解决方案
问题最终在于我们使用的通知包需要AndroidManifest.xml中具有特定供应商条目(我们的测试设备中没有)。在重新集成几乎所有第三方服务之后,我们最终看到崩溃报告消失了。
我们无法实现我们的一般目标(从记录到Google Play开发者控制台的异常中获取异常文本而不仅仅是异常堆栈跟踪),因此没有“好”的方法(据我们所知)来找出缺少哪个类。相当令人失望。