我有一个使用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之上添加:
但我不能为我的生活找出导致这种情况的原因。
答案 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'
因此:
作为旁注,这个问题让我更深入地了解了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服务并添加它