web-dev-qa-db-fra.com

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

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
3
TSR

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.

10
Ovidiu
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.

4
Bo Jensen

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

2
Chetan

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.

0

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

  • 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 à 5.0.1 et gradle à 3.4.1 et tout a été résolu.
0
Zubain Mulla

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.

0
Atul Chaudhary