Дублируемая запись: com / google / firebase / FirebaseApiNotAvailableException.class

У меня есть проект Android, созданный с помощью React-Native и использующий сервисы Google Play (аналитика, облачные сообщения, реклама). Я не использую Firebase в любом месте.

Пробовал обновление Служб Службы с 8.4.0 => 9.2.0. Также обновлен путь класса GPS.

buildscript { dependencies { classpath 'com.google.gms:google-services:3.0.0' 

 dependencies { compile 'com.google.android.gms:play-services-analytics:9.2.1' compile 'com.google.android.gms:play-services-ads:9.2.1' compile 'com.google.android.gms:play-services-base:9.2.1' compile 'com.google.android.gms:play-services-gcm:9.2.1' 

Обратите внимание, что я не могу в явной зависимости от Firebase.

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

Com.android.build.api.transform.TransformException: java.util.zip.ZipException: дублировать запись: com / google / firebase / FirebaseApiNotAvailableException.class

Я знаю, что Firebase поставляется в Google Play Services ( начиная с 9.0 ), поэтому я подумал, что что-то еще компилируется и связывается со старой версией. Поэтому, глядя на понимание зависимостей ( gradle -q dependencyInsight --configuration compile --dependency firebase ), я заметил, что firebase-common 9.0.0 добавляется поверх 9.2.1:

Введите описание изображения здесь

Но я не могу, чтобы жизнь меня узнала, что вызывает это.

Хорошо – виновником является Реакт-Род.

Подсказка была этой неясной строкой, которая появляется на консоли Gradle:

Плагин google-services не смог обнаружить какую-либо версию для com.google.android.gms или com.google.firebase, будет использоваться версия по умолчанию: 9.0.0.

Исправить? Заставить проект библиотеки RN связать с правильной версией Firebase, добавив следующую строку в build.gradle:

 compile 'com.google.firebase:firebase-core:9.2.1' 

И поэтому:

Введите описание изображения здесь

В качестве побочной заметки эта проблема заставила меня глубже заглянуть в управление зависимостями градиентов. Я написал обширную статью о разрешении общих проблем зависимостей .

В моем случае я использовал это в app / build.gradle:

 compile 'com.google.android.gms:play-services-location:9.8.0' compile 'com.google.android.gms:play-services-maps:9.8.0' 

Ошибка, когда я пыталась сгенерировать подписанный APK, была:

 Error:Execution failed for task ':app:transformClassesWithJarMergingForRelease'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/firebase/FirebaseApiNotAvailableException.class 

Я изменил app / build.gradle, удалив две строки, упомянутые выше, и вместо этого:

 compile 'com.google.android.gms:play-services:9.8.0' 

Конечно, «игровые сервисы» – это полный комплект, а не оптимизированный способ сделать это. Лучше всего указать конкретные сервисы, которые требуются ( см. «Служебные сервисы: 9.8.0» включают «play-services-location: 9.8.0»? ), Но на данный момент он исправляет ошибку в моем случае.

Проблема в том, что вы используете оба плагина в файле build.gradle, поэтому удалите один плагин Google Play Services, например

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

а также

 compile 'com.google.android.gms:play-services:11.0.2' 

Поэтому удалите обе библиотеки, а затем добавьте

 packagingOptions { exclude 'META-INF/NOTICE' // It is not include NOTICE file exclude 'META-INF/LICENSE' // It is not include LICENSE file } 
Intereting Posts
Изображение, снятое с камеры или галереи при использовании в образе просмотра, его ориентация меняется, а иногда вертикально растягивается на Android Независимый от масштаба пиксель пиксель Форматирование JSON Body для дооснащения из однострочного значения без модели Espresso NoMatchingViewException при использовании withId Поддерживает ли Android загрузку изображений из HTTP в кеш? Как узнать строку user-agent для определенных устройств Android? Прокрутите редактор макета в Android ADT Eclipse Plug-in Терминал Gradle не отображается в Android Studio Как выделить строку в ListView в Android? Как подключить существующий MS Access к SQLite для использования с разработкой приложений Android? Как настроить инъекцию зависимостей с помощью кинжала для вещей, отличных от действий и фрагментов? Недопустимый код ошибки sqlite Android: как распространять платное приложение при оплате Google Play не доступно в моей стране Отображение документа из Документов Google в WebView Чтение из текстового файла в Android Studio Java