web-dev-qa-db-ja.com

パッケージを追加しようとしたときにエラー「重複エントリ:com / google / Android / gms / internal / zzble.class」が表示される

react-native-firestackパッケージをアプリに追加しようとしています。しかし、次のエラーを出し続けます:

: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.

いくつかのパッケージでexclude groupにいくつかのパッケージを追加しようとしました。しかし、どれも機能しませんでした。 ./gradlew clean :app:dependenciesの結果は次のとおりです。 https://Gist.github.com/THPubs/8fe8b4b9c80e3c6cd49541d66887c742

他の同様のスタックオーバーフローの質問に従うことを試みましたが、このパッケージには多くの依存関係があるようです。競合を見つけることができませんでした。

私のbuild.gradle依存関係:

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'
}
16
THpubs

すべてのGoogle Play開発者サービスライブラリで同じバージョンを使用していることを確認してください。例:

     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'
}
14
DoronK

依存関係が次の場合、今日このエラーが発生しました。

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'

しかし、最後の依存関係を次のように変更すると、なくなりました。

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'

したがって、必ず同じバージョンの依存関係を使用してください。つまり、サポートライブラリは同じバージョンである必要があり、FirebaseとGoogle Playの依存関係についても同じことが言えます。

4
Purujit Bansal

これをbuild.gradleに追加し、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"
                }
            }
        }
    }
}
0
lance-java

きっとapply plugin: 'com.google.gms.google-services' build.gradleファイルのどこか、おそらく一番上。

この行は、依存関係ブロックの後でなければなりません-これにより、プラグインは、使用しているPlayサービスのバージョンを決定できます。

詳細については、 https://firebase.google.com/docs/Android/setup#add_the_sdk を参照してください。

あなたの場合、次のようになります。

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'
0
cpienovi

これが最善の修正かどうかはわかりませんが、/ node_modules/react-native-firestack/Android/build.gradleに移動して10.0.1をすべて10.2.0に置き換えることで問題を回避できます。次に、自分のAndroid/build.gradleのすべての場所で10.2.0を使用するようにします。

0
steffeydev

Build.gradleに以下を追加するだけです

    Android {
            configurations {
            all*.exclude module: 'play-services-awareness'
            }
    }
0
nanev1976