J'ai eu des problèmes pour migrer mon projet vers la dernière version de Gradle 4.0 + Android Studio 3, ce qui me donne toutes sortes d'erreurs. Petit à petit, j'ai réussi à tout régler sauf celui-ci.
Could not resolve all dependencies for configuration ':app:forGoogleCoverageRuntimeClasspath'.
> Unable to find a matching configuration in project :mylibrary:
- Configuration 'debugApiElements':
- Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
- Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=debug}'.
- Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=debug}' but wasn't required.
- Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
- Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
- Configuration 'debugRuntimeElements':
- Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
- Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=debug}'.
- Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=debug}' but wasn't required.
- Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.
- Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
- Configuration 'releaseApiElements':
- Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
- Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=release}'.
- Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=release}' but wasn't required.
- Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
- Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
- Configuration 'releaseRuntimeElements':
- Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
- Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=release}'.
- Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=release}' but wasn't required.
- Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.
- Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
Pour cerner le problème:
shrinkResources
La dernière étape produit l'erreur mentionnée, qui est semblable à cette question: Gradle 4.0 Impossible de trouver une configuration correspondante
Quelqu'un at-il une idée de ce qui ne va pas ici ou une solution à ce problème? Je vais aussi déposer un rapport de bogue.
Mon dossier de diplôme complet:
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
Android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "gradletest.test"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
flavorDimensions "store"
productFlavors {
forAmazon {
dimension "store"
}
forGoogle {
dimension "store"
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false
}
release {
minifyEnabled true
debuggable false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
coverage.initWith(buildTypes.debug)
coverage {
testCoverageEnabled true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile 'com.Android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
compile 'com.Android.support.constraint:constraint-layout:1.0.2'
implementation project(':mylibrary')
}
La solution de contournement possible est de créer dans tous les modules les buildTypes manquants, mais c'est un code dérangeant lorsque Google prévoit de créer une requête pour celui-ci. Plus d'infos dans: https://issuetracker.google.com/issues/62170415 comme moi (mais supprimé par le modérateur) et que vous mentionnez.
Mais il existe une deuxième solution (identique mais bien plus propre): Ajoutez-la à votre projet principal build.gradle
subprojects {
afterEvaluate {project ->
if (project.hasProperty("Android")) {
Android {
buildTypes {
YOUR_MISSING_BUILD_TYPES {
BUILD_TYPE_PARAMS_OR_EMPTY
}
}
}
}
}
}
EDIT: 2017-07-12
C'est finalement corrigé dans classpath 'com.Android.tools.build:gradle:3.0.0-alpha6'
. Vous pouvez utiliser un nouveau DSL: https://issuetracker.google.com/issues/62241369
Android {
buildTypeMatching 'staging', 'debug'
productFlavorMatching 'color', 'blue', 'cyan'
}
N'oubliez pas de supprimer la solution ci-dessus avant le projet de construction!
EDIT: 2017-07-18
Il existe une documentation officielle: https://issuetracker.google.com/issues/62241369
Pour résoudre cette erreur, vous devez spécifier le type de construction à partir de "mylibrary" le plugin Android devrait correspondre à la "mise en scène" de l'application type de construction. Vous pouvez le faire avec la propriété buildTypeMatching dans le fichier Le fichier build.gradle de l'application, comme indiqué ci-dessous:
// Add the following to the consumer's build.gradle file.
Android {
...
// Tells the Android plugin to use a library's 'debug' build type
// when a 'staging' build type is not available. You can include
// additional build types, and the plugin matches 'staging' to the
// first build type it finds from the one's you specify. That is,
// if 'mylibrary' doesn't include a 'debug' build type either, the
// plugin matches 'staging' with the producer's 'release' build type.
buildTypeMatching 'staging', 'debug', 'release'
}
EDIT: 2017-09-06
buildTypeMatching
a été supprimé de AS beta 4.
utilise maintenant matchingFallbacks
.
voir: https://stackoverflow.com/a/46038946/4594990
SI votre application inclut un type de construction, contrairement à une dépendance de bibliothèque.
Par exemple, votre application inclut un type de construction "intermédiaire", mais une dépendance inclut uniquement un type de construction "débogage" et "édition".
Vous obtiendrez une erreur comme
Unable to resolve dependency for ':app@staging/compileClasspath': Could not resolve project :library. Open File Show Details
Vous pouvez résoudre cette erreur en ajoutant
buildTypes {
staging {
proguardFile getDefaultDexGuardFile('dexguard-release.pro')
proguardFile 'dexguard-rules.pro'
matchingFallbacks = ['debug', 'release'] //add this line
}
}
Résoudre les erreurs de construction liées à la correspondance de dépendance documents officiels
Double possible de Gradle 4.0 Impossible de trouver une configuration correspondante
Assurez-vous de disposer du nombre exact de configurations de construction (buildTypes) dans tous vos modules.
Dans ma configuration antérieure à la version 3.0, je n'avais que debug {} et version {} dans tous mes modules com.Android.library. J'ai ajouté une configuration supplémentaire similaire à celle de: module d'application. Cela me convient parfaitement.