如何在Android上修复dalvik.system.BaseDexClassLoader.findClass ClassNotFoundException?

时间:2018-09-10 04:49:18

标签: android classnotfoundexception android-8.0-oreo

我在Google Play控制台上收到dalvik.system.BaseDexClassLoader.findClass ClassNotFoundException崩溃报告。该崩溃几乎是拥有OS 8 Oreo(占5%用户)的Samsung Galaxy 7-9所独有的。我的办公室里装有带Oreo的Samsung 7,并且已经在Samsung远程测试实验室尝试了所有设备,但无法复制崩溃。无论是否使用multidex,崩溃都会发生,我已经清除了缓存,重建并禁用了Instant Run。直到我将targetSdkVersion更改为26,才发生此问题。Android Studio,gradle构建。 由于我无法复制崩溃,因此我只能进行随机更改并上传到Playstore,然后在第二天检查崩溃报告。 预先感谢!

if(i->data.num == key.num) {
 /*  some code */    
}

编辑的应用程序版本.gradle:

Samsung Galaxy S9 (starqltesq), Android 8.0
Report 1

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3374)
  at android.app.ActivityThread.-wrap18 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1780)
  at android.os.Handler.dispatchMessage (Handler.java:105)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6938)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:93)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3369)

1 个答案:

答案 0 :(得分:0)

您可以按照android开发人员页面的说明进行操作:https://developer.android.com/studio/build/multidex.html

使用此代码编辑app.gradle文件,

defaultConfig {
...
minSdkVersion // your version
targetSdkVersion // your version 
...

// Enabling multidex support.
 multiDexEnabled true
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

我认为这会有所帮助。