web-dev-qa-db-fra.com

Gradle: Erreur: plusieurs bibliothèques portant le nom de package "com.google.Android.gms"

Que veux dire ce message d'erreur? Je n'ai pas de packages dupliqués dans mon projet

Erreur: échec d'exécution pour la tâche ': SimpleReader: processDebugResources'.
Erreur: plusieurs bibliothèques portant le nom de package "com.google.Android.gms"
Vous pouvez désactiver temporairement cette erreur avec Android.enforceUniquePackageName = false Cependant, cela est temporaire et sera appliqué dans 1.0

Ma build.gradle ressemble à ça:

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

Dans mon cas, le problème était dû au fait que j'incluais:

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

à la fois les services de jeux portables et les habitués. J'ai commenté la partie portable, et cela fonctionne.
Je ne sais pas si j'en aurai besoin, mais il a été inclus par défaut par l'assistant de projet

34
Eduard Kotysh

aujourd'hui, j'ai rencontré le même problème. Je dois utiliser Google Analytics, donc j'importe la bibliothèque google analytics en suivant le tutoriel:

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

puis compile le projet, gradle dis moi Error: more than one library with package name 'com.google.Android.gms'

Je peux être sûr que je n'importerai directement que com.google.Android.gms une fois par google analytics lib.

donc je navigue vers l'onglet Project dans Android Studio pour voir de quelles bibliothèques dépend ce projet, puis j'ai trouvé play-services-6.5.87 afficher dans External Libraries, comme la capture d'écran suivante:

see External Libraries

alors maintenant je sais qu'il y a une autre lib dépend de play-services-6.5.87, mais je ne sais pas de quelle bibliothèque il s'agit.

puis j'utilise une commande gradle dans la console pour voir les dépendances du projet:

$ ./gradlew -q app:dependencies

gradle dependencies

le résultat me dit que com.facebook.Android:audience-network-sdk:4.6.0 en dépendent.

alors comment nous résolvons ce problème, de deux façons:

  1. si vous n'en avez pas besoin audience-network-sdk, il suffit de le supprimer. mon projet n'en a d'ailleurs pas besoin.
  2. si vous avez également besoin de audience-network-sdk et google-analytics, utilisation exclude group grammaire, comme le code d'extrait suivant.

    //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'
    

dans votre cas, le audience-network-sdk peut être n'importe quelle autre bibliothèque qui dépend de la même bibliothèque que d'autres bibliothèques. voici juste une réflexion sur la façon de résoudre des problèmes similaires.

16
Spark.Bao

Essayez de supprimer compile project(':libraries:googleplayservices') ou compile 'com.google.Android.gms:play-services:4.2.42'. Je suis presque sûr qu'il s'agit de la même bibliothèque.

7
Pieces

c'est un problème avec les versions. si vous avez plusieurs dépendances du même chemin de package, assurez-vous que les versions sont les mêmes

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

J'avais confondu avec ce problème pendant une longue période. Mon problème est peu différent avec la question même si le journal des erreurs. Je veux que le buildtype de ma sous-bibliothèque soit le même que le buildtype de mon application. J'ai donc assigné le buildtype pour sublib comme le document me l'indique. [Guide de l'utilisateur du plug-in Gradle] [1]

C'est l'erreur que j'ai eue.

traitement de flavourCustomResource

Erreur: plusieurs bibliothèques avec com.xxx.libCommon

Ceci est ma structure . lib1 et lib2 sont indépendantes l'une de l'autre.

app

-> lib1 -> libCommon

-> lib2 -> libCommon

J'ai obtenu l'erreur uniquement lorsque j'ai créé mon type de build personnalisé, mais la version finale était correcte.

Plus de détails. certaines parties de mon build.gradle

application:

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

Solution: configurez la lib2 comme lib1. le problème sera résolu.

lib2:

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

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

Raison

Le problème est lié à Publication de la bibliothèque

La publication par défaut est la version. Si lib2 n'est pas configurée, elle utilisera la publication par défaut libCommon (version de publication) qui est différente de lib1 -> libCommon (version personnalisée) assignée par build.gradle de lib1. Cela vient de l'erreur .

Je souhaite que mon message aide quelqu'un à lutter contre le même problème ou lui donne un indice.

1
Shengfeng Li

J'ai rencontré un problème similaire, je l'ai résolu en suivant les étapes suivantes:

  1. plateforme ionique rm Android

  2. plate-forme ionique ajouter Android

  3. construction ionique Android

1
Ganesh Raj