Несколько файлов dex определяют Lcom / google / firebase / FirebaseException

Я столкнулся с проблемой интеграции Firebase. Прежде всего, я добавил правила к корневому файлу build.gradle :

 buildscript { repositories { maven { url "http://dl.bintray.com/populov/maven" } jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.google.gms:google-services:3.0.0' } } allprojects { repositories { maven { url "http://dl.bintray.com/populov/maven" } jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

И модуль Gradle file:

 apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24" defaultConfig { applicationId "com.example.app" minSdkVersion 14 targetSdkVersion 24 versionCode 2 versionName "0.9" } buildTypes { /// } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.google.firebase:firebase-core:9.0.2' compile 'com.google.firebase:firebase-crash:9.0.2' } apply plugin: 'com.google.gms.google-services' 

Во время сборки проекта я получаю сообщение об ошибке:

Ошибка: ошибка преобразования байт-кода в dex: Причина: com.android.dex.DexException: несколько файлов dex определяют Lcom / google / firebase / FirebaseException;

Причина ошибки очевидна, но я не собирал ни одну библиотеку дважды. Должен ли я исключать класс FirebaseException из процесса сборки вручную? Если да, то как? Возможно, это ошибка в зависимостях Firebase?

Благодарю.

Solutions Collecting From Web of "Несколько файлов dex определяют Lcom / google / firebase / FirebaseException"

У меня была эта проблема с модулем react-native-google-signin . Поскольку инструкции по изменению build.gradle часто бывают несовременными, неполными или просто определенными в нескольких несвязанных проектах, проект скомпилирован только после копирования параметров из проекта react-native-google-signin . Оказывается, порядок инструкций важен, а также exclude group команду. Окончательный результат выглядел следующим образом (в app/build.gradle ):

 dependencies { ... compile 'com.google.android.gms:play-services-auth:9.2.1' compile(project(":react-native-google-signin")) { exclude group: "com.google.android.gms" } } task copyDownloadableDepsToLibs(type: Copy) { from configurations.compile into 'libs' } apply plugin: 'com.google.gms.google-services' 

Верхний build.gradle включал дополнительный build.gradle как обычно:

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

После того, как эти изменения завершатся без ошибок Multiple dex .

Похоже, вы достигли предела подсчета методов . Попытайтесь удалить зависимости firebase и проверить количество методов для вашего приложения (например, с помощью этого плагина gradle (если вы не удалите эти зависимости, вы не сможете вообще построить проект, чтобы использовать плагин count count ).

Firebase – ОГРОМНАЯ библиотека – 17k + методы. Это зависит от тонны вещей. Одна вещь, которую вы можете сделать, это проверить список зависимостей, нажав эту кнопку на «methodscount.com»: Введите описание изображения здесь

Если у вас уже есть некоторые из них в вашем проекте, вы можете попытаться их исключить:

 compile ('com.google.firebase:firebase-core:9.0.2') { exclude module: 'play-services-base' exclude module: 'support-v4' exclude module: 'support-annotations' } 

Если это не поможет, вы можете настроить multidex для своего проекта.

FireBase – огромная библиотека, поэтому вам нужно включить поддержку multidex в своем приложении.

 dependencies { compile ('com.google.firebase:firebase-core:9.0.2') { exclude module: 'play-services-base' exclude module: 'support-v4' exclude module: 'support-annotations' } compile 'com.android.support:multidex:1.0.1' } defaultConfig { // Enabling multidex support. multiDexEnabled true } 

Я столкнулся с этой ошибкой, когда использовал firebase-ui: 2.0.0. Мне удалось решить это, понизив рейтинг до 'com.firebaseui:firebase-ui:1.2.0' и добавив следующую строку на уровне проекта build.gradle:

 allprojects { repositories { jcenter() // Add the following maven { url 'https://maven.fabric.io/public' } } } 

В случае, если это помогает кому-либо, я сталкивался с подобной проблемой, это было вызвано плагином Gradle для сервисов Google, в результате чего возникла зависимость, которая противоречила Firebase.

В моем верхнем уровне build.gradle у меня в buildscript:

 classpath 'com.google.gms:google-services:3.0.0' 

Который приводил (автоматически) зависимости, которые противоречили друг другу, в моем приложении build.gradle:

 compile 'com.firebaseui:firebase-ui-auth:2.2.0' 

Немного запутался, поскольку у меня была только одна зависимость от компиляции, и я почесывал голову, что могло бы быть умиротворенным.

Я удалил плагин google-services gradle, и он решил проблему. Полагаю, я мог бы просто найти нужную версию 🙂

Благодаря этому сообщению просто проверьте и обновите версии зависимостей google до последней версии.

Я мог бы исправить свою проблему. Проблема заключалась в том, что BaseGameUtils все еще использовала / ссылалась на более старую версию игровых сервисов. Добавлена ​​правильная версия, и теперь она работает. Думаю, я опустил BaseGameUtils для своего следующего проекта.

Добавьте этот код внутри android в build.gradle

 dexOptions { preDexLibraries = false }