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') } 

Solutions Collecting From Web of "Gradle:错误:包名称不止一个库“com.google.android.gms”"

就我而言,问题是因为我包括:

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

可穿戴式播放服务和普通服务。 我评论了可穿戴部分,它的工作原理。
不知道是否需要它,但它是由项目向导默认包括

今天我遇到了同样的问题。 我需要使用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'

我可以肯定,我只能直接通过google analytics lib直接导入com.google.android.gms

所以我导航到Android Studio中的Project选项卡,看看这个项目所依赖的库,然后我发现External Libraries play-services-6.5.87显示,如下面的截图:

请参阅外部库

所以现在我知道还有另外一个依赖于play-services-6.5.87 lib,但是我没有那个lib。

那么我在控制台中使用gradle命令来查看项目依赖关系:

 $ ./gradlew -q app:dependencies 

gradle依赖关系

结果告诉我, com.facebook.android:audience-network-sdk:4.6.0 : com.facebook.android:audience-network-sdk:4.6.0 : 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' 

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

尝试移除compile project(':libraries:googleplayservices')compile 'com.google.android.gms:play-services:4.2.42' 。 我很确定他们是同一个图书馆。

这是版本的问题。 如果您具有相同包path的多个依赖项,请确保版本相同

 compile 'com.google.android.gms:play-services-ads:8.4.0' compile 'com.google.android.gms:play-services-gcm:8.4.0' 

我很长时间以来一直与这个问题混淆。我的问题与通过相同的错误日志的问题有点不同。 我想我的sublib的构buildtypes与我的应用程序的构buildtypes相同。 所以我给这个文档告诉我分配了sublib的buildtype。 [Gradle插件用户指南] [1]

这是我得到的错误。

处理flavorCustomResource

错误:多个库与com.xxx.libCommon

这是我的结构 。 lib1和lib2是相互独立的。

应用

– > lib1 – > libCommon

– > lib2 – > libCommon

只有当我构build我的自定义构buildtypes时,我得到了错误。但是,发行版本是好的。

更多细节。 我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') } 

解决scheme:将lib2configuration为lib1。 问题就解决了。

LIB2:

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

原因

问题是关于图书馆出版物

默认发布是发布。 如果没有configurationlib2,它将使用与lib1的build.gradle分配的lib1 – > libCommon(定制版本)不同的缺省发布libCommon(发行版)。这是错误。

我希望我的post能够帮助别人解决同样的问题,或者给他/她一些提示。

我面临类似的问题,我通过以下步骤解决了问题:

  1. 离子平台rm android

  2. 离子平台添加android

  3. 离子构buildandroid