J'essaie d'ajouter des dépendances Firebase. Quand je lance flutter run
Je reçois
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.
The following dependencies do not satisfy the required version:
project ':google_api_availability' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.71
Pubscec.yaml
dependencies:
flutter:
sdk: flutter
firebase_auth: ^0.8.1
google_sign_in: ^4.0.1
cloud_firestore: ^0.9.0+1
firebase_core: ^0.3.0+1
firebase_storage: ^2.0.1
cupertino_icons: ^0.1.2
font_awesome_flutter: ^8.0.1
country_code_picker: ^1.1.0
fluttertoast: ^2.0.7
image_picker: ^0.4.6
shared_preferences: ^0.4.2
cached_network_image: ^0.4.1
intl: ^0.15.7
geolocator: ^2.1.1
http: ^0.11.3+14
flutter_google_places: ^0.1.4+1
location: ^1.1.6
uuid: ^1.0.3
auto_size_text: 0.3.0
build.gradle
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.2.0'
}
}
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
}
app/build.gradle
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
apply plugin: 'com.Android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
Android {
compileSdkVersion 28
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.Android.com/studio/build/application-id.html).
applicationId "com.example.myapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'com.google.gms.google-services' // Gradle plugin
Vous pouvez trouver quel package dépend de google_api_availability
en exécutant flutter packages pub deps
à la racine du projet - cela listera toutes les dépendances directes et transitives de votre projet dans une arborescence.
Je n'ai pas trouvé de moyen d'afficher les dépendances des plugins d'un package - je suppose que vous ne le découvrirez qu'une fois que vous aurez essayé de le construire.
Le problème est que vous utilisez la version 3.3.1
du Android plugin Gradle, qui applique Kotlin 1.3.0
ou au-dessus. Dans le même temps, le package geolocator
dépend de google_api_availability
, qui semble utiliser Kotlin 1.2.71
. Pour le moment, il n'y a pas de version de google_api_availability
qui utilise Kotlin 1.3.0
ou supérieur, vous n'avez donc qu'une seule solution - rétrograder le Android plugin Gradle vers la version 3.2.1
.
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.
The following dependencies do not satisfy the required version:
project ':google_api_availability' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.71
La solution que nous avons utilisée consistait à inclure le package et toutes leurs dépendances directement dans l'environnement de génération Flutter. !! Cela pourrait ne pas être idéal à long terme, mais cela vous aidera pendant que cette migration AndroidX se déroule et perturbe vos builds.
Dans le pubspec.yaml nous avons inclus des versions spécifiques comme
geolocator: 3.0.0 # AndroidX - Breaking!
google_api_availability: 1.0.6 # Geolocator Dependency.
meta: 1.1.6 # Geolocator Dependency.
permission_handler: 2.2.0 # Geolocator & Meta Dependency.
La rupture pour nous s'est produite entre les google_api_availability v1.0.6 et v2.0.0
Vous pouvez trouver quel package dépend de google_api_availability en faisant comme le dit Ovidiu ou en ouvrant https://pub.dartlang.org/ et tapez "dependency:google_api_availability
"dans la barre de recherche. Sur chaque page de package, vous pouvez également voir la dépendance et qui en dépend.
Dans le dossier Android, vous verrez un fichier nommé build.gradle
Vous verriez un morceau de code
buildscript {
ext.kotlin_version = 'x.x.xx'
repositories {
google()
jcenter()
}
éditez la version de la propriété ext.kotlin_version en remplaçant x.x.xx par 1.3.10
Cela devrait vous aider à résoudre l'erreur
Le problème est que vous êtes en utilisant la version 3.3.1 ou supérieure version du Android plugin Gradle, qui oblige à avoir Kotlin 1.3.0 ou supérieur. avoir 1 solution - rétrograder le plugin Android Gradle vers la version 3.2.1.
Mon problème a commencé avec une connexion HTTP qui se fermait tôt. Ensuite, ce problème est devenu Android X issue.
Pour résoudre ce problème Android x problème, j'ai suivi les étapes de https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility#not-recommended-manually -migrate-your-app mais à la place, cela m'amène à un autre problème de version. J'utilisais le géolocalisateur 1.6.3 et j'appelais les API Google développées dans kotlin 1.2.x. Le grade 3.4.1 actuel nécessite kotlin 1.3 .1 et au-dessus mais ce n'était pas une possibilité. Il y avait donc un goulot d'étranglement de la version.
Alors
Je viens de changer la version kotlin_version dans le fichier Android/build.gradle:
buildscript {
// change here:
ext.kotlin_version = '1.3.21'
dependencies {
// kotlin version is used here:
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Après les modifications apportées à BuildScript et aux dépendances, l'erreur a disparu.