Дублируемая запись: 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 build:
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:
![введите описание изображения здесь]()
Но я не могу для жизни меня узнать, что вызывает это.
Ответы
Ответ 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'
И таким образом:
![введите описание изображения здесь]()
В качестве побочной заметки эта проблема заставила меня глубже заглянуть в управление зависимостями Gradle. Я написал обширное сообщение об устранении общих проблем с зависимостями.
Ответ 2
Проблема заключается в том, что вы используете оба плагина в файле 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
}
Ответ 3
В моем случае я использовал это в 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" ?), но на данный момент он исправляет ошибку в моем случае.
Ответ 4
java.util.zip.ZipException: дублирующаяся запись: com/google/firebase/iid/zzb.class
следуйте этой работе. Удалите текущую зависимость службы Google Play и перейдите в файл в настройке модуля выбора Android и выберите вкладку зависимости, нажмите на значок + и выберите зависимость lib после этого поиска в игровой службе в студии и добавьте ее