Java.lang.NoClassDefFoundError: 无法解析:Landroid/support/v4/util/ArrayMap。

3
我的应用程序在 API 23-25 上运行得非常完美,但在 API 21 & 22 上运行时会崩溃,并出现以下错误:
12-12 15:01:18.436 27069-27069/com.platinum.hydro E/AndroidRuntime: FATAL EXCEPTION: main
   Process: com.platinum.hydro, PID: 27069
   java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
       at com.google.firebase.FirebaseApp.<clinit>(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:5319)
       at android.app.ActivityThread.installContentProviders(ActivityThread.java:4893)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4833)
       at android.app.ActivityThread.access$1500(ActivityThread.java:178)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1531)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loop(Looper.java:194)
       at android.app.ActivityThread.main(ActivityThread.java:5631)
       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/com.platinum.hydro-2/base.apk"],nativeLibraryDirectories=[/data/app/com.platinum.hydro-2/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.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:5319) 
       at android.app.ActivityThread.installContentProviders(ActivityThread.java:4893) 
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4833) 
       at android.app.ActivityThread.access$1500(ActivityThread.java:178) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1531) 
       at android.os.Handler.dispatchMessage(Handler.java:111) 
       at android.os.Looper.loop(Looper.java:194) 
       at android.app.ActivityThread.main(ActivityThread.java:5631) 
       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)
            ... 18 more
    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

你使用的 Firebase 版本是什么? - OneCricketeer
嗨,我正在使用Firebase的9.8.0版本。谢谢你的回复。 - Tshego
你试过最新版本了吗? - OneCricketeer
1
是的,谢谢,10.0.1 版本可行,我必须更新库的最新版本,包括 com.google.android.gms:play-services 到 10.0.1 版本。 - Tshego
我在10.2.0版本中遇到了这个问题,你找到了任何具体的解决方案吗? - Goofyahead
3个回答

3

将注释移至答案中。

firebase库的9.8.0版本已过时,可能与其他支持库不兼容。

请尝试使用当前版本(截至此答案为止是10.0.1)。您还需要相应地更新其他Play服务依赖项。


1
实际上,这个问题还有一个原因: 当我们使用gradle构建时:

compile 'com.google.android.gms:play-services:xxxx'

我们不得不将整个API包编译到我们的应用程序中。在某些情况下,这样做会使我们更难以保持应用程序中方法数量(包括框架API、库方法和您自己的代码)低于65,536限制。 因此解决方案是:我们应该只构建我们使用的包: 例如:
compile 'com.google.android.gms:play-services-analytics:x.x.x'
compile 'com.google.android.gms:play-services-gcm:x.x.x'

更多细节: https://developers.google.com/android/guides/setup


0

我曾经遇到过同样的问题,通过在android/app/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'
    implementation 'com.google.firebase:firebase-analytics:17.2.0'
    // I had to add the following to fix this error.
    implementation 'com.google.firebase:firebase-auth:19.0.0'
    implementation 'com.google.firebase:firebase-firestore:21.1.1'
}

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