title: Java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp
body: <p><a href="https://i.stack.imgur.com/ucVs2.png" rel="noreferrer"><img src="https://i.stack.imgur.com/ucVs2.png" alt="Screenshot from Android Studio"></a></p>
  
  <p><a href="https://i.stack.imgur.com/FLjg0.png" rel="noreferrer"><img src="https://i.stack.imgur.com/FLjg0.png" alt="Google Play Services"></a></p>
  
  <p>This is React Native project. I have an error after successful build in Android Studio Emulator: </p>
  
  <blockquote>
    <p>java.lang.NoClassDefFoundError: Failed resolution of:
    Lcom/google/firebase/FirebaseApp</p>
  </blockquote>
  
  <p>My files:</p>
  
  <p><strong>package.json:</strong></p>
  
  <pre><code>...
  "react-native": "^0.55.3",
  "react-native-camera": "1.1.2",
  "react-native-check-box": "^2.1.0",
  "react-native-extended-stylesheet": "^0.8.1",
  "react-native-firebase": "^4.2.0",
  "react-native-geocoder": "^0.5.0",
  "react-native-git-upgrade": "^0.2.7",
  "react-native-htmlview": "^0.12.1",
  "react-native-image-picker": "^0.26.10",
  "react-native-linear-gradient": "^2.4.0",
  "react-native-local-storage": "^1.5.2",
  "react-native-maps": "^0.21.0",
  "react-native-modal": "^5.4.0",
  "react-native-modal-dropdown": "^0.6.1",
  "react-native-read-more-text": "^1.0.0",
  "react-native-router-flux": "^4.0.0-beta.27",
  "react-native-svg-image": "^2.0.1",
  "react-native-text-input-mask": "^0.7.0",
  ...
  </code></pre>
  
  <p><strong>android/app/build.gradle:</strong></p>
  
  <pre><code>...    
  android {
      compileSdkVersion 27
      buildToolsVersion "27.0.1"
  
      defaultConfig {
          applicationId "com.something.anything"
          minSdkVersion 16
          targetSdkVersion 22
          versionCode 1
          versionName "1.0"
          ndk {
              abiFilters "armeabi-v7a", "x86"
          }
          multiDexEnabled true
      }
      signingConfigs {
          release {
              if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                  storeFile file(MYAPP_RELEASE_STORE_FILE)
                  storePassword MYAPP_RELEASE_STORE_PASSWORD
                  keyAlias MYAPP_RELEASE_KEY_ALIAS
                  keyPassword MYAPP_RELEASE_KEY_PASSWORD
              }
          }
      }
      splits {
          abi {
              reset()
              enable enableSeparateBuildPerCPUArchitecture
              universalApk false  // If true, also generate a universal APK
              include "armeabi-v7a", "x86"
          }
      }
      buildTypes {
          release {
              signingConfig signingConfigs.release
              minifyEnabled enableProguardInReleaseBuilds
              proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
          }
      }
      // applicationVariants are e.g. debug, release
      applicationVariants.all { variant -&gt;
          variant.outputs.each { output -&gt;
              // For each separate APK per architecture, set a unique version code as described here:
              // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
              def versionCodes = ["armeabi-v7a":1, "x86":2]
              def abi = output.getFilter(OutputFile.ABI)
              if (abi != null) {  // null for the universal-debug, universal-release variants
                  output.versionCodeOverride =
                          versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
              }
          }
      }
  }
  
  dependencies {
      compile(project(':react-native-firebase')) {
          transitive = false
      }
      compile project(':react-native-geocoder')
      compile(project(':react-native-maps')) {
        exclude group: 'com.google.android.gms', module: 'play-services-base'
        exclude group: 'com.google.android.gms', module: 'play-services-maps'
        exclude group: 'com.google.android.gms', module: 'play-services-location'
      }
  
      compile 'com.google.android.gms:play-services-base:15.+'
      compile 'com.google.android.gms:play-services-maps:15.+'
      compile 'com.google.android.gms:play-services-location:15.+'
      compile (project(':react-native-camera')) {
      exclude group: "com.google.android.gms"
      compile 'com.android.support:exifinterface:25.+'
      compile ('com.google.android.gms:play-services-vision:12.0.1') {
          force = true
          }
      }
      compile project(':react-native-text-input-mask')
      compile project(':react-native-linear-gradient')
      compile project(':react-native-image-picker')
      compile fileTree(dir: "libs", include: ["*.jar"])
      compile "com.android.support:appcompat-v7:23.0.1"
      compile "com.facebook.react:react-native:+"  // From node_modules
  }
  
  allprojects {
      repositories {
          maven { url "https://jitpack.io" }
          maven { url "https://maven.google.com" }
      }
  }
  
  // Run this once to be able to run the application with BUCK
  // puts all compile dependencies into folder libs for BUCK to use
  task copyDownloadableDepsToLibs(type: Copy) {
      from configurations.compile
      into 'libs'
  }
  </code></pre>
  
  <p><strong>android/build.gradle</strong></p>
  
  <pre><code>// Top-level build file where you can add configuration options common to all sub-projects/modules.
  
  buildscript {
      repositories {
          jcenter()
          google()
      }
      dependencies {
          classpath 'com.android.tools.build:gradle:3.1.0'
  
          // NOTE: Do not place your application dependencies here; they belong
          // in the individual module build.gradle files
      }
  }
  
  allprojects {
      repositories {
          mavenLocal()
          jcenter()
          maven {
              // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
              url "$rootDir/../node_modules/react-native/android"
          }
      }
  }
  
  subprojects {
    project.configurations.all {
       resolutionStrategy.eachDependency { details -&gt;
          if (details.requested.group == 'com.android.support'
                &amp;&amp; !details.requested.name.contains('multidex')
          ) {
             details.useVersion "27.1.0"
          }
       }
    }
  }
  </code></pre>
  
  <p>I've tried a lot of solutions but nothing helped.</p>