Android:Dev Console中报告的“ClassNotFoundException”

时间:2017-08-20 14:10:56

标签: android classloader classnotfoundexception runtimeexception

我的应用程序现在已经在Play商店上运行了一段时间,并且有大约500个安装,今天我的开发控制台的ANR&崩溃部分:

java.lang.RuntimeException: 
       at android.app.ActivityThread.installProvider (ActivityThread.java:6423)
       at android.app.ActivityThread.installContentProviders (ActivityThread.java:6012)
       at android.app.ActivityThread.handleBindApplication (ActivityThread.java:5951)
       at android.app.ActivityThread.-wrap3 (ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1710)
       at android.os.Handler.dispatchMessage (Handler.java:102)
       at android.os.Looper.loop (Looper.java:154)
       at android.app.ActivityThread.main (ActivityThread.java:6776)
       at java.lang.reflect.Method.invoke (Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
       at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

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.installProvider (ActivityThread.java:6408)

这些报告中有6个(全部相同)来自一个用户,在Galaxy S8 +(dream2qltesq)上使用Android版本7。

有没有人知道造成这种情况的原因是什么?

我已经排除了64k方法参考限制和/或Proguard是原因,因为(如果我错了请纠正我),如果是64k方法参考限制,我会说,我会在Android Studio中构建应用程序时遇到错误(我没有),如果原因是Proguard,我会假设每次安装和运行生产版本时都会出现此问题(不是这样)。

在SO上的问题中提到了一些类似的错误,但它们通常是“从Eclipse / Android Studio运行良好,但从Play商店安装时不运行。我知道我的应用程序工作来自Play商店,所以我有点感到困惑的是为什么这可能只出现在500个用户中。我之前没有看到过这个问题而且无法重新创建它。

如果有人对这些类型的崩溃报告/例外有经验,我会很感激,如果有什么我可以做的来纠正这个问题。

1 个答案:

答案 0 :(得分:0)

一旦进入我的应用程序,问题出现在不正确的MultiDex实现中,我在添加到主类MultiDex.install(this)之后解决了这个问题;

public class MyMainClass extends Application {
    @Override
    public void onCreate() {
        MultiDex.install(this);
...
}