重复输入:com / google / firebase / FirebaseApiNotAvailableException.class

时间:2016-07-26 16:23:03

标签: android firebase react-native android-gradle google-play-services

我有一个使用React-Native构建的Android项目,并使用Google Play服务(分析,云消息,广告)。我没有在任何地方明确使用Firebase。

尝试从8.4.0升级Play服务=> 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服务中(since 9.0),所以我想其他的东西正在编译并链接到旧版本。 所以看一下依赖洞察力(gradle -q dependencyInsight --configuration compile --dependency firebase),我注意到firebase-common 9.0.0正在9.2.1之上添加:

enter image description here

但我不能为我的生活找出导致这种情况的原因。

4 个答案:

答案 0 :(得分:23)

嗯 - 罪魁祸首是React-Native。

提示是Gradle控制台上显示的这条不起眼的线:

  

google-services插件无法检测到任何版本   com.google.android.gms或com.google.firebase,默认版本:9.0.0   将被使用。

修复?通过在build.gradle中添加以下行,强制RN库项目与正确的Firebase版本链接:

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

因此:

enter image description here

作为旁注,这个问题让我更深入地了解了gradle依赖管理。我写了extensive post about resolving common dependency issues

答案 1 :(得分:1)

问题是您使用build.gradle文件中的两个插件 所以删除一个Google Play服务插件,例如

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
}

答案 2 :(得分:0)

在我的情况下,我在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'

当然"游戏服务"是完整的捆绑,而不是一个优化的方式来做到这一点。最好指定所需的特定服务(阅读Does "play-services:9.8.0" include "play-services-location:9.8.0"?),但现在它修复了我的错误。

答案 3 :(得分:0)

java.util.zip.ZipException: duplicate entry: com/google/firebase/iid/zzb.class

按照它的工作。删除你当前的google play服务依赖项并转到android Studio select模块设置中的文件,然后选择依赖选项卡点击+ icon并选择lib依赖项,然后在studio中搜索你的play服务并添加它