React-native-background-geolocation: Build fails with error `Error while generating the main dex list`

Created on 12 Aug 2018  路  23Comments  路  Source: transistorsoft/react-native-background-geolocation

Your Environment

  • Platform: Android
  • React Native version (react-native -v): 0.56.0

Expected Behavior

App should compile

Actual Behavior

Gradle fails with error:

Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> com.android.build.api.transform.TransformException: Error while generating the main dex list.

Steps to Reproduce

Run the app with react-native run-android

Context

build.gradle

ext {
    buildToolsVersion = "26.0.3"
    minSdkVersion = 16
    compileSdkVersion = 26
    targetSdkVersion = 26
    supportLibVersion = "26.1.0"
    googlePlayServicesVersion = "11.6.2"
}

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'
        classpath 'com.google.gms:google-services:3.1.2'
    } 
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        google()
        maven { url "$rootDir/../node_modules/react-native/android" }
        maven { url "$rootDir/../node_modules/react-native-background-geolocation/android/libs" }
        maven { url "$rootDir/../node_modules/react-native-background-fetch/android/libs" }
        maven { url "https://raw.githubusercontent.com/layerhq/releases-android/master/releases/" }
        maven { url "https://jitpack.io" }
        maven { url "https://raw.githubusercontent.com/layerhq/releases-android/master/releases/" }
        maven { url "https://raw.githubusercontent.com/layerhq/Atlas-Android/master/releases/" }
    }
}

app/build.gradle

apply plugin: "com.android.application"

import com.android.build.OutputFile

project.ext.react = [
        bundleInStaging: true,
        devDisabledInStaging: true,
        inputExcludes: ["ios/**", "__tests__/**", "bundle_out/**"]
]

apply from: "../../node_modules/react-native/react.gradle"

/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU architecture of their device.
 */
def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

task switchToDebug(type: Copy) {
    description = 'Switches to DEBUG google-services.json'
    from "src/debug"
    include "google-services.json"
    into "."
}

task switchToRelease(type: Copy) {
    description = 'Switches to RELEASE google-services.json'
    from "src/release"
    include "google-services.json"
    into "."
}

afterEvaluate {
    processDebugGoogleServices.dependsOn switchToDebug
    processReleaseGoogleServices.dependsOn switchToRelease
    processStagingGoogleServices.dependsOn switchToDebug
}

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "------"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode -----
        versionName -----
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
        multiDexEnabled true
    }
    signingConfigs {
        release {
            if (project.hasProperty(----)) {
                storeFile file(----)
                storePassword ----
                keyAlias ----
                keyPassword ----
            }
        }
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }

        staging {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
            matchingFallbacks = ['debug', 'release']
        }

    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // 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-background-geolocation')
    compile project(':react-native-background-fetch')    
    compile project(':bugsnag-react-native')
    compile(project(':react-native-maps')) {
        exclude group: 'com.google.android.gms'
    }
    compile(project(':react-native-fcm')) {
        exclude group: "com.google.firebase"
    }
    compile(project(':react-native-device-info')) {
        exclude group: "com.google.android.gms"
    }
    compile 'com.rollbar:rollbar-android:0.2.1'
    compile project(':react-native-sensitive-info')
    compile project(':react-native-i18n')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.facebook.react:react-native:+'
    compile 'org.slf4j:slf4j-nop:1.7.25'
    compile 'com.layer.atlas:layer-atlas:0.4.20'
    compile 'io.intercom.android:intercom-sdk-base:4.+'
    compile 'io.intercom.android:intercom-sdk-fcm:4.+'
    compile 'com.mixpanel.android:mixpanel-android:5.+'
    compile('com.google.android.gms:play-services-base:11.6.2') {
        force = true;
    }
    compile('com.google.android.gms:play-services-maps:11.6.2') {
        force = true;
    }
    compile('com.google.android.gms:play-services-gcm:11.6.2') {
        force = true;
    }
    compile('com.google.firebase:firebase-core:11.6.2') {
        force = true;
    }
    compile('com.google.firebase:firebase-messaging:11.6.2') {
        force = true;
    }
    compile('com.android.support:support-v4:26.1.0') {
        force = true;
    }

    compile('com.android.support:multidex:1.0.3')

    configurations.all {
        resolutionStrategy {
            force 'com.android.support:support-v4:26.1.0'
        }
    } 
}

