Problème de compilation avec Android Studio 3.0 (impossible de choisir entre des configurations)

Problème avec la version 3.0 la plus récente (version bêta 2) Mon projet a un sous-module par une tierce partie, donc je n’ai access qu’à leur build.gradle.

Mon projet a 3 saveurs, snap, uat, production. Chacun a 2 types de build, debug et release. Quand j’essaie de construire, je reçois ça.

Error:Cannot choose between the following configurations of project :lp_messaging_sdk: - debugApiElements - debugRuntimeElements - releaseApiElements - releaseRuntimeElements All of them match the consumer atsortingbutes: - Configuration 'debugApiElements': - Found com.android.build.api.atsortingbutes.BuildTypeAttr 'debug' but wasn't required. - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required. - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required. - Found org.gradle.api.atsortingbutes.Usage 'java-api' but wasn't required. - Configuration 'debugRuntimeElements': - Found com.android.build.api.atsortingbutes.BuildTypeAttr 'debug' but wasn't required. - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required. - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required. - Found org.gradle.api.atsortingbutes.Usage 'java-runtime' but wasn't required. - Configuration 'releaseApiElements': - Found com.android.build.api.atsortingbutes.BuildTypeAttr 'release' but wasn't required. - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required. - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required. - Found org.gradle.api.atsortingbutes.Usage 'java-api' but wasn't required. - Configuration 'releaseRuntimeElements': - Found com.android.build.api.atsortingbutes.BuildTypeAttr 'release' but wasn't required. - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required. - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required. - Found org.gradle.api.atsortingbutes.Usage 'java-runtime' but wasn't required. 

J’ai lu qu’il y avait des problèmes avec les sous-modules et les types de construction, mais ensuite il a été corrigé. Vous deviez append les mêmes types de construction ou quelque chose aux sous-modules build.gradle, puis append

 buildTypeMatching 'debug', 'release' 

