react-native-firestack icon indicating copy to clipboard operation
react-native-firestack copied to clipboard

Getting the error “duplicate entry: com/google/android/gms/internal/zzble.class” when trying to add the package

Open THPubs opened this issue 7 years ago • 13 comments

Hi, I'm trying to add the this 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'
}

THPubs avatar Mar 03 '17 13:03 THPubs

I have the same problem

acerbetti avatar Mar 08 '17 01:03 acerbetti

Removing compile 'com.google.android.gms:play-services-base:+'

from build.gradle fixed it for me

acerbetti avatar Mar 08 '17 02:03 acerbetti

Did anybody manage to solve this?

skizzo avatar Mar 09 '17 11:03 skizzo

@acerbetti Doing that only didn't helped in my case :-(

THPubs avatar Mar 09 '17 12:03 THPubs

@acerbetti's solution worked for me, I just had to remove this line from node_modules/react-native-firestack/android/build.gradle and it started working again:

compile 'com.google.android.gms:play-services-base:+'

But remove that line from a node_modules package by hand everytime you install the dependencies is not a definitive solution, so I wrote this postinstall npm script:

fs = require('fs');

const FIRESTACK_GRADLE_FILE = 'node_modules/react-native-firestack/android/build.gradle';

fs.readFile(FIRESTACK_GRADLE_FILE, 'utf-8', (err, data) => {
  if (err) {
    throw err;
  }

  let fileLines = data.split('\n');

  lastIndex = (() => {
    for (let i = fileLines.length - 1; i > -1; i--) {
      if (fileLines[i].match('compile \'com.google.android.gms:play-services-base')) {
        return i;
      }
    }
  })();

  delete fileLines[lastIndex];

  fs.writeFile(FIRESTACK_GRADLE_FILE, fileLines.join('\n'), (err, data) => {
    if (err) {
      return console.log(err);
    }

    console.log('Firestack dependence fixed.');
  });
});

Of course, you have to add this line to the package.json in order to ask npm to run it everytime you finish installing a package:

  "scripts": {
    "postinstall": "node fix-firestack.js"
  }

Dummy but it worked.

rodrigocurbelo avatar Mar 09 '17 13:03 rodrigocurbelo

What do we need that package for? Can we just simple do a PR to remove it from the project ?

@rodrigocurbelo thanks for the script, it works for me

acerbetti avatar Mar 09 '17 15:03 acerbetti

Removing the dependency in the module did not result in a compiled build. Is there another workaround for this? I cannot even run a successful build.

studiobrain avatar Mar 13 '17 23:03 studiobrain

^ follow up from earlier. I build a new react-native app and added only this module with the above: compile 'com.google.android.gms:play-services-base:+' removed and it compiled without error.

studiobrain avatar Mar 13 '17 23:03 studiobrain

Downgrade to [email protected] with build.gradle :

compile 'com.google.firebase:firebase-database:10.2.0'
compile 'com.google.firebase:firebase-auth:10.2.0'

fixed it for me

bltnico avatar Mar 22 '17 16:03 bltnico

This happens when you have multiple packages requiring different versions of play services. The best way to fix is to make your build.gradle look similar to this

    compile(project(':react-native-firestack')){
        exclude group: 'com.google.android.gms'
        exclude group: "com.google.firebase"
    }

    // your other libraries with similar exclude lines

    compile ("com.google.android.gms:play-services-base:10.0.1") {
        force = true;
    }
    compile ('com.google.firebase:firebase-core:10.0.1') {
        force = true;
    }
    compile ('com.google.firebase:firebase-auth:10.0.1') {
        force = true;
    }
    compile ('com.google.firebase:firebase-analytics:10.0.1') {
        force = true;
    }
    compile ('com.google.firebase:firebase-database:10.0.1') {
        force = true;
    }
    compile ('com.google.firebase:firebase-storage:10.0.1') {
        force = true;
    }
    compile ('com.google.firebase:firebase-messaging:10.0.1') {
        force = true;
    }

cridenour avatar Mar 29 '17 23:03 cridenour

In my case the problem was with react-native-maps and the @cridenour solution has worked for me.

Reactive-native-maps has the same solution in its web.

My build.gradle looks like this:

.....
dependencies {
    compile(project(':react-native-firestack')){
           exclude group: 'com.google.android.gms', module: 'play-services-base'
           exclude group: 'com.google.android.gms', module: 'play-services-maps'
       }
    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-maps')){
           exclude group: 'com.google.android.gms', module: 'play-services-base'
           exclude group: 'com.google.android.gms', module: 'play-services-maps'
       }
   compile 'com.google.android.gms:play-services-base:10.0.1'
   compile 'com.google.android.gms:play-services-maps:10.0.1'
}
....

ghost avatar Apr 16 '17 14:04 ghost

This error is mainly encountered when you have different versions of a particular service. for example:

'com.google.android.gms:play-services-maps:11.0.4'
'compile 'com.google.android.gms:play-services-geo-location:10.0.1'
'compile 'com.google.android.gms:play-services-analytics:13.0.2'

Hope i solved your problem. Thank you!

codewithraqib avatar Oct 22 '17 09:10 codewithraqib

Just use implementation 'com.google.android.gms:play-services:12.0.1' Hope this solved your problem. Thank you!

Sanaebadi97 avatar Aug 20 '19 19:08 Sanaebadi97