// 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'
}

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

Most helpful comment

@christocracy Managed to get the build done by excluding the org.slf4 from the other dependency. Seems to be working now so far. Will close the issue. Thanks

All 23 comments

You have many issues in your app/build.gradle.

You鈥檙e aware of the purpose of the gradle config params in your Android/build.gradle? So that you don鈥檛 hardcore important dependence versions, such as these:

compile('com.google.android.gms:play-services-base:11.6.2') {
        force = true;
    }
    compile('com.google.android.gms:play-services-maps:11.6.2') {
        force = true;
    }
    compile('com.google.android.gms:play-services-gcm:11.6.2') {
        force = true;
    }
    compile('com.google.firebase:firebase-core:11.6.2') {
        force = true;
    }
    compile('com.google.firebase:firebase-messaging:11.6.2') {
        force = true;
    }
    compile('com.android.support:support-v4:26.1.0') {
        force = true;
    }

Are you aware that many popular modules are also aware of those same gradle config params, so you no longer have to do all that exclude / force monkey business?

Your build.gradle is a mess.

@christocracy I'm aware of that but even after cleaning my gradle file to accept the project level configs I have the same error on the compilation.

Any idea on how this can be fixed?
Thanks

Post your 2 updated gradle files. For app/build.gradle, I'm only interested in the dependencies block.

Any idea on how this can be fixed?

What do you think we're doing here?

build.gradle

ext {
    buildToolsVersion = "26.0.3"
    minSdkVersion = 16
    compileSdkVersion = 26
    targetSdkVersion = 26
    supportLibVersion = "26.1.0"
    googlePlayServicesVersion = "11.6.2"
}

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'
        classpath 'com.google.gms:google-services:3.1.2'
    } 
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        google()
        maven { url "$rootDir/../node_modules/react-native/android" }
        maven { url "$rootDir/../node_modules/react-native-background-geolocation/android/libs" }
        maven { url "$rootDir/../node_modules/react-native-background-fetch/android/libs" }
        maven { url "https://raw.githubusercontent.com/layerhq/releases-android/master/releases/" }
        maven { url "https://jitpack.io" }
        maven { url "https://raw.githubusercontent.com/layerhq/releases-android/master/releases/" }
        maven { url "https://raw.githubusercontent.com/layerhq/Atlas-Android/master/releases/" }
    }
}

app/build.gradle

dependencies {
    def playServicesVersion = rootProject.googlePlayServicesVersion
    def supportLibVersion = rootProject.supportLibVersion
    compile project(':react-native-background-geolocation')
    compile project(':react-native-background-fetch')    
    compile project(':bugsnag-react-native')
    compile(project(':react-native-maps')) {
        exclude group: 'com.google.android.gms'
    }
    compile(project(':react-native-fcm')) {
        exclude group: "com.google.firebase"
    }
    compile(project(':react-native-device-info')) {
        exclude group: "com.google.android.gms"
    }
    compile 'com.rollbar:rollbar-android:0.2.1'
    compile project(':react-native-sensitive-info')
    compile project(':react-native-i18n')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.facebook.react:react-native:+'
    compile 'org.slf4j:slf4j-nop:1.7.25'
    compile 'com.layer.atlas:layer-atlas:0.4.20'
    compile 'io.intercom.android:intercom-sdk-base:4.+'
    compile 'io.intercom.android:intercom-sdk-fcm:4.+'
    compile 'com.mixpanel.android:mixpanel-android:5.+'
    compile "com.google.android.gms:play-services-base:$playServicesVersion"
    compile "com.google.android.gms:play-services-maps:$playServicesVersion"
    compile "com.google.android.gms:play-services-gcm:$playServicesVersion"
    compile "com.google.firebase:firebase-core:$playServicesVersion"
    compile "com.google.firebase:firebase-messaging:$playServicesVersion"
    compile "com.android.support:support-v4:$supportLibVersion"
    compile 'com.android.support:multidex:1.0.3'
    configurations.all {
        resolutionStrategy {
            force "com.android.support:support-v4:$supportLibVersion"
        }
    } 
}

