Today I found this error while trying to run my application. I made the following attempts to solve it. - At first I removed multidex support, but I still see apk slices there. -i also attempted to rebuild the entire project and updated the Android services support and playback libraries to the latest version, as recommended by java.lang.NoClassDefFoundError: permission failure: Landroid / support / v4 / Util / ArrayMap
Android Studio - NoClassDefFoundError: Failed permission of Landroid / support / v4 / print / PrintHelper
java.lang.NoClassDefFoundError: permission failure: Landroid / support / v4 / os / BuildCompat .
NoClassDefFoundError: android.support.v4.util.ArrayMap
The stacktrace element is as follows
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
Here is my gradle file
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'
My user libraries have the following gradle values
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' }
and the second with
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'm stuck with this
I solved this by doing the following.
- Selecting the exact package required in the game services library module.
- Do not duplicate support libraries.
- Clean and rebuild the project.
- Holds the library source under 64k methods, so multidex is required.