Я пытаюсь добавить зависимости firebase. Когда я бегу flutter run я получаю
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
}
приложение/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
Вы можете узнать, от какого пакета зависит google_api_availability, запустив flutter packages pub deps в корне проекта — это отобразит все прямые и транзитивные зависимости вашего проекта в виде дерева.
Я не смог найти способ отобразить зависимости пакета от плагинов — я думаю, вы узнаете об этом только после того, как попытаетесь его собрать.
Проблема в том, что вы используете версию 3.3.1 плагина Android Gradle, которая использует Kotlin 1.3.0 или выше. В то же время пакет geolocator зависит от google_api_availability, который, похоже, использует Kotlin 1.2.71. На данный момент нет версии google_api_availability, использующей Kotlin 1.3.0 или выше, поэтому у вас есть только 1 решение — понизить версию плагина Android Gradle до версии 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
Решение, которое мы использовали, заключалось в том, чтобы включить пакет и все его зависимости непосредственно в среду сборки флаттера. !! Это может быть не идеально в долгосрочной перспективе, но поможет вам, пока происходит миграция AndroidX и возится с вашими сборками.
В pubspec.yaml мы включили определенные версии, такие как
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.
Поломка для нас произошла между google_api_availability v1.0.6 и v2.0.0.
Вы можете узнать, какой пакет зависит от google_api_availability, выполнив действия, как говорит Овидиу, или открыв https://pub.dartlang.org/ и набрав «dependency:google_api_availability» в строке поиска. Также на каждой странице пакета можно посмотреть зависимости и кто от них зависит.
На данный момент это лучший подход. Достаточно просто добавить google_api_availability: 1.0.6 в pubspec.yaml.
Моя проблема началась с раннего закрытия HTTP-соединения. Затем каким-то образом эта проблема изменилась на проблему с Android X.
Чтобы решить эту проблему с Android X, я выполнил шаги https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility#not-recommended-manually-migrate-your-app, но вместо этого это привело меня к другой проблеме с версией. Я использовал геолокатор 1.6.3 и вызывал API Google, разработанный в kotlin 1.2.x. Для текущей версии 3.4.1 требуется kotlin 1.3.1 и выше, но это невозможно. Так что было узкое место версии.
Так
В папке Android вы увидите файл с именем build.gradle.
Вы бы увидели кусок кода
buildscript {
ext.kotlin_version = 'x.x.xx'
repositories {
google()
jcenter()
}
отредактируйте версию свойства ext.kotlin_version, заменив x.x.xx на 1.3.10
Это должно помочь вам устранить ошибку
Мне просто нужно было изменить kotlin_version в файле 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"
}
}
После изменений в BuildScript и зависимостях ошибка исчезла.
Проблема в том, что вы являетесь версией используя версию 3.3.1 или выше плагина Android Gradle, который требует наличия Kotlin 1.3.0 или выше. так что у вас есть только одно решение - понизить версию Плагин Android Gradle для версии 3.2.1.
Перейдите во Внешние библиотеки/Плагины Flutter/google_api_availability/android/build.gradle и измените ext.kotlin_version на LATEST_VERSION.
buildscript {
ext.kotlin_version = '1.6.10' //-> i added
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"//->added
}
Просто добавил две строки выше в build.gradle, и это сработало. Даже если есть предупреждение типа «Версия Kotlin, используемая для сборки с помощью Gradle (1.6.10), отличается от версии, встроенной в плагин IDE (1.3.72)». В любом случае, я думаю, что мне нужно скоро обновить плагин IDE.
Обсуждения в Есть похожие проблемы, обсуждение которых может помочь github.com/флаттер/флаттер/вопросы/26889, github.com/флаттер/флаттер/вопросы/26145, github.com/флаттер/флаттер/вопросы/23626 может помочь разобраться.