Right now they are like this and the compilation error is still:

Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> com.android.build.api.transform.TransformException: Error while generating the main dex list.

Thanks

Why are you doing this?

compile(project(':react-native-maps')) {
        exclude group: 'com.google.android.gms'
    }
    compile(project(':react-native-fcm')) {
        exclude group: "com.google.firebase"
    }
    compile(project(':react-native-device-info')) {
        exclude group: "com.google.android.gms"
    }

compile "com.google.android.gms:play-services-base:$playServicesVersion"
    compile "com.google.android.gms:play-services-maps:$playServicesVersion"
    compile "com.google.android.gms:play-services-gcm:$playServicesVersion"
    compile "com.google.firebase:firebase-core:$playServicesVersion"
    compile "com.google.firebase:firebase-messaging:$playServicesVersion"

react-native-maps, react-native-fcm and react-native-device-info are all aware of Gradle Config properties and will use them when provided.

See see which gradle config properties each of your 3rd-party modules support, see their build.gradle.

Eg: react-native-fcm/android/build.gradle. You'll find when you observe these build.gradle of your other modules that they're all aware of these same variables. Sometimes there are other interesting ones too that you might add to your android/build.gradle, like these ones in react-native-fcm.

They are like this because when I integrated those modules for the first time I needed that conflict resolution.

Even what I take that out and rely on the modules setup for the dependency global versions the dex issue still happens.

Why are you using?

googlePlayServicesVersion = "11.6.2"

The latest available version is 15.0.1

@christocracy tried to update everything but still got the same error. Gradle files look like this:

ext {
    buildToolsVersion = "26.0.3"
    minSdkVersion = 16
    compileSdkVersion = 26
    targetSdkVersion = 26
    supportLibVersion = "26.1.0"
    googlePlayServicesVersion = "15.0.1"
    firebaseCoreVersion = "16.0.1"
    firebaseMessagingVersion = "17.3.0"
}

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'
        classpath 'com.google.gms:google-services:4.0.1'
    } 
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        google()
        maven { url "$rootDir/../node_modules/react-native/android" }
        maven { url "$rootDir/../node_modules/react-native-background-geolocation/android/libs" }
        maven { url "$rootDir/../node_modules/react-native-background-fetch/android/libs" }
        maven { url "https://raw.githubusercontent.com/layerhq/releases-android/master/releases/" }
        maven { url "https://jitpack.io" }
        maven { url "https://raw.githubusercontent.com/layerhq/releases-android/master/releases/" }
        maven { url "https://raw.githubusercontent.com/layerhq/Atlas-Android/master/releases/" }
    }
}
dependencies {
    def playServicesVersion = rootProject.googlePlayServicesVersion
    def supportLibVersion = rootProject.supportLibVersion
    compile project(':react-native-background-geolocation')
    compile project(':react-native-background-fetch')    
    compile project(':bugsnag-react-native')
    compile project(':react-native-maps')
    compile project(':react-native-fcm')
    compile project(':react-native-device-info')
    compile 'com.rollbar:rollbar-android:0.2.1'
    compile project(':react-native-sensitive-info')
    compile project(':react-native-i18n')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.facebook.react:react-native:+'
    compile 'org.slf4j:slf4j-nop:1.7.25'
    compile 'com.layer.atlas:layer-atlas:0.4.20'
    compile 'io.intercom.android:intercom-sdk-base:4.+'
    compile 'io.intercom.android:intercom-sdk-fcm:4.+'
    compile 'com.mixpanel.android:mixpanel-android:5.+'
    compile "com.google.android.gms:play-services-base:$playServicesVersion"
    compile "com.google.android.gms:play-services-maps:$playServicesVersion"
    compile "com.google.android.gms:play-services-gcm:$playServicesVersion"
    compile "com.google.firebase:firebase-core:$firebaseCoreVersion"
    compile "com.google.firebase:firebase-messaging:$firebaseMessagingVersion"
    compile "com.android.support:support-v4:$supportLibVersion"
    compile 'com.android.support:multidex:1.0.3'
    configurations.all {
        resolutionStrategy {
            force "com.android.support:support-v4:$supportLibVersion"
        }
    } 
}

