React native: app:transformClassesWithDexForDebug не удалось

Внезапно я больше не могу создать собственное приложение react. Задача, упомянутая в заголовке вопроса, завершается со следующим сообщением:

* What went wrong:
Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzmu;

Мой android/build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
dependencies {
    classpath 'com.android.tools.build:gradle:2.1.2'
    classpath 'com.google.gms:google-services:3.0.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"
        }
    }
}

И раздел зависимостей от android/app/build.gradle:

dependencies {
    compile project(':react-native-keychain')
    compile project(':react-native-fbsdk')
    compile project(':react-native-randombytes')
    compile project(':react-native-barcodescanner')
    compile project(':react-native-camera')
    compile project(':rn-splash-screen')
    compile project(':react-native-code-push')
    compile project(':react-native-vector-icons')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:+"  // From node_modules
    compile(project(":react-native-google-signin")){
      exclude group: "com.google.android.gms"
    }
    compile 'com.google.firebase:firebase-core:9.4.0'
    compile 'com.google.android.gms:play-services-auth:9.4.0'
    compile project(':react-native-vector-icons')
    compile project(':react-native-code-push')
    compile project(':react-native-onesignal')
}

Я слышал, что это происходит из-за конфликтов (например, сервисы google play, объявленные дважды или объявленные как отдельная служба в одном месте и в целом в другом месте), но не могу понять, в чем проблема. Что здесь не так и как я могу это исправить?

2 ответа

  1. Мое (ограниченное) понимание Android говорит мне, что вы включаете отдельные зависимости, которые так или иначе разделяют имя метода. Я обнаружил, что эти ошибки обычно указывают на несоответствие версий в моем дереве зависимостей — в этом случае похоже, что у вас есть несколько проектов в зависимости от com.google.android.gms:play-services-auth.

    Конфликты, о которых вы слышали, кажутся проблемой… exclude groupвозможно, не работает так, как вы намереваетесь.

    Загляните внутрь node_modules/react-native-google-signin/android/build.gradleи сравните версию play-services-authit depends on с версией play-services-authв вашем проекте app/build.gradle. Учитывая, что список зависимостей указывает на версию 9.4.0, вы можете попробовать установить версию зависимости react-native-google-signin в соответствие или наоборот.

    dependencies {
        compile "com.google.android.gms:play-services-auth:9.4.0"
        compile "com.facebook.react:react-native:+"
    }