Après la mise à jour d'Android Studio de Canary 3 vers Canary 4 , l'erreur suivante est générée au moment de la construction.
La dépendance Android 'com.android.support:support-support-v4' a une version différente pour le chemin de classe de compilation (25.2.0) et d'exécution (26.0.0-beta2). Vous devez définir manuellement la même version via DependencyResolution.
J'ai effectué une recherche complète tout au long du projet et la version 25.1.0
n'est nulle part utilisée.
App-build.gradle
android {
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
applicationId "com.xxx.xxxx"
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
debug {
debuggable true
}
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
lintOptions {
abortOnError false
}
}}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation project(':core')
implementation com.google.android.gms:play-services-gcm:9.0.0'
implementation('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true
}
implementation 'com.android.support:multidex:1.0.1'
implementation 'com.flurry.android:analytics:7.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
implementation 'com.jakewharton:butterknife:8.6.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
}
Library-build.gradle:
apply plugin: 'com.android.library'
android {
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation files('libs/model.jar')
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:percent:26.0.0-beta2'
implementation 'com.android.support:appcompat-v7:26.0.0-beta2'
implementation 'com.android.support:support-core-utils:26.0.0-beta2'
implementation 'com.squareup.retrofit2:retrofit:2.0.2'
implementation 'com.squareup.picasso:picasso:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.squareup.okhttp3:logging-interceptor:3.2.0'
implementation 'uk.co.chrisjenx:calligraphy:2.2.0'
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.android.support:design:26.0.0-beta2'
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}
Remarque: le projet se construisait correctement dans Canary 3
android
android-gradle-plugin
build.gradle
DroidLearner
la source
la source
Réponses:
Utilisez ce code dans votre buildscript (build.gradle root):
la source
!details.requested.name.contains('multidex')
vraiment m'a aidé.J'ai eu la même erreur, ce qui a résolu mon problème. Dans ma bibliothèque au lieu d'utiliser la compilation ou l'implémentation, j'utilise "api". Donc au final mes dépendances:
Vous pouvez trouver plus d'informations sur "api", "implémentation" dans ce lien https://stackoverflow.com/a/44493379/3479489
la source
Vous devriez être en mesure de voir exactement quelle dépendance extrait la version impaire en tant que dépendance transitive en exécutant la
gradle -q dependencies
commande appropriée pour votre projet, comme décrit ici:https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
Une fois que vous avez identifié ce qui l'entraîne, vous pouvez ajouter une exclusion à cette dépendance spécifique dans votre fichier gradle avec quelque chose comme:
la source
Après beaucoup de temps et avoir obtenu l'aide d'un ami qui en sait beaucoup plus que moi sur Android: app / build.gradle
et dépendances
dans build.gradle
dans gradle.properties
la source
resolutionStrategy.force
était la seule chose qui fonctionnait pour moi. Merci!La réponse pour moi était également d'ajouter ceci à mon
build.gradle
fichier:Dans mon cas, il était nécessaire d'enfermer la stratégie de résolution dans un
configurations.all { .. }
bloc. J'ai placé leconfigurations.all
bloc directement dans monapp/build.gradle
fichier (c'est-à-dire qu'ilconfigurations.all
n'était imbriqué dans rien d'autre)la source
Cela a fonctionné pour moi:
Ajoutez la ligne suivante dans la
app/build.gradle
section des dépendances:ou
:27.1.1
dans mon casla source
Ajoutez ce code dans votre fichier build.gradle au niveau du projet.
Exemple de code:
la source
Si quelqu'un rencontre ce problème de dépendance en 2019, mettez à jour Android Studio vers 3.4 ou version ultérieure
la source
Je l'ai résolu en mettant à jour ma dépendance gradle dans le fichier android / build.gradle: classpath 'com.android.tools.build:gradle:3.3.1' (j'étais auparavant sur la version 3.2.
la source
Je l'ai résolu en suivant ce qu'Eddi a mentionné ci-dessus,
la source
Passer de l'implémentation à l'API mes dépendances conflictuelles fait l'affaire. Voici un bon article de mindorks expliquant la différence.
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa
Éditer:
Voici aussi mes résolutions de dépendance
la source
Voir dans vos projets de bibliothèque rendre la version compileSdkVersion et targetSdkVersion au même niveau que votre application
rendre également toutes les dépendances au même niveau
la source
Je commente que
//api 'com.google.android.gms:play-services-ads:15.0.1'
cela a fonctionné pour moi après la synchronisationla source
Ajoutez simplement ces lignes dans votre fichier build.gradle
resolutionStrategy.force "com.android.support:support-media-compat:26.0.0-beta2"
resolutionStrategy.force "com.android.support:support-v4:26.0.0-beta2"
la source
Dans mon cas, j'avais deux versions différentes de l'implémentation ci-dessous dans deux modules différents, donc j'ai changé les deux implémentations en versions, c'est-à-dire: 6.0.2 et cela a fonctionné. Vous devrez peut-être également écrire une résolution de dépendance pour voir la réponse acceptée.
module d'application
module commun
la source
ajoutez ceci à gradle (projet) à l'intérieur
allprojects
la source
Remplacez une version codée en dur par + exemple:
la source