Get rid of this:

compile "com.google.android.gms:play-services-base:$playServicesVersion"
    compile "com.google.android.gms:play-services-maps:$playServicesVersion"
    compile "com.google.android.gms:play-services-gcm:$playServicesVersion"
    compile "com.google.firebase:firebase-core:$firebaseCoreVersion"
    compile "com.google.firebase:firebase-messaging:$firebaseMessagingVersion"

What is this stuff?

compile 'org.slf4j:slf4j-nop:1.7.25'
    compile 'com.layer.atlas:layer-atlas:0.4.20'
    compile 'io.intercom.android:intercom-sdk-base:4.+'
    compile 'io.intercom.android:intercom-sdk-fcm:4.+'
    compile 'com.mixpanel.android:mixpanel-android:5.+'

Removed those explicit lib compilations but the error persists.

Those are libraries that the app uses. Layer messaging, Intercom and Mixpanel

The following will print a number of dependency trees. They're all the same. Just post one here:

$ cd android
$ ./gradlew app:dependencies

Here it is:

+--- project :react-native-background-geolocation
|    +--- com.facebook.react:react-native:+ -> 0.56.0
|    |    +--- javax.inject:javax.inject:1
|    |    +--- com.android.support:appcompat-v7:26.1.0 -> 27.1.1
|    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    +--- com.android.support:support-core-utils:27.1.1
|    |    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    |    \--- com.android.support:support-compat:27.1.1
|    |    |    |         +--- com.android.support:support-annotations:27.1.1
|    |    |    |         \--- android.arch.lifecycle:runtime:1.1.0
|    |    |    |              +--- android.arch.lifecycle:common:1.1.0
|    |    |    |              \--- android.arch.core:common:1.1.0
|    |    |    +--- com.android.support:support-fragment:27.1.1
|    |    |    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    |    |    +--- com.android.support:support-core-ui:27.1.1
|    |    |    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    |    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    |    |    |    \--- com.android.support:support-core-utils:27.1.1 (*)
|    |    |    |    +--- com.android.support:support-core-utils:27.1.1 (*)
|    |    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    |    +--- android.arch.lifecycle:livedata-core:1.1.0
|    |    |    |    |    +--- android.arch.lifecycle:common:1.1.0
|    |    |    |    |    +--- android.arch.core:common:1.1.0
|    |    |    |    |    \--- android.arch.core:runtime:1.1.0
|    |    |    |    |         \--- android.arch.core:common:1.1.0
|    |    |    |    \--- android.arch.lifecycle:viewmodel:1.1.0
|    |    |    +--- com.android.support:support-vector-drawable:27.1.1
|    |    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    |    \--- com.android.support:support-compat:27.1.1 (*)
|    |    |    \--- com.android.support:animated-vector-drawable:27.1.1
|    |    |         +--- com.android.support:support-vector-drawable:27.1.1 (*)
|    |    |         \--- com.android.support:support-core-ui:27.1.1 (*)
|    |    +--- com.facebook.fbui.textlayoutbuilder:textlayoutbuilder:1.0.0
|    |    |    \--- com.facebook.fbui.textlayoutbuilder:staticlayout-proxy:1.0
|    |    +--- com.facebook.fresco:fresco:1.9.0
|    |    |    +--- com.facebook.fresco:fbcore:1.9.0
|    |    |    +--- com.facebook.fresco:drawee:1.9.0
|    |    |    |    +--- com.facebook.fresco:fbcore:1.9.0
|    |    |    |    \--- com.facebook.fresco:imagepipeline:1.9.0
|    |    |    |         +--- com.facebook.fresco:imagepipeline-base:1.9.0
|    |    |    |         |    +--- com.facebook.soloader:soloader:0.3.0
|    |    |    |         |    +--- com.parse.bolts:bolts-tasks:1.4.0
|    |    |    |         |    \--- com.facebook.fresco:fbcore:1.9.0
|    |    |    |         +--- com.facebook.soloader:soloader:0.3.0
|    |    |    |         +--- com.parse.bolts:bolts-tasks:1.4.0
|    |    |    |         \--- com.facebook.fresco:fbcore:1.9.0
|    |    |    +--- com.facebook.fresco:imagepipeline:1.9.0 (*)
|    |    |    \--- com.facebook.soloader:soloader:0.3.0
|    |    +--- com.facebook.fresco:imagepipeline-okhttp3:1.9.0
|    |    |    +--- com.squareup.okhttp3:okhttp:3.10.0
|    |    |    |    \--- com.squareup.okio:okio:1.14.0
|    |    |    +--- com.facebook.fresco:fbcore:1.9.0
|    |    |    \--- com.facebook.fresco:imagepipeline:1.9.0 (*)
|    |    +--- com.facebook.soloader:soloader:0.3.0
|    |    +--- com.google.code.findbugs:jsr305:3.0.0
|    |    +--- com.squareup.okhttp3:okhttp:3.10.0 (*)
|    |    +--- com.squareup.okhttp3:okhttp-urlconnection:3.10.0
|    |    |    \--- com.squareup.okhttp3:okhttp:3.10.0 (*)
|    |    +--- com.squareup.okio:okio:1.14.0
|    |    \--- org.webkit:android-jsc:r174650
|    +--- com.google.android.gms:play-services-location:15.0.1
|    |    +--- com.google.android.gms:play-services-base:[15.0.1,16.0.0) -> 15.0.1
|    |    |    +--- com.google.android.gms:play-services-basement:[15.0.1] -> 15.0.1
|    |    |    |    \--- com.android.support:support-v4:26.1.0
|    |    |    |         +--- com.android.support:support-compat:26.1.0 -> 27.1.1 (*)
|    |    |    |         +--- com.android.support:support-media-compat:26.1.0
|    |    |    |         |    +--- com.android.support:support-annotations:26.1.0 -> 27.1.1
|    |    |    |         |    \--- com.android.support:support-compat:26.1.0 -> 27.1.1 (*)
|    |    |    |         +--- com.android.support:support-core-utils:26.1.0 -> 27.1.1 (*)
|    |    |    |         +--- com.android.support:support-core-ui:26.1.0 -> 27.1.1 (*)
|    |    |    |         \--- com.android.support:support-fragment:26.1.0 -> 27.1.1 (*)
|    |    |    \--- com.google.android.gms:play-services-tasks:[15.0.1] -> 15.0.1
|    |    |         \--- com.google.android.gms:play-services-basement:[15.0.1] -> 15.0.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:[15.0.1,16.0.0) -> 15.0.1 (*)
|    |    +--- com.google.android.gms:play-services-places-placereport:[15.0.1,16.0.0) -> 15.0.1
|    |    |    \--- com.google.android.gms:play-services-basement:[15.0.1,16.0.0) -> 15.0.1 (*)
|    |    \--- com.google.android.gms:play-services-tasks:[15.0.1,16.0.0) -> 15.0.1 (*)
|    +--- org.greenrobot:eventbus:3.0.0
|    +--- com.squareup.okhttp3:okhttp:3.10.0 (*)
|    +--- com.transistorsoft:tslocationmanager:+ -> 2.12.14
|    +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25
|    +--- com.github.tony19:logback-android:1.1.1-9
|    |    \--- com.github.tony19:apktool-lib:1.4.4-5
|    \--- com.intentfilter:android-permissions:0.1.6
+--- project :react-native-background-fetch
|    +--- com.facebook.react:react-native:+ -> 0.56.0 (*)
|    \--- com.transistorsoft:tsbackgroundfetch:+ -> 0.2.0
+--- project :bugsnag-react-native
|    +--- com.bugsnag:bugsnag-android:4.5.0
|    |    \--- com.android.support:support-annotations:27.0.0 -> 27.1.1
|    \--- com.facebook.react:react-native:+ -> 0.56.0 (*)
+--- project :react-native-maps
|    +--- com.google.android.gms:play-services-base:15.0.1 (*)
|    \--- com.google.android.gms:play-services-maps:15.0.1
|         +--- com.google.android.gms:play-services-base:[15.0.1,16.0.0) -> 15.0.1 (*)
|         \--- com.google.android.gms:play-services-basement:[15.0.1,16.0.0) -> 15.0.1 (*)
+--- project :react-native-fcm
|    +--- com.facebook.react:react-native:+ -> 0.56.0 (*)
|    +--- com.google.firebase:firebase-core:16.0.1
|    |    +--- com.google.firebase:firebase-analytics:16.0.1
|    |    |    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    |    +--- com.google.android.gms:play-services-measurement-base:[16.0.0] -> 16.0.0
|    |    |    +--- com.google.android.gms:play-services-stats:15.0.1
|    |    |    |    \--- com.google.android.gms:play-services-basement:[15.0.1] -> 15.0.1 (*)
|    |    |    +--- com.google.firebase:firebase-analytics-impl:[16.1.1] -> 16.1.1
|    |    |    |    +--- com.google.android.gms:play-services-ads-identifier:15.0.1
|    |    |    |    |    \--- com.google.android.gms:play-services-basement:[15.0.1,16.0.0) -> 15.0.1 (*)
|    |    |    |    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    |    |    +--- com.google.android.gms:play-services-measurement-base:[16.0.0] -> 16.0.0
|    |    |    |    +--- com.google.android.gms:play-services-stats:15.0.1 (*)
|    |    |    |    +--- com.google.android.gms:play-services-tasks:15.0.1 (*)
|    |    |    |    +--- com.google.firebase:firebase-common:16.0.0 -> 16.0.1
|    |    |    |    |    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    |    |    |    \--- com.google.android.gms:play-services-tasks:15.0.1 (*)
|    |    |    |    \--- com.google.firebase:firebase-iid:16.0.0 -> 17.0.0
|    |    |    |         +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    |    |         +--- com.google.android.gms:play-services-stats:15.0.1 (*)
|    |    |    |         +--- com.google.android.gms:play-services-tasks:15.0.1 (*)
|    |    |    |         +--- com.google.firebase:firebase-common:16.0.1 (*)
|    |    |    |         \--- com.google.firebase:firebase-iid-interop:16.0.0
|    |    |    |              +--- com.google.android.gms:play-services-base:15.0.1 (*)
|    |    |    |              \--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    |    \--- com.google.firebase:firebase-common:16.0.0 -> 16.0.1 (*)
|    |    \--- com.google.firebase:firebase-measurement-connector-impl:16.0.1
|    |         +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |         +--- com.google.android.gms:play-services-measurement-base:[16.0.0] -> 16.0.0
|    |         +--- com.google.firebase:firebase-analytics:[16.0.1] -> 16.0.1 (*)
|    |         +--- com.google.firebase:firebase-analytics-impl:[16.1.1] -> 16.1.1 (*)
|    |         +--- com.google.firebase:firebase-common:16.0.0 -> 16.0.1 (*)
|    |         \--- com.google.firebase:firebase-measurement-connector:16.0.0
|    |              \--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    +--- com.google.firebase:firebase-messaging:17.3.0
|    |    +--- com.google.android.gms:play-services-basement:15.0.1 (*)
|    |    +--- com.google.android.gms:play-services-tasks:15.0.1 (*)
|    |    +--- com.google.firebase:firebase-common:16.0.1 (*)
|    |    +--- com.google.firebase:firebase-iid:[17.0.0] -> 17.0.0 (*)
|    |    \--- com.google.firebase:firebase-measurement-connector:16.0.0 (*)
|    \--- me.leolin:ShortcutBadger:1.1.17
+--- project :react-native-device-info
|    +--- com.facebook.react:react-native:+ -> 0.56.0 (*)
|    \--- com.google.android.gms:play-services-gcm:15.0.1
|         +--- com.google.android.gms:play-services-base:[15.0.1,16.0.0) -> 15.0.1 (*)
|         +--- com.google.android.gms:play-services-basement:[15.0.1,16.0.0) -> 15.0.1 (*)
|         +--- com.google.android.gms:play-services-iid:[15.0.1] -> 15.0.1
|         |    +--- com.google.android.gms:play-services-base:[15.0.1,16.0.0) -> 15.0.1 (*)
|         |    +--- com.google.android.gms:play-services-basement:[15.0.1,16.0.0) -> 15.0.1 (*)
|         |    +--- com.google.android.gms:play-services-stats:[15.0.1,16.0.0) -> 15.0.1 (*)
|         |    \--- com.google.android.gms:play-services-tasks:[15.0.1,16.0.0) -> 15.0.1 (*)
|         \--- com.google.android.gms:play-services-stats:[15.0.1,16.0.0) -> 15.0.1 (*)
+--- com.rollbar:rollbar-android:0.2.1
+--- project :react-native-sensitive-info
|    \--- com.facebook.react:react-native:0.20.1 -> 0.56.0 (*)
+--- project :react-native-i18n
|    \--- com.facebook.react:react-native:+ -> 0.56.0 (*)
+--- com.facebook.react:react-native:+ -> 0.56.0 (*)
+--- org.slf4j:slf4j-nop:1.7.25
|    \--- org.slf4j:slf4j-api:1.7.25
+--- com.layer.atlas:layer-atlas:0.4.20
|    +--- com.layer.sdk:layer-sdk:0.23.25
|    |    +--- org.slf4j:slf4j-nop:1.7.12 -> 1.7.25 (*)
|    |    +--- com.google.code.gson:gson:2.8.0
|    |    \--- com.firebase:firebase-jobdispatcher:0.7.0
|    |         \--- com.android.support:support-v4:25.0.0 -> 26.1.0 (*)
|    +--- org.slf4j:slf4j-nop:1.7.2 -> 1.7.25 (*)
|    +--- com.google.android.gms:play-services-location:10.2.0 -> 15.0.1 (*)
|    +--- com.squareup.picasso:picasso:2.5.2
|    +--- com.davemorrissey.labs:subsampling-scale-image-view:3.4.1
|    |    \--- com.android.support:support-annotations:20.0.0 -> 27.1.1
|    +--- com.android.support:recyclerview-v7:24.2.1 -> 27.1.1
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    \--- com.android.support:support-core-ui:27.1.1 (*)
|    +--- com.android.support:appcompat-v7:24.2.1 -> 27.1.1 (*)
|    \--- com.android.support:design:24.2.1 -> 27.1.1
|         +--- com.android.support:support-v4:27.1.1 -> 26.1.0 (*)
|         +--- com.android.support:appcompat-v7:27.1.1 (*)
|         +--- com.android.support:recyclerview-v7:27.1.1 (*)
|         \--- com.android.support:transition:27.1.1
|              +--- com.android.support:support-annotations:27.1.1
|              \--- com.android.support:support-compat:27.1.1 (*)
+--- io.intercom.android:intercom-sdk-base:4.+ -> 4.1.9
|    +--- com.android.support:design:27.1.1 (*)
|    +--- com.android.support:appcompat-v7:27.1.1 (*)
|    +--- com.android.support:animated-vector-drawable:27.1.1 (*)
|    +--- com.android.support:support-vector-drawable:27.1.1 (*)
|    +--- com.android.support:support-compat:27.1.1 (*)
|    +--- com.android.support:support-core-utils:27.1.1 (*)
|    +--- com.android.support:support-core-ui:27.1.1 (*)
|    +--- com.android.support:support-fragment:27.1.1 (*)
|    +--- com.android.support:support-annotations:27.1.1
|    +--- com.android.support:recyclerview-v7:27.1.1 (*)
|    +--- com.intercom:android-composer:2.0.0
|    \--- com.intercom:android-composer-gallery:2.0.0
+--- io.intercom.android:intercom-sdk-fcm:4.+ -> 4.1.9
|    +--- io.intercom.android:intercom-sdk-base:4.1.9 (*)
|    \--- com.google.firebase:firebase-messaging:11.8.0 -> 17.3.0 (*)
+--- com.mixpanel.android:mixpanel-android:5.+ -> 5.4.1
+--- com.android.support:support-v4:26.1.0 (*)
+--- com.android.support:multidex:1.0.3
\--- com.android.support:multidex:1.0.2 -> 1.0.3

