title: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
body: <p>Today i found this error while trying to run my app. I made the following attempts towards solving it.
  - First i removed multidex support, but i can still see the slices of apk there.
  -i also attempted rebuilding the entire project, and updated the android support and play services libraries to the latest as recommended by <a href="https://stackoverflow.com/questions/41102081/java-lang-noclassdeffounderror-failed-resolution-of-landroid-support-v4-util-a">java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap</a></p>
  
  <p><a href="https://stackoverflow.com/questions/36302506/android-studio-noclassdeffounderror-failed-resolution-of-landroid-support-v4">Android Studio - NoClassDefFoundError: Failed resolution of Landroid/support/v4/print/PrintHelper</a> </p>
  
  <p><a href="https://stackoverflow.com/questions/39601370/java-lang-noclassdeffounderror-failed-resolution-of-landroid-support-v4-os-bui">java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/os/BuildCompat</a>.</p>
  
  <p><a href="https://stackoverflow.com/questions/34726491/noclassdeffounderror-android-support-v4-util-arraymap/34726985#34726985">NoClassDefFoundError: android.support.v4.util.ArrayMap</a></p>
  
  <p>The stacktrace is as follows</p>
  
  <pre><code>java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
  at com.google.firebase.FirebaseApp.
  &lt;clinit&gt;
  (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.
  &lt;clinit&gt;
  (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
  </code></pre>
  
  <p>Here is my gradle file </p>
  
  <pre><code>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'
  </code></pre>
  
  <p>My custom libraries have the following as their gradle</p>
  
  <pre><code>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'
  
  }
  </code></pre>
  
  <p><strong>and the second with</strong>  </p>
  
  <pre><code>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'
  }
  </code></pre>
  
  <p><strong>Please i am stuck with this</strong></p>
  
  <p>I solved this by doing the following.</p>
  
  <ol>
  <li>Picking the exact package needed in the play services library module.</li>
  <li>Ensure no duplicate of the support library.</li>
  <li>Clean and rebuild the project.</li>
  <li>Kept the library source under 64k methods, so need for multidex.</li>
  </ol>