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')
}
Ответы
Ответ 1
В моем случае проблема заключалась в том, что я включал:
compile 'com.google.android.gms:play-services-wearable:+'
compile 'com.google.android.gms:play-services:4.4.52'
как носимые игровые сервисы, так и обычные.
Я прокомментировал износостойкую часть, и она работает.
Не уверен, что он мне понадобится, но он по умолчанию был включен мастером проекта
Ответ 2
сегодня я столкнулся с той же проблемой. Мне нужно использовать 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
один раз google analytics
lib.
поэтому я перехожу на вкладку Project
в Android Studio, чтобы узнать, на что зависят эти проекты, а затем нашел play-services-6.5.87
display в External Libraries
, например, следующий снимок экрана:
![см. Внешние библиотеки]()
так что теперь я знаю, что существует другая lib, зависящая от play-services-6.5.87
, но я не делаю этого lib.
то я использую команду gradle в консоли для просмотра зависимостей проекта:
$ ./gradlew -q app:dependencies
![gradle зависимости]()
результат говорит мне, что com.facebook.android:audience-network-sdk:4.6.0
зависит от него.
так как мы исправим эту проблему, двумя способами:
- если вам не нужен этот
audience-network-sdk
, просто удалите его. мой проект на самом деле не нуждается.
-
если вам также нужны audience-network-sdk
и google-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
может быть любой другой lib, которая зависит от того же самого lib с другими libs. вот просто размышление о том, как разрешать подобные проблемы.
Ответ 3
Попробуйте удалить compile project(':libraries:googleplayservices')
или compile 'com.google.android.gms:play-services:4.2.42'
. Я уверен, что они одна и та же библиотека.
Ответ 4
Это проблема с версиями. если у вас несколько зависимостей одного и того же пути пакета, убедитесь, что версии одинаковы
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
Ответ 5
Я долгое время смущался этой проблемой. Моя проблема немного отличается от вопроса, хотя тот же журнал ошибок. Я хочу, чтобы мой sublib buildtype был таким же с моим приложением buildtype. Поэтому я назначил buildtype для sublib, как сообщает мне документ.
[ Gradle Руководство пользователя плагина] [1]
Это ошибка, которую я получил.
обработка flavorCustomResource
Ошибка: более одной библиотеки с com.xxx.libCommon
Это моя структура. lib1 и lib2 не зависят друг от друга.
app
- > lib1 → libCommon
- > lib2 → libCommon
Я получил ошибку только тогда, когда я создаю свой собственный buildtype.However, версия выпуска была Ok.
Подробнее. некоторые части моего 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')
}
Причина
Проблема заключается в публикации в библиотеке
Публикация по умолчанию - это выпуск. если lib2 не настроен, он будет использовать опубликованную по умолчанию libCommon (версия выпуска) по умолчанию, отличную от lib1 → libCommon (пользовательская версия), назначенная lib1 build.gradle.This появляется ошибка.
Я хочу, чтобы мой пост помог кому-то бороться с тем же вопросом или дать ему некоторый намек.
Ответ 6
Я столкнулся с аналогичной проблемой, я решил ее решить следующими шагами: