迁移到dalvik.system.BaseDexClassLoader.findClass上的androidx:java.lang.ClassNotFoundException:后,游戏机上出现错误

时间:2019-07-06 15:45:23

标签: android

我已按照文档步骤将我的应用迁移到了androidx。我没有更改我的应用程序代码,仅更改了导入和迁移所需的类。播放控制台显示以下错误:

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3567)
  at android.app.ActivityThread.access$1300 (ActivityThread.java:236)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1795)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7032)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at android.app.AppComponentFactory.instantiateReceiver (AppComponentFactory.java:84)
  at androidx.core.app.CoreComponentFactory.instantiateReceiver (CoreComponentFactory.java)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3560)
  at android.app.ActivityThread.access$1300 (ActivityThread.java:236)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1795)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7032)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)

此错误在Android 9设备上发生。在更新之前,显示了任何错误。

我已经检查了代码,使缓存无效并重新启动,关闭了Instant Run并安装了最新的android更新,但是不幸的是,由于android emulator,android 8和9物理设备均未显示错误,因此我只有play提供的信息控制台,错误仍然存​​在。

这是我的build.grade


compileSdkVersion 28
    buildToolsVersion '28.0.3'
    defaultConfig {
        applicationId "es.mtoh.recetasmonsieurcuisine"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 4
        versionName '1.0.4'
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
           // useProguard false // <-- disable proguard
            debuggable false
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.fragment:fragment:1.2.0-alpha01'
    implementation 'androidx.recyclerview:recyclerview:1.1.0-beta01'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    annotationProcessor 'androidx.annotation:annotation:1.1.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
    implementation 'com.google.android.gms:play-services-ads:18.0.0'
    implementation 'androidx.drawerlayout:drawerlayout:1.0.0'
    implementation 'androidx.viewpager:viewpager:1.0.0'
    implementation 'androidx.core:core:1.0.2'

有什么建议吗?

我正在考虑恢复迁移。

1 个答案:

答案 0 :(得分:0)

我有同样的问题。如果您使用的是AdMob,请参见其更新的实施说明: https://developers.google.com/admob/android/quick-start#example_app-level_buildgradle_excerpt

将Admob 18.0.0与AndroidX配合使用时,您必须在build.gradle中添加以下两行:

com.google.android.gms:play-services-measurement:17.0.0
com.google.android.gms:play-services-measurement-sdk:17.0.0