I don't know. Have you Googled it?

Yes. Not much luck. Really wanted to get this integrated, purchase the license and get it on the app

I suggest you first try with a blank app first.

$ react-native init Foo

And open your app with Android Studio. See if Android Studio is reporting reporting any warnings.

@christocracy using the stacktrace option gave me this:

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithMultidexlistForStaging'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: Error while generating the main dex list.
        at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
        at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
        ... 29 more
Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.
        at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:127)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
        ... 41 more
Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: org.slf4j.impl.StaticMDCBinder
        at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87)
        at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:114)
        ... 44 more
Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: org.slf4j.impl.StaticMDCBinder
        at com.android.tools.r8.utils.ProgramClassCollection.resolveClassConflictImpl(ProgramClassCollection.java:64)
        at com.android.tools.r8.utils.ProgramClassCollection.lambda$create$0(ProgramClassCollection.java:25)
        at com.android.tools.r8.utils.ProgramClassCollection.create(ProgramClassCollection.java:24)
        at com.android.tools.r8.graph.LazyLoadedDexApplication$Builder.build(LazyLoadedDexApplication.java:121)
        at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:122)
        at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:86)
        at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:36)
        at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:95)
        at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:83)
        ... 45 more

Seems like the issue is with the slf4j dependency.
Any idea on how is it happening or how can it be fixed?

