问题
I'm trying to add the react-native-firestack
package to my app. But it keeps giving the following error :
:app:mergeDebugResources UP-TO-DATE
:app:recordFilesBeforeBundleCommandDebug
:app:bundleDebugJsAndAssets SKIPPED
:app:generateBundledResourcesHashDebug
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:incrementalDebugJavaCompilationSafeguard UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:transformClassesWithJarMergingForDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/internal/zzble.class
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 2.498 secs
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment.
Go to https://facebook.github.io/react-native/docs/getting-started.html
and check the Android tab for setup instructions.
I tried to add some packages to exclude group
in several packages. But none worked. Here's the ./gradlew clean :app:dependencies
result: https://gist.github.com/THPubs/8fe8b4b9c80e3c6cd49541d66887c742
Tried to follow other similar stack overflow question but looks like this package has a lot of dependencies. I was unable to find the conflict.
My build.gradle
dependencies:
dependencies {
compile(project(":react-native-firestack"))
compile project(':react-native-onesignal')
compile project(':react-native-fbsdk')
compile project(':react-native-share')
compile project(':react-native-video')
compile project(':react-native-uuid-generator')
compile project(':react-native-udp')
compile project(':react-native-tcp')
compile project(':react-native-camera')
compile project(':react-native-contacts')
compile project(':react-native-linear-gradient')
compile project(':react-native-vector-icons')
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
compile project(':react-native-image-picker')
compile(project(":react-native-google-signin")){
exclude group: "com.google.android.gms" // very important
}
compile 'com.google.android.gms:play-services-auth:10.2.0'
compile 'com.google.firebase:firebase-crash:10.0.1'
}
回答1:
Make sure you use the same version in all your google play services libs: For example :
compile "com.google.firebase:firebase-core:$project.ext.googlePlayServicesVersion"
compile "com.google.firebase:firebase-auth:$project.ext.googlePlayServicesVersion"
compile "com.google.firebase:firebase-database:$project.ext.googlePlayServicesVersion"
project.ext {
googlePlayServicesVersion = '10.2.0'
}
回答2:
I got this error today when my dependencies were the following:
compile 'com.google.firebase:firebase-auth:10.2.0'
compile 'com.google.android.gms:play-services-auth:10.2.0'
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:design:25.2.0'
compile 'com.google.firebase:firebase-database:10.0.1'
But it went away when I changed the last dependency to the following:
compile 'com.google.firebase:firebase-auth:10.2.0'
compile 'com.google.android.gms:play-services-auth:10.2.0'
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:design:25.2.0'
compile 'com.google.firebase:firebase-database:10.2.0'
So make sure you use dependencies with same versions. That is the support libraries should have same version, and same goes for Firebase and Google Play dependencies.
回答3:
I'm sure you have apply plugin: 'com.google.gms.google-services'
somewhere in your build.gradle file, probably on top.
This line has to be after dependencies block - this allows the plugin to determine what version of Play services you are using.
You can refer to https://firebase.google.com/docs/android/setup#add_the_sdk for more information.
In your case it should look like this:
dependencies {
compile(project(":react-native-firestack"))
compile project(':react-native-onesignal')
compile project(':react-native-fbsdk')
compile project(':react-native-share')
compile project(':react-native-video')
compile project(':react-native-uuid-generator')
compile project(':react-native-udp')
compile project(':react-native-tcp')
compile project(':react-native-camera')
compile project(':react-native-contacts')
compile project(':react-native-linear-gradient')
compile project(':react-native-vector-icons')
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
compile project(':react-native-image-picker')
compile(project(":react-native-google-signin")){
exclude group: "com.google.android.gms" // very important
}
compile 'com.google.android.gms:play-services-auth:10.2.0'
compile 'com.google.firebase:firebase-crash:10.0.1'
}
// after dependencies block
apply plugin: 'com.google.gms.google-services'
回答4:
I'm not sure if this is the best fix, but I can get past the problem by going into /node_modules/react-native-firestack/android/build.gradle and replacing all of the 10.0.1 with 10.2.0, and then making sure I use 10.2.0 everywhere in my own android/build.gradle.
回答5:
Just add following in your build.gradle
android {
configurations {
all*.exclude module: 'play-services-awareness'
}
}
回答6:
Add this to your build.gradle and run gradle findDuplicates
task findDuplicates {
doLast {
def findMe = 'com/google/android/gms/internal/zzble.class'
configurations.compile.asFileTree.matching {
include '**/*.jar'
}.files.each { File jarFile ->
zipTree(jarFile).visit { FileVisitDetails fvd ->
if (fvd.path == findMe) {
println "Found $findMe in $jarFile.name"
}
}
}
}
}
来源:https://stackoverflow.com/questions/42580096/getting-the-error-duplicate-entry-com-google-android-gms-internal-zzble-class