La dépendance à Android a une version différente pour la compilation et l'exécution
après avoir mis à jour Android Studio à partir de canari 3 canari 4, l'erreur suivante est générée au moment de la construction.
Android dépendance " com.Android.support: support-support-v4 ' a une version différente pour les classes compiler (25.2.0) et runtime (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 de la version 25.1.0
n'est pas le cas utiliser.
App-construire.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'
}
Bibliothèque-construire.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: Projet a été la construction d'amende dans le Canari 3
9 réponses
j'ai eu la même erreur, ce qui résoudre mon problème. Dans mon bibliothèque au lieu d'utiliser la compilation ou l'implémentation, j'utilise "api". Donc à la fin de mes dépendances:
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api files('libs/model.jar')
testApi 'junit:junit:4.12'
api 'com.android.support:percent:26.0.0-beta2'
api 'com.android.support:appcompat-v7:26.0.0-beta2'
api 'com.android.support:support-core-utils:26.0.0-beta2'
api 'com.squareup.retrofit2:retrofit:2.0.2'
api 'com.squareup.picasso:picasso:2.4.0'
api 'com.squareup.retrofit2:converter-gson:2.0.2'
api 'com.squareup.okhttp3:logging-interceptor:3.2.0'
api 'uk.co.chrisjenx:calligraphy:2.2.0'
api 'com.google.code.gson:gson:2.2.4'
api 'com.android.support:design:26.0.0-beta2'
api 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}
Vous pouvez trouver plus d'informations sur "api", "implementation" dans ce lien https://stackoverflow.com/a/44493379/3479489
Utilisez ce code dans votre buildscript (build.gradle racine):
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "version which should be used - in your case 26.0.0-beta2"
}
}
}
}
vous devriez être capable de voir exactement quelle dépendance tire dans la version impaire comme une dépendance transitive en exécutant la bonne gradle -q dependencies
commande pour votre projet tel que décrit ici:
https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
une fois que vous avez trouvé ce qui l'attire, vous pouvez ajouter une exclusion à cette dépendance spécifique dans votre fichier gradle avec quelque chose comme:
implementation("XXXXX") {
exclude group: 'com.android.support', module: 'support-compat'
}
Après beaucoup de temps et d'obtenir de l'aide auprès d'un ami qui en sait beaucoup plus que moi sur android: app / build.gradle
android {
compileSdkVersion 27
// org.gradle.caching = true
defaultConfig {
applicationId "com.cryptoviewer"
minSdkVersion 16
targetSdkVersion 23
versionCode 196
versionName "16.83"
// ndk {
// abiFilters "armeabi-v7a", "x86"
// }
}
et les dépendances
dependencies {
implementation project(':react-native-camera')
//...
implementation "com.android.support:appcompat-v7:26.1.0" // <= YOU CARE ABOUT THIS
implementation "com.facebook.react:react-native:+" // From node_modules
}
dans la construction.gradle
allprojects {
//...
configurations.all {
resolutionStrategy.force "com.android.support:support-v4:26.1.0"
}
dans gradle.propriétés
android.useDeprecatedNdk=true
android.enableAapt2=false
org.gradle.jvmargs=-Xmx4608M
Je l'ai résolu en suivant ce Qu'Eddi a mentionné ci-dessus,
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
la solution pour moi: Ajouter la ligne suivante dans app/src / build.gradle dans la section des dépendances:
implementation "com.android.support:appcompat-v7:27.1.0"
ou :27.1.1 dans mon cas
j'en commentaire //api 'com.google.android.gms:play-services-ads:15.0.1'
cela a fonctionné pour moi après la synchronisation
La réponse pour moi était également ajouter à mon build.gradle
fichier:
configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
dans mon cas, il était nécessaire d'inclure la stratégie de résolution dans un configurations.all { .. }
bloc. J'ai placé le configurations.all
bloc directement dans mon app/build.gradle
fichier (c'est à dire configurations.all
n'a pas été imbriquée dans quoi que ce soit d'autre)
Remplacer une version codée en dur à + exemple:
implementation 'com.google.android.gms:play-services-base:+'
implementation 'com.google.android.gms:play-services-maps:+'