Gradle:错误:包名为“com.google.android.gms”的库不止一个
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23494872/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Gradle: Error: more than one library with package name 'com.google.android.gms'
提问by a.black13
What does this error message mean? I don't have duplicated packages in my project
这个错误信息是什么意思?我的项目中没有重复的包
Error:Execution failed for task ':SimpleReader:processDebugResources'.
Error: more than one library with package name 'com.google.android.gms'
You can temporarily disable this error with android.enforceUniquePackageName=false However, this is temporary and will be enforced in 1.0
错误:任务“:SimpleReader:processDebugResources”的执行失败。
错误:包名为“com.google.android.gms”的多个库
您可以使用 android.enforceUniquePackageName=false 暂时禁用此错误 但是,这是暂时的,将在 1.0 中强制执行
My build.gradle
looks like this:
我的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')
}
回答by Eduko
In my case, the problem was because I was including:
就我而言,问题是因为我包括:
compile 'com.google.android.gms:play-services-wearable:+'
compile 'com.google.android.gms:play-services:4.4.52'
both the wearable play services, and the regular.
I commented out the wearable part, and it works.
Not sure if I'll need it, but it was included by default by the project wizard
可穿戴游戏服务和常规服务。我注释掉了可穿戴部分,它起作用了。
不确定我是否需要它,但它默认包含在项目向导中
回答by Spark.Bao
today I met the same problem. I need to use Google Analytics, so I import google analytics lib following the tutorial:
今天我遇到了同样的问题。我需要使用谷歌分析,所以我按照教程导入谷歌分析库:
compile 'com.google.android.gms:play-services-analytics:9.0.0'
then compile the project, gradle tell me Error: more than one library with package name 'com.google.android.gms'
然后编译项目,gradle 告诉我 Error: more than one library with package name 'com.google.android.gms'
I can definitely sure that I only directly import com.google.android.gms
one time by google analytics
lib.
我可以肯定的是,我只com.google.android.gms
通过google analytics
lib直接导入了一次。
so I navigate to Project
tab in Android Studio to see what are the libs this project depend on, then I found play-services-6.5.87
display in External Libraries
, like following screenshot:
所以我导航到Project
Android Studio 中的选项卡以查看此项目所依赖的库是什么,然后我在 中找到了play-services-6.5.87
显示External Libraries
,如下图所示:
so now I know there is another lib depend on play-services-6.5.87
, but I don't which lib it is.
所以现在我知道还有另一个库依赖于play-services-6.5.87
,但我不知道它是哪个库。
then I use a gradle command in console to see the project dependencies:
然后我在控制台中使用 gradle 命令来查看项目依赖项:
$ ./gradlew -q app:dependencies
the result tells me that com.facebook.android:audience-network-sdk:4.6.0
depend on it.
结果告诉我,com.facebook.android:audience-network-sdk:4.6.0
取决于它。
so how we fix this problem, two way:
那么我们如何解决这个问题,有两种方式:
- if you don't need this
audience-network-sdk
, just remove it. my project in fact doesn't need it. if you also need
audience-network-sdk
andgoogle-analytics
, useexclude group
grammar, like following snippet code.//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
,只需将其删除。我的项目实际上不需要它。 如果您还需要
audience-network-sdk
andgoogle-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'
in your case, the audience-network-sdk
can be any other lib that depends on same lib with other libs. here is just a thinking of how to resolve similar problems.
在您的情况下,audience-network-sdk
可以是任何其他依赖于与其他库相同的库的库。这里只是想一下如何解决类似的问题。
回答by Pieces
Try removing compile project(':libraries:googleplayservices')
or compile 'com.google.android.gms:play-services:4.2.42'
. I am pretty sure they are the same library.
尝试删除compile project(':libraries:googleplayservices')
或compile 'com.google.android.gms:play-services:4.2.42'
。我很确定它们是同一个库。
回答by Ganesh Raj
I faced similar issue, i got it resolved by following steps:
我遇到了类似的问题,我通过以下步骤解决了它:
ionic platform rm android
ionic platform add android
ionic build android
离子平台rm android
离子平台添加android
离子构建安卓
回答by DevZer0
this is a problem with versions. if you have multiple dependencies of same package path ensure the versions are the same
这是版本的问题。如果您有相同包路径的多个依赖项,请确保版本相同
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
回答by Shengfeng Li
I had confused with this problem for a long time.My issue is little different with the question though same error log. I want my sublib's buildtype same with my application's buildtype. So I assigned the buildtype for sublib as the document tells me. [Gradle Plugin User Guide][1]
我对这个问题困惑了很长时间。尽管相同的错误日志,我的问题与问题几乎没有什么不同。我希望我的 sublib 的构建类型与我的应用程序的构建类型相同。所以我按照文档告诉我的那样为 sublib 分配了构建类型。[Gradle 插件用户指南][1]
This the error I got.
这是我得到的错误。
processing flavorCustomResource
加工风味自定义资源
Error: more than one library with com.xxx.libCommon
错误:com.xxx.libCommon 有多个库
This is my structure. lib1 and lib2 are independent of each other.
这是我的结构。lib1 和 lib2 是相互独立的。
app
应用程序
-> lib1 -> libCommon
-> lib1 -> libCommon
-> lib2 -> libCommon
-> lib2 -> libCommon
I got the error only when I build my custom buildtype.However, The release version was Ok.
我只有在构建自定义构建类型时才会收到错误。但是,发布版本还可以。
More details.some parts of my build.gradle
更多细节。我的 build.gradle 的某些部分
app:
应用程序:
android {
buildTypes {
release{}
custom{}
}
}
configurations {
flavorReleaseCompile
flavorCustomCompile
}
dependencies{
compile project(':lib1')
flavorReleaseCompile project(path: ':lib2', configuration: ':release')
flavorCustomCompile project(path: ':lib2', configuration: ':custom')
}
lib1:
库1:
android {
publishNonDefault true
buildTypes {
release{}
custom{}
}
}
dependencies{
releaseCompile project(path: ':libCommon', configuration: ':release')
customCompile project(path: ':libCommon', configuration: ':custom')
}
lib2
库2
dependencies {
compile project(':libCommon')
}
Solution:configure the lib2 as lib1. the problem will be solved.
解决方法:将lib2配置为lib1。问题将得到解决。
lib2:
库2:
android {
publishNonDefault true
buildTypes {
release{}
custom{}
}
}
dependencies{
releaseCompile project(path: ':libCommon', configuration: ':release')
customCompile project(path: ':libCommon', configuration: ':custom')
}
Reason
原因
The problem is something about Library Publication
问题出在图书馆出版方面
The default publish is release. if lib2 is not configured, it will use the default publish libCommon(release version) which is different from lib1 -> libCommon(custom version) assigned by lib1's build.gradle.This comes the error.
默认发布是发布。如果未配置 lib2,它将使用与 lib1 的 build.gradle 分配的 lib1 -> libCommon(自定义版本) 不同的默认发布 libCommon(release version)。这是错误。
I wish my post will help someone struggle with the same issue or give some hint to him/her.
我希望我的帖子能帮助有人解决同样的问题或给他/她一些提示。