Gradle:错误:包含名称为"com.google.android.gms"的多个库

a.b*_*k13 33 android gradle build.gradle android-gradle-plugin

这个错误信息是什么意思?我的项目中没有重复的包

错误:任务':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')
}
Run Code Online (Sandbox Code Playgroud)

Edu*_*ysh 34

在我的情况下,问题是因为我包括:

compile 'com.google.android.gms:play-services-wearable:+'
compile 'com.google.android.gms:play-services:4.4.52'
Run Code Online (Sandbox Code Playgroud)

可穿戴式游戏服务和常规服务.我评论了可穿戴部分,它起作用了.
不确定我是否需要它,但项目向导默认包含它


Spa*_*Bao 16

今天我遇到了同样的问题.我需要使用Google Analytics,因此我按照教程导入google analytics lib:

compile 'com.google.android.gms:play-services-analytics:9.0.0'
Run Code Online (Sandbox Code Playgroud)

然后编译项目,gradle告诉我 Error: more than one library with package name 'com.google.android.gms'

我绝对可以肯定我只能com.google.android.gms通过google analyticslib 直接导入一次.

所以我导航到ProjectAndroid Studio中的标签,看看这个项目所依赖的库是什么,然后我找到了play-services-6.5.87显示External Libraries,如下面的截图:

请参阅外部库

所以现在我知道还有另一个lib依赖play-services-6.5.87,但我不知道它是哪个lib.

然后我在控制台中使用gradle命令来查看项目依赖项:

$ ./gradlew -q app:dependencies
Run Code Online (Sandbox Code Playgroud)

gradle依赖

结果告诉我com.facebook.android:audience-network-sdk:4.6.0依赖它.

那么我们如何解决这个问题,两种方式:

  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'
    
    Run Code Online (Sandbox Code Playgroud)

在你的情况下,audience-network-sdk可以是任何其他lib依赖于与其他lib相同的lib.这里只是思考如何解决类似的问题.


Pie*_*ces 7

尝试删除compile project(':libraries:googleplayservices')compile 'com.google.android.gms:play-services:4.2.42'.我很确定它们是同一个库.

  • 我找到了解决方案 我只是从编译'com.google.android.gms:play-services:4.2.42'改变gms play-service编译来编译'com.google.android.gms:play-services:4.3.23' build.gradle发帖后我明白问题出在build.gradle文件中.非常感谢!+1 (2认同)