你的项目需要一个新版本的 Kotlin Gradle 插件

我刚刚更新了我的 flutter 项目包,使其符合零安全标准,现在 Android Studio 希望我更新我的项目,使用最新版本的 Koling Gradle 插件。看不出哪里可以改变这一点。我试过把 "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"改成 "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10",但是没有效果。

我的 build.grade文件是这样的:

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.")
}


def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}


def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}


apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"


def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}


android {
compileSdkVersion 31


sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}


lintOptions {
disable 'InvalidPackage'
}


defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "*********"
minSdkVersion 30
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}






signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}


}


flutter {
source '../..'
}


dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'com.google.firebase:firebase-analytics:17.2.2'
}
apply plugin: 'com.google.gms.google-services'

构建输出:

BUILD FAILED in 8s
[!] Your project requires a newer version of the Kotlin Gradle plugin.
Find the latest version on https://kotlinlang.org/docs/gradle.html#plugin-and-versions, then update project/android/build.gradle:
ext.kotlin_version = '<latest-version>'
Exception: Gradle task assembleDebug failed with exit code 1
98443 次浏览

change build gradle to this :

classpath 'com.android.tools.build:gradle:4.1.0'

and gradle-wrapper to this :

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip

You need to change the kotlin version in your android root project, projectName/android/build.gradle, instead of projectName/android/app/build.gradle.

Change the version at ext.kotlin_version line:

buildscript {
ext.kotlin_version = '1.6.10' // Change here
repositories {
google()
jcenter()
}


dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

UPDATE

The above solution will also works if your android part of the project is using java where the dependencies are using kotlin and you've encountered the following error:

Incompatible classes were found in dependencies. Remove them from the classpath or use '-Xskip-metadata-version-check' to suppress errors
e: /home/user/.gradle/caches/transforms-3/36814238b86d8b6b6f9e4e1263bce879/transformed/jetified-kotlinx-coroutines-core-jvm-1.5.2.jar!/META-INF/kotlinx-coroutines-core.kotlin_module:
Module was compiled with an incompatible version of Kotlin.
The binary version of its metadata is 1.5.1, expected version is 1.1.15.

AndroidStudio or IntelliJ Idea will give hint in the project build.grade file if the kotlin is not the same with the installed kotlin in the IDE.

In my case, I don't use kotlin in my flutter project, but some of my dependencies use it (It was assets_audio_player for me), so I had to go to build.gradle for that dependency and update the kotlin version as other answers here:

ext.kotlin_version = '<latest-version>'

Note 1: you can open build.gradle for the library you want by opening the android module in Android Studio then go to Gradle Scripts from Project tab.

enter image description here

Note 2: you can know which library is causing the error by looking at:

Execution failed for task ':assets_audio_player:compileDebugKotlin'.

It could be more than one library, so after you change kotlin version the error will be changed.

I Update Flutter to 2.10.1 and I found All My Project Has Same Error in app /build.gradl you change to ext.kotlin_version = '1.6.10'enter image description here

enter image description here

Update your Kotlin to the Latest version. You can see the latest version here

ext.kotlin_version = '1.6.10' //

You can see the latest version of Kotlin from the below link https://kotlinlang.org/docs/gradle.html#plugin-and-versions

enter image description here

Add latest kotlin verson in your projectLatest kotlin verson in build.gradel

 buildscript {
ext.kotlin_version = '1.6.10'
repositories {
google()
mavenCentral()
}

Maybe anyone else is stumbling across an issue I had after upgrading flutter: If you use flutter together with aws_amplify you have to also upgrade amplify. This is a issue I had with the same error message.

  • Change the build gradle version to 4.1.0 or higher in the project-level build.gradle file:

    classpath 'com.android.tools.build:gradle:4.1.0'
    
  • Change the gradle wrapper version to 6.7-all or higher in the gradle-wrapper.properties file:

    distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
    
  • Change the ext.kotlin_version to 1.6.10 or higher in the project level build.gradle file:

    buildscript {
    ext.kotlin_version = '1.6.10' // Change like this
    repositories {
    google()
    jcenter()
    }
    
    
    dependencies {
    classpath 'com.android.tools.build:gradle:4.1.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
    }
    

1- First change ext.kotlin_version on projectName/android/build.gradle

buildscript {
ext.kotlin_version = '1.6.10'
}

2- Second change build gradle to this :

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip

You have to change the kotlin version in your android root, go to

projectName/android/build.gradle


buildscript {
ext.kotlin_version = '1.7.0'
repositories {
google()
jcenter()
}


dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

And change the gradle wrapper version to 6.7.1-all or higher in the gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip