J'essaye d'ajouter des dépendances Firebase. Quand je lance flutter run
, j'obtiens
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
Pubscec.yaml
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 }
build.gradle
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
app/build.gradle
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
7 Réponses :
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 de plugins d'un paquet - 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 plugin Android Gradle, qui applique Kotlin 1.3.0
ou supérieur. 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 plugin Android Gradle vers la version 3.2 .1
.
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.
À l'heure actuelle, c'est la meilleure approche. Il suffit d'ajouter google_api_availability: 1.0.6 à pubspec.yaml.
Mon problème a commencé avec une connexion HTTP qui s'est fermée prématurément. Ensuite, ce problème est devenu un problème Android X.
Pour résoudre ce problème android x, 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, il m'amène à un autre problème de version. J'utilisais geolocator 1.6.3 et j'appelais les API Google développées dans kotlin 1.2.x. Le gradle actuel 3.4.1 nécessite kotlin 1.3.1 et supérieur, mais ce n'était pas une possibilité. Il y avait donc un goulot d'étranglement de version.
Alors
Dans le dossier android, vous verrez le fichier nommé comme build.gradle
Vous verriez un morceau de code
buildscript { ext.kotlin_version = 'x.x.xx' repositories { google() jcenter() }
modifier la version de la propriété ext.kotlin_version en remplaçant xxxx avec 1.3.10
Cela devrait vous aider à résoudre l'erreur
Je devais juste changer la 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 changements dans BuildScript et les dépendances, l'erreur a disparu.
Le problème est que vous utilisez la version 3.3.1 ou la version supérieure du plugin Android Gradle, qui impose d'avoir Kotlin 1.3.0 ou supérieur. vous n'avez donc qu'une seule solution: rétrograder le plugin Android Gradle à la version 3.2.1 .
Accédez à Bibliothèques externes / Plugins Flutter / google_api_availability / android / build.gradle et remplacez ext.kotlin_version par LATEST_VERSION.
Les discussions dans Il y a des problèmes similaires où les discussions pourraient aider github.com/flutter/flutter/issues/ 26889 , github.com/flutter/flutter/issues/26145 , github.com/flutter/flutter/issues/23626 pourrait vous aider à le comprendre.