From 99a493b018e46e14fbaa7d5c9cfeb5c88079c399 Mon Sep 17 00:00:00 2001 From: loucas monir Date: Mon, 31 Aug 2026 20:36:07 +0300 Subject: [PATCH 1/4] fix: use tasks.withType for Kotlin jvmTarget to support both AGP 8 and AGP 9 --- packages/desktop_drop/CHANGELOG.md | 4 ++++ packages/desktop_drop/android/build.gradle | 17 +++++------------ packages/desktop_drop/pubspec.yaml | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/desktop_drop/CHANGELOG.md b/packages/desktop_drop/CHANGELOG.md index 980fef27..2a24844f 100644 --- a/packages/desktop_drop/CHANGELOG.md +++ b/packages/desktop_drop/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.8.4 + +* [Android] Fix Kotlin configuration for both AGP 8 and AGP 9 hosts by configuring `jvmTarget` via `tasks.withType(KotlinCompile)` — works whether Kotlin comes from KGP or AGP built-in + ## 0.8.3 * [Android] Fix Kotlin configuration for AGP 8 and AGP 9 hosts [#498](https://github.com/MixinNetwork/flutter-plugins/pull/498) diff --git a/packages/desktop_drop/android/build.gradle b/packages/desktop_drop/android/build.gradle index 304a2a1e..fb49adf2 100644 --- a/packages/desktop_drop/android/build.gradle +++ b/packages/desktop_drop/android/build.gradle @@ -18,7 +18,8 @@ apply plugin: 'com.android.library' // AGP 9 has built-in Kotlin; applying KGP there fails. // Hosts on AGP < 9 don't provide Kotlin for this plugin, so we apply it. -// Each AGP uses a different DSL for jvmTarget. +// Configure jvmTarget via tasks.withType - works regardless of whether +// the kotlin extension comes from KGP or AGP built-in. def agpMajor = 0 try { agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger() @@ -27,17 +28,9 @@ try { } if (agpMajor < 9) { apply plugin: 'kotlin-android' - android { - kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8.toString() - } - } -} else { - kotlin { - compilerOptions { - jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 - } - } +} +tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { + kotlinOptions.jvmTarget = "1.8" } rootProject.allprojects { diff --git a/packages/desktop_drop/pubspec.yaml b/packages/desktop_drop/pubspec.yaml index c7f9c07f..9a6775f2 100644 --- a/packages/desktop_drop/pubspec.yaml +++ b/packages/desktop_drop/pubspec.yaml @@ -1,7 +1,7 @@ name: desktop_drop resolution: workspace description: A plugin which allows user dragging files to your flutter desktop applications. -version: 0.8.3 +version: 0.8.4 homepage: https://github.com/MixinNetwork/flutter-plugins/tree/main/packages/desktop_drop environment: From d215b16aec66197b737c9babec19f3d2dc668203 Mon Sep 17 00:00:00 2001 From: loucas monir Date: Tue, 1 Sep 2026 13:47:55 +0300 Subject: [PATCH 2/4] fix: apply KGP unconditionally to support both AGP 8 and 9 --- packages/desktop_drop/CHANGELOG.md | 2 +- packages/desktop_drop/android/build.gradle | 22 +++++----------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/packages/desktop_drop/CHANGELOG.md b/packages/desktop_drop/CHANGELOG.md index 2a24844f..8fd613b1 100644 --- a/packages/desktop_drop/CHANGELOG.md +++ b/packages/desktop_drop/CHANGELOG.md @@ -2,7 +2,7 @@ ## 0.8.4 -* [Android] Fix Kotlin configuration for both AGP 8 and AGP 9 hosts by configuring `jvmTarget` via `tasks.withType(KotlinCompile)` — works whether Kotlin comes from KGP or AGP built-in +* [Android] Apply Kotlin Gradle Plugin unconditionally on all AGP versions (8 and 9) — restores the approach from 0.7.1 that was proven working on both ## 0.8.3 diff --git a/packages/desktop_drop/android/build.gradle b/packages/desktop_drop/android/build.gradle index fb49adf2..bc359319 100644 --- a/packages/desktop_drop/android/build.gradle +++ b/packages/desktop_drop/android/build.gradle @@ -15,23 +15,7 @@ buildscript { } apply plugin: 'com.android.library' - -// AGP 9 has built-in Kotlin; applying KGP there fails. -// Hosts on AGP < 9 don't provide Kotlin for this plugin, so we apply it. -// Configure jvmTarget via tasks.withType - works regardless of whether -// the kotlin extension comes from KGP or AGP built-in. -def agpMajor = 0 -try { - agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger() -} catch (ignored) { - agpMajor = 0 -} -if (agpMajor < 9) { - apply plugin: 'kotlin-android' -} -tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - kotlinOptions.jvmTarget = "1.8" -} +apply plugin: 'kotlin-android' rootProject.allprojects { repositories { @@ -60,6 +44,10 @@ android { defaultConfig { minSdkVersion 16 } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8.toString() + } } dependencies { From 9e5776664e0e43756a49dd16ccd8f5605561ba44 Mon Sep 17 00:00:00 2001 From: loucas monir Date: Tue, 1 Sep 2026 15:58:47 +0300 Subject: [PATCH 3/4] fix: use builtInKotlin property to conditionally apply KGP --- packages/desktop_drop/CHANGELOG.md | 2 +- packages/desktop_drop/android/build.gradle | 25 +++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/desktop_drop/CHANGELOG.md b/packages/desktop_drop/CHANGELOG.md index 8fd613b1..358d4a51 100644 --- a/packages/desktop_drop/CHANGELOG.md +++ b/packages/desktop_drop/CHANGELOG.md @@ -2,7 +2,7 @@ ## 0.8.4 -* [Android] Apply Kotlin Gradle Plugin unconditionally on all AGP versions (8 and 9) — restores the approach from 0.7.1 that was proven working on both +* [Android] Conditionally apply Kotlin Gradle Plugin based on `android.builtInKotlin` property — applies KGP on AGP 8 and AGP 9 with `builtInKotlin=false`, skips KGP on AGP 9 with `builtInKotlin=true` ## 0.8.3 diff --git a/packages/desktop_drop/android/build.gradle b/packages/desktop_drop/android/build.gradle index bc359319..8ca7d953 100644 --- a/packages/desktop_drop/android/build.gradle +++ b/packages/desktop_drop/android/build.gradle @@ -15,7 +15,16 @@ buildscript { } apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' + +// Apply KGP only when AGP does not provide built-in Kotlin. +// builtInKotlin=true -> AGP 9+ with Flutter 3.47+ provides Kotlin built-in, skip KGP +// builtInKotlin=false -> AGP 8 or AGP 9+ with Flutter <3.47, must apply KGP explicitly +def builtInKotlin = project.hasProperty('android.builtInKotlin') && + project.property('android.builtInKotlin').toString().toBoolean() + +if (!builtInKotlin) { + apply plugin: 'kotlin-android' +} rootProject.allprojects { repositories { @@ -45,11 +54,17 @@ android { minSdkVersion 16 } - kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8.toString() + if (!builtInKotlin) { + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8.toString() + } } } -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +if (builtInKotlin) { + kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 + } + } } From fc0800e0ff0526fd510180a92e0cee3661a76179 Mon Sep 17 00:00:00 2001 From: loucas monir Date: Tue, 1 Sep 2026 16:20:25 +0300 Subject: [PATCH 4/4] fix: default builtInKotlin to true on AGP 9+ when property is absent --- packages/desktop_drop/android/build.gradle | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/desktop_drop/android/build.gradle b/packages/desktop_drop/android/build.gradle index 8ca7d953..16e8704b 100644 --- a/packages/desktop_drop/android/build.gradle +++ b/packages/desktop_drop/android/build.gradle @@ -17,10 +17,19 @@ buildscript { apply plugin: 'com.android.library' // Apply KGP only when AGP does not provide built-in Kotlin. -// builtInKotlin=true -> AGP 9+ with Flutter 3.47+ provides Kotlin built-in, skip KGP -// builtInKotlin=false -> AGP 8 or AGP 9+ with Flutter <3.47, must apply KGP explicitly -def builtInKotlin = project.hasProperty('android.builtInKotlin') && - project.property('android.builtInKotlin').toString().toBoolean() +// AGP <9 never has built-in Kotlin -> apply KGP. +// AGP 9+ defaults to built-in Kotlin unless property is explicitly false. +def agpMajor = 0 +try { + agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger() +} catch (ignored) { + agpMajor = 0 +} + +def builtInKotlin = agpMajor >= 9 +if (project.hasProperty('android.builtInKotlin')) { + builtInKotlin = project.property('android.builtInKotlin').toString().toBoolean() +} if (!builtInKotlin) { apply plugin: 'kotlin-android'