Java.lang.NoClassDefFoundError: 无法解析 android/support/v4/util/ArrayMap 的失败。

23
今天我在运行我的应用程序时发现了这个错误。我尝试了以下方法来解决它: -首先,我删除了multidex支持,但我仍然可以看到apk的切片。 -我还尝试重建整个项目,并将android支持和play服务库更新到最新版本,如java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap所建议的。 Android Studio - NoClassDefFoundError: Failed resolution of Landroid/support/v4/print/PrintHelper java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/os/BuildCompat

NoClassDefFoundError: android.support.v4.util.ArrayMap

堆栈跟踪如下

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
at com.google.firebase.FirebaseApp.
<clinit>
(Unknown Source)
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1751)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1726)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5324)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4898)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4838)
at android.app.ActivityThread.access$1500(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1536)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5636)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.util.ArrayMap" on path: DexPathList[[zip file "/data/app/pinnacle.org.rider-1/base.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_dependencies_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_0_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_1_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_2_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_3_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_4_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_5_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_6_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_7_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_8_apk.apk", zip file "/data/app/pinnacle.org.rider-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/pinnacle.org.rider-1/lib/arm, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.google.firebase.FirebaseApp.
<clinit>
(Unknown Source) 
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
at android.content.ContentProvider.attachInfo(ContentProvider.java:1751) 
at android.content.ContentProvider.attachInfo(ContentProvider.java:1726) 
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 
at android.app.ActivityThread.installProvider(ActivityThread.java:5324) 
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4898) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4838) 
at android.app.ActivityThread.access$1500(ActivityThread.java:178) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1536) 
at android.os.Handler.dispatchMessage(Handler.java:111) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5636) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
Suppressed: java.lang.ClassNotFoundException: android.support.v4.util.ArrayMap
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 19 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

这是我的Gradle文件。
apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'com.google.firebase.firebase-crash'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "pinnacle.org.rider"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
       // multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    }

    useLibrary 'org.apache.http.legacy'
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

      /*  debug {
            minifyEnabled true
            shrinkResources true
        }*/
    }

    dataBinding {
        enabled true
    }

    dexOptions {
        jumboMode = true
        // here heap size give 4g i got this thing from https://groups.google.com/forum/#!topic/adt-dev/P_TLBTyFWVY
        javaMaxHeapSize "4g"
     }

    packagingOptions {
        exclude 'META-INF/NOTICE' // will not include NOTICE file
        exclude 'META-INF/LICENSE' // will not include LICENSE file
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }
}


dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile project(':trupple-mvp')
    compile project(':pinbuoy')
    compile 'com.squareup:otto:1.3.8'
    compile 'io.card:android-sdk:5.4.2'
    compile 'com.google.guava:guava:19.0'
    compile 'co.paystack.android:paystack:2.1.2'
    testCompile 'org.robolectric:robolectric:3.1.1'
    compile 'com.google.firebase:firebase-messaging:10.2.0'
    compile 'com.google.firebase:firebase-crash:10.2.0'
    compile 'com.squareup.okhttp3:okhttp:3.3.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.3.0'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.0.1'
    compile 'com.squareup.retrofit2:converter-jackson:2.0.1'
    compile 'com.github.cooltechworks:CreditCardView:v1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'
   // compile 'com.android.support:multidex:1.0.1'
    compile 'javax.annotation:javax.annotation-api:1.2'
    compile 'de.hdodenhof:circleimageview:2.0.0'
    compile 'it.michelelacorte.swipeablecard:library:2.3.0'
    compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01@aar'
    compile 'com.github.lawloretienne:discreteslider:0.0.9'
    compile 'com.jaredrummler:material-spinner:1.1.0'
    compile files('libs/libphonenumber-7.7.0.jar')
    compile('io.socket:socket.io-client:0.8.1') {
        exclude group: 'org.json', module: 'json'
    }
    compile 'com.android.support:support-vector-drawable:25.1.1'
    compile 'com.github.dmytrodanylyk.circular-progress-button:library:1.1.3'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-beta5'
    testCompile 'org.mockito:mockito-core:1.9.5'
    testCompile 'junit:junit:4.12'
}

apply plugin: 'com.google.gms.google-services'

