Повторяющаяся запись: com / google / firebase / FirebaseApiNotAvailableException.class

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

Попытался обновить Play Services с 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 (с 9.0), поэтому я решил, что что-то еще компилируется и связывается со старой версией. Итак, глядя на понимание зависимости (gradle -q dependencyInsight --configuration compile --dependency firebase) Я заметил, что firebase-common 9.0.0 добавляется поверх 9.2.1:

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

Ответы на вопрос(4)

java.util.zip.ZipException: повторяющаяся запись: com / google / firebase / iid / zzb.class

следуйте его работе. удалите свою текущую зависимость сервиса Google Play и перейдите к файлу в настройках модуля выбора Android Studio и выберите вкладку выбора зависимостей, теперь нажмите на значок + и выберите зависимость lib после того, как выполните поиск в сервисе Play в студии и добавьте его

Проблема в том, что вы используете оба плагина в файле 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
}
Решение Вопроса

Хорошо - виновник React-Native.

Намек был на эту неясную строку, которая появляется на консоли 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'

И поэтому:

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

 mienaikoe24 янв. 2017 г., 23:43
У меня была такая же проблема, но когда я добавил FireBase-Core версии 10.0.1, я получил:com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/common/api/zze.class Откат версии до 9.2.1 исправил ее. Спасибо за ваше сообщение!
 SjoerdvGestel30 сент. 2016 г., 15:29
у меня была другая проблема, но этот ответ сделал свое дело :) Ошибка: не удалось выполнить задачу ': app: transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: повторяющаяся запись: com / google / android / gms / common / api / zza.class
 Alexey21 февр. 2017 г., 11:07
Если бы я мог дать вам щедрость прямо сейчас, я бы сделал. Я потерял всякую надежду исправить это и наткнулся на ваш ответ.
 marcshilling06 дек. 2016 г., 22:09
Вау, спасибо. Я бы никогда не исправил это, не найдя этот ответ.

В моем случае я использовал это в 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'

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

Ваш ответ на вопрос