web-dev-qa-db-ja.com

Gradle:エラー:パッケージ名が 'com.google.Android.gms'のライブラリが複数あります

このエラーメッセージはどういう意味ですか?プロジェクトに重複したパッケージはありません

エラー:タスク ':SimpleReader:processDebugResources'の実行に失敗しました。
エラー:パッケージ名「com.google.Android.gms」のライブラリが複数あります
Android.enforceUniquePackageName = falseでこのエラーを一時的に無効にできますが、これは一時的なものであり、1.0で実施されます

僕の build.gradleは次のようになります。

buildscript {

    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
        mavenCentral()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:0.9.1'
    }
}
apply plugin: 'Android'
Android {
    buildToolsVersion '19.0.3'
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 17

    }
    compileSdkVersion 17
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    buildTypes {
    }
}
dependencies {
    compile 'com.Android.support:support-v4:19.0.1'
    compile 'com.google.Android.gms:play-services:4.2.42'
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/httpmime-4.1.jar')
    compile files('libs/httpclient-4.1.1.jar')
    compile files('libs/jsoup-1.7.3.jar')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:sherlocknavigationdrawer')
    compile project(':libraries:googleplayservices')
    compile project(':libraries:androidslidinguppanel')
    compile files('libs/protocol-1.0.4.jar')
    compile files('libs/sentry-0.1.4.jar')
    compile files('libs/commons-lang-2.3.jar')
}
33
a.black13

私の場合、問題は次のものが含まれていたためです。

compile 'com.google.Android.gms:play-services-wearable:+'
compile 'com.google.Android.gms:play-services:4.4.52'

ウェアラブルプレイサービスとレギュラーの両方。ウェアラブル部分をコメントアウトしましたが、機能します。
必要かどうかはわかりませんが、プロジェクトウィザードによってデフォルトで含まれていました。

34
Eduard Kotysh

今日、私は同じ問題に出会いました。 Google Analyticsを使用する必要があるため、チュートリアルに従ってGoogle Analyticsライブラリをインポートします。

compile 'com.google.Android.gms:play-services-analytics:9.0.0'

その後、プロジェクトをコンパイルすると、gradleがError: more than one library with package name 'com.google.Android.gms'を教えてくれます

com.google.Android.gms libでgoogle analyticsを直接インポートするのは1回だけであることは間違いなく確認できます。

Android StudioのProjectタブに移動して、このプロジェクトが依存するライブラリを確認し、play-services-6.5.87External Librariesに表示されていることを確認しました。次のスクリーンショットのように:

see External Libraries

そのため、play-services-6.5.87に依存する別のライブラリがあることがわかりましたが、どのライブラリであるかはわかりません。

次に、コンソールでgradleコマンドを使用して、プロジェクトの依存関係を確認します。

$ ./gradlew -q app:dependencies

gradle dependencies

その結果、com.facebook.Android:audience-network-sdk:4.6.0がそれに依存していることがわかります。

この問題をどのように修正するか、2つの方法:

  1. このaudience-network-sdkが必要ない場合は、削除してください。私のプロジェクトは実際にはそれを必要としません。
  2. audience-network-sdkgoogle-analyticsも必要な場合は、次のスニペットコードのように、exclude group文法を使用してください。

    //facebook SDK
    compile ('com.facebook.Android:audience-network-sdk:4.6.0') 
            {exclude group: 'com.google.Android.gms'}
    
    // google analytics
    compile 'com.google.Android.gms:play-services-analytics:9.0.0'
    

あなたの場合、audience-network-sdkは、他のライブラリと同じライブラリに依存する他のライブラリにすることができます。ここでは、同様の問題を解決する方法を考えています。

16
Spark.Bao

compile project(':libraries:googleplayservices')またはcompile 'com.google.Android.gms:play-services:4.2.42'を削除してみてください。それらが同じライブラリであると確信しています。

7
Pieces

これはバージョンの問題です。同じパッケージパスの依存関係が複数ある場合は、バージョンが同じであることを確認してください

compile 'com.google.Android.gms:play-services-ads:8.4.0'
compile 'com.google.Android.gms:play-services-gcm:8.4.0'
1
DevZer0

私は長い間この問題と混同していました。私のエラーは同じエラーログでも質問とは少し異なります。サブライブラリのビルドタイプをアプリケーションのビルドタイプと同じにする必要があります。そのため、ドキュメントに示されているように、sublibにbuildtypeを割り当てました。 [Gradleプラグインユーザーガイド] [1]

これは私が得たエラーです。

flavorCustomResourceの処理

エラー:com.xxx.libCommonを持つ複数のライブラリ

これは私のstructureです。 lib1とlib2は互いに独立しています。

アプリ

-> lib1-> libCommon

-> lib2-> libCommon

カスタムビルドタイプをビルドしたときにのみエラーが発生しましたが、リリースバージョンは問題ありませんでした。

詳細私のbuild.gradleの一部

アプリ:

Android {
    buildTypes {
        release{}
        custom{}
    }
}
configurations {
    flavorReleaseCompile
    flavorCustomCompile
}
dependencies{
    compile project(':lib1')
    flavorReleaseCompile project(path: ':lib2', configuration: ':release')
    flavorCustomCompile project(path: ':lib2', configuration: ':custom')
}

lib1:

Android {
    publishNonDefault true
    buildTypes {
        release{}
        custom{}
    }
}

dependencies{
    releaseCompile project(path: ':libCommon', configuration: ':release')
    customCompile project(path: ':libCommon', configuration: ':custom')
}

lib2

dependencies {
    compile project(':libCommon')
}

解決策: lib2をlib1として設定します。問題は解決されます。

lib2:

Android {
    publishNonDefault true
    buildTypes {
        release{}
        custom{}
    }
}

dependencies{
    releaseCompile project(path: ':libCommon', configuration: ':release')
    customCompile project(path: ':libCommon', configuration: ':custom')
}

Reason

問題はLibrary Publicationに関するものです

デフォルトの公開はリリースです。lib2が設定されていない場合、lib1のbuild.gradleによって割り当てられたlib1-> libCommon(カスタムバージョン)とは異なるデフォルトの公開libCommon(リリースバージョン)が使用されます。 。

私の投稿が誰かが同じ問題に苦しんでいるのを助けるか、彼/彼女に何らかのヒントを与えることを望みます。

1
Shengfeng Li

私は同様の問題に直面し、次の手順で解決しました:

  1. イオンプラットフォームrm Android

  2. イオンプラットフォームはAndroidを追加します

  3. イオンビルドAndroid

1
Ganesh Raj