我的自定义库的gradle文件如下:
apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    useLibrary 'org.apache.http.legacy'

    dataBinding {
        enabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.google.android.gms:play-services:10.2.0'
    //compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    //compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.squareup.picasso:picasso:2.5.0'
    compile 'io.reactivex:rxandroid:1.2.1'
    compile 'io.reactivex:rxjava:1.1.6'
    compile 'com.google.code.gson:gson:2.7'
    testCompile 'junit:junit:4.12'

}

和第二个

apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.1'
    testCompile 'junit:junit:4.12'
}

Please i am stuck with this 我被卡住了,请帮忙。
I solved this by doing the following. 我通过以下步骤解决了这个问题。
1. Picking the exact package needed in the play services library module. 在play服务库模块中选择所需的确切包。
2. Ensure no duplicate of the support library. 确保没有重复的支持库。
3. Clean and rebuild the project. 清理并重新构建项目。
4. Kept the library source under 64k methods, so need for multidex. 将库源代码保持在64k方法以下,因此不需要多dex。

1
你正在使用什么类型的设备(API 级别)运行? - Michael Meyer
你找到解决方案了吗?我也遇到了类似的问题。 - IgorGanapolsky
它类似于此问题:https://dev59.com/a53ha4cB1Zd3GeqPR0jW - Le Hieu
该问题类似于此:https://dev59.com/a53ha4cB1Zd3GeqPR0jW - Le Hieu
5个回答

37

我在使用 Flutter 时遇到了同样的问题,当我搜索我的错误时,这个问题是谷歌上的第一个链接:

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArraySet

所以你的问题根源可能是同一个:AndroidX适配。将这些行添加到gradle.properties即可解决我的问题:

因此,您的问题可能是由于AndroidX适配引起的。将以下行添加到gradle.properties文件中即可解决我的问题:

android.useAndroidX=true
android.enableJetifier=true

您可能还想将 compileSdkVersion 28 添加到您的 应用级别build.gradle 文件中。更多信息请参阅


对于任何疑惑的人来说。当enableJetifier标志设置为true时,Android插件会自动通过重写其二进制文件来迁移现有的第三方库以使用AndroidX依赖项。如果未指定,则该标志默认为false。 - Michał Stochmal

2
android.useAndroidX=true
android.enableJetifier=true

在我加入 gradle.properties 后,它对我起作用了。


谢谢!我找了将近一天才找到这个解决方案。 - CoolMind

2

我曾经遇到过同样的问题,并通过编辑build.gradle文件来解决它,具体做法如下:

...

dependencies {
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
  testImplementation 'junit:junit:4.12'
  androidTestImplementation 'com.android.support.test:runner:1.0.2'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

  //Add these lines to fix the error.
  implementation 'com.google.firebase:firebase-analytics:17.2.1'
  implementation 'com.google.firebase:firebase-auth:19.2.0'
  implementation 'com.google.firebase:firebase-firestore:21.3.0'
}

apply plugin: 'com.google.gms.google-services'

1

看起来你的应用 gradle 依赖中缺少 v4 支持库。尝试添加 v4 支持库。

compile 'com.android.support:support-v4:25.1.1'

好的...你能把Google Play服务库依赖项移动到你的应用gradle中吗? - MSC
我注意到这个应用程序在其他设备上可以运行,但是在我的手机上无法运行。我的手机运行的是Android 5.1,API 22,你认为问题出在哪里? - geniusgeek
似乎是支持库v4:25.X.X出了问题。很可能他们将其分解为分段存档,并提供包括“-all”或类似集合的选项。我还没有解决这个问题,但我自己在LruCache和其他一些组件中也遇到了这个问题。 - Abandoned Cart

0

对我来说,我发现这个更改解决了我的问题。我有一个仓库,在今年七月份构建得很好。然后随着我将构建环境与Flutter等保持最新,它无法构建此项目,但可以很好地构建我的其他项目。我发现了这个差异:

--- a/android/build.gradle
+++ b/android/build.gradle
@@ -5,8 +5,8 @@ buildscript {
     }

     dependencies {
-        classpath 'com.android.tools.build:gradle:3.2.1'
-        classpath 'com.google.gms:google-services:4.2.0'
+        classpath 'com.android.tools.build:gradle:3.3.0'
+        classpath 'com.google.gms:google-services:4.3.0'
     }
 }

我应该提到,在那之前,我还从@Letitbe进行了两行更改,然后才起作用。 - Eradicatore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接