Lorsque je fais cela, cependant, je reçois cette erreur,

 Error:Could not select value from candidates [debug, release] using AlternateDisambiguationRule.BuildTypeRule. apply plugin: 'com.android.application' android { repositories { flatDir { dirs project(':lp_messaging_sdk').file('aars') } } // Android parameters comstackSdkVersion = 26 buildToolsVersion = '26.0.1' comstackOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } dexOptions { preDexLibraries true } defaultConfig { minSdkVersion 19 versionName buildName versionCode buildVersion multiDexEnabled true resConfigs "en", "fr", "fr-rCA" } signingConfigs { release { } } flavorDimensions "default" productFlavors { snap { ext.betaDissortingbutionGroupAliases = "INTERNAL" ext.betaDissortingbutionReleaseNotesFilePath = 'changelog.txt' ext.betaDissortingbutionNotifications = true dimension "default" } uat { ext.betaDissortingbutionGroupAliases = "INTERNAL" ext.betaDissortingbutionNotifications = true } production { } } buildTypes { debug { versionNameSuffix createVersionNameSuffix() applicationIdSuffix '.debug' minifyEnabled true testCoverageEnabled false buildConfigField "Ssortingng", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"' // Workaround for : https://code.google.com/p/android/issues/detail?id=212882 proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray() ext.enableCrashlytics = false } release { versionNameSuffix createVersionNameSuffix() minifyEnabled true testCoverageEnabled = false signingConfig signingConfigs.release buildConfigField "Ssortingng", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"' // Workaround for : https://code.google.com/p/android/issues/detail?id=212882 proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray() } } //Used to ignore duplicated ensortinges added to meta-inf packagingOptions { exclude 'LICENSE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/license' exclude 'META-INF/license.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/notice' exclude 'META-INF/notice.txt' exclude 'META-INF/services/javax.annotation.processing.Processor' } dexOptions { javaMaxHeapSize "2048m" dexInProcess true } lintOptions { abortOnError true xmlReport true htmlReport true disable 'MissingTranslation', 'InvalidPackage' disable 'GradleCompatible', 'GradleCompatible' disable 'NewApi', 'NewApi' disable 'GradleDependency' disable 'UnusedResources' disable 'IconDensities' disable 'TypographyDashes' disable 'ContentDescription' htmlOutput file("$project.buildDir/reports/lint/lint-result.html") xmlOutput file("$project.buildDir/reports/lint/lint-result.xml") } testOptions { unitTests.returnDefaultValues = true } } greendao { schemaVersion 13 targetGenDir 'src/main/java/' } ext.betaDissortingbutionReleaseNotes = System.getenv("CHANGELOG") def createVersionNameSuffix() { def buildNumber = System.env.BUILD_NUMBER def buildTimestamp = new Date().format('HH:mm dd/MM/yy') return buildNumber ? " ($buildNumber)" : " ($buildTimestamp)" } def getBuildVersionFromName(Ssortingng buildName) { List data = buildName.tokenize(".") Ssortingng resultSsortingng = "19"; for (Ssortingng s : data) { resultSsortingng += s; } if (System.env.BUILD_NUMBER) { resultSsortingng += System.env.BUILD_NUMBER } return Integer.parseInt(resultSsortingng); } //Verify the app before creating a Pull Request task verifyPR verifyPR.dependsOn('clean') verifyPR.dependsOn('lint') verifyPR.dependsOn('checkstyle') verifyPR.dependsOn('pmd') verifyPR.dependsOn('testSnapDebugUnitTest') dependencies { // Android Dependencies comstack 'com.android.support:appcompat-v7:26.0.1' comstack 'com.android.support:design:26.0.1' comstack 'com.android.support:recyclerview-v7:26.0.1' comstack 'com.android.support:multidex:1.0.2' // Dagger Dependencies apt 'com.google.dagger:dagger-comstackr:2.11' comstack 'org.glassfish:javax.annotation:10.0-b28' comstack 'com.google.dagger:dagger:2.11' // Rx Dependencies comstack 'io.reactivex:rxandroid:1.2.1' comstack 'io.reactivex:rxjava:1.3.0' comstack 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:0.4.0' comstack 'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0' comstack 'com.squareup.whorlwind:whorlwind:1.0.1' comstack 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar' comstack 'com.jenzz:RxAppState:2.0.0' // Tools comstack 'com.crashlytics.sdk.android:crashlytics:2.6.5' // ButterKnife comstack 'com.jakewharton:butterknife:8.4.0' // Google Maps comstack 'com.google.android.gms:play-services-maps:11.0.4' comstack "com.google.android.gms:play-services-analytics:11.0.4" comstack 'com.google.android.gms:play-services-location:11.0.4' comstack 'com.google.android.gms:play-services-places:11.0.4' comstack 'com.google.android.gms:play-services-gcm:11.0.4' // Geofence comstack('pl.charmas.android:android-reactive-location:0.10@aar') { transitive = true } // Retrofit comstack 'com.squareup.retrofit2:retrofit:2.3.0' comstack 'com.squareup.retrofit2:adapter-rxjava:2.3.0' // OKHTTP comstack 'com.squareup.okhttp:okhttp-urlconnection:2.7.5' // Libphonenumber comstack 'com.googlecode.libphonenumber:libphonenumber:7.3.2' // UI comstack 'com.tubb.smrv:swipemenu-recyclerview:5.0.2' // EventBus comstack 'org.greenrobot:eventbus:3.0.0' // Database comstack 'org.greenrobot:greendao:3.2.0' // Chuck HTTP Inspector debugComstack 'com.readystatesoftware.chuck:library:1.0.4' releaseComstack 'com.readystatesoftware.chuck:library-no-op:1.0.4' // ViewPager Indicator comstack 'com.github.JakeWharton:ViewPagerIndicator:2.4.1' // Amplitude comstack 'com.amplitude:android-sdk:2.13.2' // TESTS testComstack 'junit:junit:4.12' testComstack "org.mockito:mockito-core:1.10.19" testComstack "org.powermock:powermock-module-junit4:1.6.5" testComstack "org.powermock:powermock-module-junit4-rule:1.6.4" testComstack "org.powermock:powermock-api-mockito:1.6.5" testComstack "org.powermock:powermock-classloading-xstream:1.6.4" comstack project(':lp_messaging_sdk') } 

Et voici la bibliothèque tierce build.gradle

 apply plugin: 'com.android.library' android { comstackSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { minSdkVersion 14 targetSdkVersion 26 versionCode 250 versionName "2.5.0" } flavorDimensions "default" productFlavors { snap { ext.betaDissortingbutionGroupAliases = "INTERNAL" ext.betaDissortingbutionReleaseNotesFilePath = 'changelog.txt' ext.betaDissortingbutionNotifications = true dimension "default" } uat { ext.betaDissortingbutionGroupAliases = "INTERNAL" ext.betaDissortingbutionNotifications = true } production { } } signingConfigs { release { } } buildTypeMatching 'snap', 'debug', 'release' buildTypes { debug { applicationIdSuffix '.debug' minifyEnabled true testCoverageEnabled false buildConfigField "Ssortingng", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"' // Workaround for : https://code.google.com/p/android/issues/detail?id=212882 proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray() ext.enableCrashlytics = false } release { minifyEnabled true testCoverageEnabled = false signingConfig signingConfigs.release buildConfigField "Ssortingng", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"' // Workaround for : https://code.google.com/p/android/issues/detail?id=212882 proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray() } } defaultConfig { consumerProguardFiles 'proguard.cfg' } repositories { flatDir { dirs 'aars' } } lintOptions { disable 'InvalidPackage' } } dependencies { comstack 'com.android.support:appcompat-v7:26.0.1' comstack 'com.android.support:design:26.0.1' comstack 'com.android.support:recyclerview-v7:26.0.1' comstack 'com.android.support:percent:26.0.1' comstack 'com.android.support.constraint:constraint-layout:1.0.2' comstack 'com.squareup.picasso:picasso:2.5.2' comstack 'com.neovisionaries:nv-websocket-client:1.31' comstack 'com.squareup.okhttp3:okhttp:3.8.0' comstack(name: 'infra', ext: 'aar') comstack(name: 'messaging', ext: 'aar') comstack(name: 'messaging_ui', ext: 'aar') comstack(name: 'ui', ext: 'aar') } 

Est-ce que quelqu’un sait comment je peux résoudre ce problème? Merci

Essayer

implementation project(path: ':lp_messaging_sdk', configuration: 'default')

Remarque:

Vous pouvez éviter ce bogue en mettant à jour gradle à 4.3 vérifier ceci .

Explication :

L’utilisation des configurations de dépendance facilite la définition et la définition des éléments à utiliser dans un sous-projet.

Dans ma réponse, nous avons utilisé la configuration par défaut , qui publiera et exposera uniquement la version “release” à d’autres projets et modules Android.

Supposons que vous deviez inclure cette saveur uniquement avec une saveur démo ou avec une saveur de sortie, ce serait comme :

 configurations { // Initializes placeholder configurations that the Android plugin can use when targeting // the corresponding variant of the app. demoDebugComstack {} fullReleaseComstack {} ... } dependencies { // If the library configures multiple build variants using product flavors, // you must target one of the library's variants using its full configuration name. demoDebugComstack project(path: ':lp_messaging_sdk', configuration: 'demoDebug') fullReleaseComstack project(path: ':lp_messaging_sdk', configuration: 'fullRelease') ... } 

Et donc, dans votre cas, vous pouvez utiliser vos versions de build, et c’est ce qui est apparu dans le journal des erreurs.

 Cannot choose between the following configurations of project :lp_messaging_sdk 

Et cela signifie que votre lp_messaging_sdk a différentes configurations de construction: –

  - debugApiElements - debugRuntimeElements - releaseApiElements - releaseRuntimeElements 

Et android-studio vous dit que “je ne peux pas choisir une configuration parmi ces différentes, en définiriez-vous une pour moi?”

Vous pouvez en lire plus ici .

Erreur: impossible de choisir entre les configurations de projet suivantes …….

Il peut y avoir des problèmes d’écriture graduelle Lorsque je suis passé à la formulation suivante, cette erreur n’existe pas

// comstack projet (‘: MPChartLib’)

 implementation project(':MPChartLib') 

Peut-être que lorsque la référence dépend d’autres modules devrait être écrit dans cette implémentation

Si vous utilisez le plug-in android-apt pour le traitement des annotations, essayez de supprimer ce plug-in et de remplacer toutes les références apt some_dependency par annotationProcessor some_dependency comme suggéré dans le guide de migration pour Android Gradle 3.0 . Cela a fonctionné pour moi.

Lorsque j’ai mis à jour mon projet du niveau 23 à 27 de l’API et gradué à 3.1, cette erreur est venue

“Impossible de choisir entre différentes configurations”.

Donc, pour résoudre ce problème.

remplacer le projet de compilation (‘: votre nom de projet’)

avec le projet d’implémentation (‘: projectname’)

dans ce cas, résoudre le problème.

Mon problème était le fait que je renommais le nom du fichier de sortie (et le chemin)

Une fois que j’ai supprimé le code de gradation qui changeait le nom de l’aar, le chemin de ma solution était plus simple.