6
votes

Flutter | Le plugin Android Gradle prend en charge uniquement le plugin Kotlin Gradle version 1.3.0 et supérieure

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


1 commentaires

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.


7 Réponses :


13
votes

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 .


0 commentaires

4
votes
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.

1 commentaires

À l'heure actuelle, c'est la meilleure approche. Il suffit d'ajouter google_api_availability: 1.0.6 à pubspec.yaml.



0
votes

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

  • J'ai dégradé le gradle à 3.3.0 et le problème du géolocalisateur a été résolu.
  • Enfin, j'ai mis à niveau le géolocalisateur vers la version 5.0.1 et la gradation vers la version 3.4.1 et tout a été résolu.

0 commentaires

2
votes

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


0 commentaires

0
votes

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.


0 commentaires

-1
votes

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 .


0 commentaires

0
votes

Accédez à Bibliothèques externes / Plugins Flutter / google_api_availability / android / build.gradle et remplacez ext.kotlin_version par LATEST_VERSION.


0 commentaires