Je viens de passer à Dart 2 et à la dernière version de Flutter et je ne parviens plus à faire construire mon application. J'ai regardé sur Internet mais je ne comprends toujours pas pourquoi cela se produit.
L'erreur que je reçois est:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.Android.support:support-v4' has different version for the compile (26.1.0) and runtime (27.1.0) classpath. You should manually set the same version via DependencyResolution
Projet build.grade:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.2.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
pubspec.yaml:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
google_sign_in: ^3.0.2
firebase_auth: ^0.5.5
firebase_database: ^0.4.5
firebase_core: ^0.2.3
flutter_blue: ^0.3.3
dev_dependencies:
flutter_test:
sdk: flutter
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
J'ai mis à jour mes paquets avec les dernières versions et j'utilise la dernière version de Dart and Flutter.
Je ne comprends pas vraiment ce qui se passe et qui cause cette erreur.
Quelqu'un peut aider?
Ajoutez ce qui suit à la section "sous-projets" du fichier build.gradle au niveau du projet Android (comme indiqué également dans le link fourni par Günter Zöchbauer dans le commentaire):
subprojects {
project.evaluationDependsOn(':app')
//[PART TO ADD START]
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "27.1.0"
}
}
}
//[PART TO ADD END]
}
J'avais le même problème alors que je réalisais une "application de scanner QR" dans Flutter, je viens de changer le "minSdkVersion 21" dans demoapp -> Android -> app -> build.gradle -> minSdkVersion , cela a parfaitement fonctionné. Ceci est dû au fait que certaines dépendances dans Flutter ne prennent pas en charge minSdk en dessous de 21.
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.Android.com/studio/build/application-id.html).
applicationId "com.example"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
essaye ça
Open you project in Android studio and wait for it to sync then,
Update build.gradile to this
add google() in repositories under buildscripts so it looks like this
repositories {
jcenter()
google()
}
update classpath
classpath 'com.Android.tools.build:gradle:3.1.1'
Update distributionUrl in gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.Zip
implementation "com.Android.support:support-v4:27.1.1" // In case your targetting.
Ouvrez votre fichier build.gradle au niveau du projet et ajoutez l'extrait de code suivant.
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
}
Après avoir ajouté ceci, votre fichier au niveau du projet build.gradle ressemblera à ceci:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.1.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
}
Solution fournie par Günter Zöchbauer. lien . Ça marche pour moi. J'espère que ça aide.