Вопрос или проблема
Я создал свой проект Flutter на Java с помощью MainActivity.java
. Я не использую проектирование с помощью Kotlin, но просто добавил плагины и зависимости Kotlin в файлы build.gradle(android) и build.gradle(app), которые используются с Java. Однако я получил ошибку:
Предупреждение: не удается обнаружить версию проекта KGP. Пропуск проверки версии.
Это может быть связано с тем, что вы применили KGP после плагина Flutter Gradle.
build.gradle(android):
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.5.2'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20'
classpath 'com.google.gms:google-services:4.4.2'
classpath "dev.flutter:flutter-gradle-plugin:1.3.0"
}
}
plugins {
id 'com.android.application' version "8.5.2" apply false
id 'com.google.gms.google-services' version "4.4.2" apply false
id 'org.jetbrains.kotlin.android' version "1.9.20" apply false
id 'dev.flutter.flutter-gradle-plugin'
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = "../build"
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(":app")
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
build.gradle(app):
plugins {
id 'com.android.application' version '8.5.2'
id 'org.jetbrains.kotlin.android' version '1.9.20'
id 'com.google.gms.google-services' version '4.4.2'
id 'dev.flutter.flutter-gradle-plugin'
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode="1"
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName="1.0"
}
android {
namespace "com.wetoucart_in"
compileSdkVersion 34
ndkVersion '23.1.7779620'
compileOptions {
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
}
kotlinOptions {
jvmTarget = "18"
}
allprojects {
tasks.withType(JavaCompile).tap {
configureEach {
options.compilerArgs << "-Xlint:deprecation"
}
}
}
buildToolsVersion "34.0.0"
defaultConfig {
applicationId "com.wetoucart_in"
minSdkVersion 23
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20"
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.activity:activity-ktx:1.9.2'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.core:core-splashscreen:1.0.1'
implementation 'androidx.annotation:annotation:1.8.2'
implementation 'androidx.multidex:multidex:2.0.1'
// Зависимости Firebase
implementation platform('com.google.firebase:firebase-bom:33.3.0')
implementation 'com.google.firebase:firebase-analytics:22.1.0'
// Зависимости для тестирования
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
}
MainActivity.java:
package com.wetoucart_in;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}
Чтобы решить проблему с обнаружением версии KGP.
Ответ или решение
Ошибка "unable to detect project KGP version. Skipping version checking" возникает, когда Gradle не может определить версию плагина Kotlin Gradle Plugin (KGD) в вашем проекте. Эта проблема может быть связана с тем, что вы подключаете KGP после того, как был применен Flutter Gradle Plugin. Рассмотрим несколько шагов для устранения этой ошибки.
Шаг 1: Порядок подключаемых библиотек
Убедитесь, что вы подключаете плагин Kotlin до плагина Flutter. В вашем секции build.gradle(android)
в блоке buildscript
необходимо изменить порядок:
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.5.2'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20'
classpath 'com.google.gms:google-services:4.4.2'
classpath "dev.flutter:flutter-gradle-plugin:1.3.0" // Переместите этот класс путём выше, если он после KGP
}
}
Шаг 2: Настройки плагинов в build.gradle(app)
Также убедитесь, что порядок подключения плагинов в build.gradle(app)
правильный. Параметр apply false
можно оставить только для плагинов, которые не требуется применять на уровне приложения.
Заметьте порядок плагинов:
plugins {
id 'org.jetbrains.kotlin.android' version '1.9.20' apply false
id 'com.android.application' version '8.5.2'
id 'com.google.gms.google-services' version '4.4.2'
id 'dev.flutter.flutter-gradle-plugin' // Этот плагин должен применяться в конце
}
Шаг 3: Обновите версию плагинов
Проверьте, возможно, у вас установлены устаревшие версии плагинов. Обновите их до последних стабильных релизов. Исходя из ваших указаний, вы уже используете довольно свежие версии, но для большего уверенности вы можете проверить документацию Flutter относительно совместимости плагинов.
Шаг 4: Проверка структуры проекта
Убедитесь, что ваш проект правильно настроен и структура каталогов соответствует ожиданиям. По умолчанию структура Flutter проекта предполагает наличие стандартных каталогов и файлов, необходимых для корректной работы.
Шаг 5: Пересоздание кэша
Иногда проблема может быть связана с кэшем Gradle. Попробуйте очистить кэш и пересобрать проект:
./gradlew clean
./gradlew build
Шаг 6: Проверка конфигурации Flutter
Не забудьте проверить, что версия Flutter установлена правильно и вся среда настроена корректно. Вы можете использовать команду flutter doctor
для диагностики общей проблемы с конфигурацией вашего Flutter окружения:
flutter doctor -v
Заключение
После внесения всех изменений, выполните сборку вашего проекта. Если ошибка исчезнет, значит проблема была связана с порядком подключения плагинов или версией.
Если же ошибка продолжает возникать, убедитесь, что все зависимости правильно установлены и не конфликтуют друг с другом. В некоторых случаях может потребоваться обратиться к документации плагинов или сообществу разработчиков для более специализированной помощи.