Thanks!

Where were you instructed you to import compile 'org.slf4j:slf4j-nop:1.7.25'?

BackgroundGeolocation imports slf4j-api:1.7.21

That is my own dependency but when I remove it the same error happens:

Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: org.slf4j.impl.StaticMarkerBinder
        at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87)
        at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:114)
        ... 44 more
Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: org.slf4j.impl.StaticMarkerBinder
        at com.android.tools.r8.utils.ProgramClassCollection.resolveClassConflictImpl(ProgramClassCollection.java:64)
        at com.android.tools.r8.utils.ProgramClassCollection.lambda$create$0(ProgramClassCollection.java:25)
        at com.android.tools.r8.utils.ProgramClassCollection.create(ProgramClassCollection.java:24)
        at com.android.tools.r8.graph.LazyLoadedDexApplication$Builder.build(LazyLoadedDexApplication.java:121)
        at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:122)
        at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:86)
        at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:36)
        at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:95)
        at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:83)
        ... 45 more

Clean your build in Android Studio.

Already did that without any different result.
Tried to exclude org.slf4j from the lib compilation but doesn't work either.

@christocracy Managed to get the build done by excluding the org.slf4 from the other dependency. Seems to be working now so far. Will close the issue. Thanks

Good stuff.

Was this page helpful?
0 / 5 - 0 ratings