From 9ee5b1c41598de81794f5cacd10663a54d979341 Mon Sep 17 00:00:00 2001 From: Rene Luria Date: Wed, 8 Jul 2026 16:59:26 +0200 Subject: [PATCH] fix: correct tooling versions (Gradle 9.5.1, AGP 8.13.2) and add Kotlin Compose plugin - AGP 2.1.3 doesn't exist; use 8.13.2 (latest stable 8.x) - Gradle 9.6.1 incompatible with AGP 8.x; use 9.5.1 - Add org.jetbrains.kotlin.plugin.compose (required since Compose MP 1.6.10) - Fix source set access (by getting) and iOS Darwin dependency injection - Remove instrumentedTestVariant (KotlinSourceSetTree unresolved) --- build.gradle.kts | 1 + composeApp/build.gradle.kts | 76 ++++++++++++++---------- gradle/libs.versions.toml | 3 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 49 insertions(+), 33 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 66ca030..c093e7d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.kotlin.multiplatform) apply false + alias(libs.plugins.kotlin.compose) apply false alias(libs.plugins.compose.multiplatform) apply false alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.android.application) apply false diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index d89285a..2a6b3cd 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -1,9 +1,9 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.kotlin.compose) alias(libs.plugins.compose.multiplatform) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.android.application) @@ -11,8 +11,6 @@ plugins { kotlin { androidTarget { - @OptIn(ExperimentalKotlinGradlePluginApi::class) - instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test) compilations.all { compileTaskProvider.configure { compilerOptions.jvmTarget.set(JvmTarget.JVM_11) @@ -20,43 +18,59 @@ kotlin { } } - listOf(iosX64(), iosArm64(), iosSimulatorArm64()) + iosX64() + iosArm64() + iosSimulatorArm64() jvm("desktop") sourceSets { - commonMain.dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - implementation(compose.components.uiToolingPreview) - implementation(libs.ktor.client.core) - implementation(libs.ktor.client.content.negotiation) - implementation(libs.ktor.serialization.kotlinx.json) - implementation(libs.kotlinx.serialization.json) - implementation(libs.kotlinx.coroutines.core) - implementation(libs.multiplatform.settings) - implementation(libs.multiplatform.settings.no.arg) - implementation(libs.lifecycle.viewmodel.compose) + val commonMain by getting { + dependencies { + implementation(compose.runtime) + implementation(compose.foundation) + implementation(compose.material3) + implementation(compose.components.uiToolingPreview) + implementation(libs.ktor.client.core) + implementation(libs.ktor.client.content.negotiation) + implementation(libs.ktor.serialization.kotlinx.json) + implementation(libs.kotlinx.serialization.json) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.multiplatform.settings) + implementation(libs.multiplatform.settings.no.arg) + implementation(libs.lifecycle.viewmodel.compose) + } } - commonTest.dependencies { - implementation(kotlin("test")) - implementation(libs.ktor.client.mock) - implementation(libs.kotlinx.coroutines.test) - implementation(libs.multiplatform.settings.test) + val commonTest by getting { + dependencies { + implementation(kotlin("test")) + implementation(libs.ktor.client.mock) + implementation(libs.kotlinx.coroutines.test) + implementation(libs.multiplatform.settings.test) + } } - androidMain.dependencies { - implementation(libs.ktor.client.cio) - implementation(libs.androidx.activity.compose) + val androidMain by getting { + dependencies { + implementation(libs.ktor.client.cio) + implementation(libs.androidx.activity.compose) + } } - iosMain.dependencies { - implementation(libs.ktor.client.darwin) - } - desktopMain.dependencies { - implementation(libs.ktor.client.cio) - implementation(compose.desktop.currentOs) + val desktopMain by getting { + dependencies { + implementation(libs.ktor.client.cio) + implementation(compose.desktop.currentOs) + } } } + + // Darwin engine for all iOS targets + targets.filterIsInstance() + .filter { it.konanTarget.family == org.jetbrains.kotlin.konan.target.Family.IOS } + .forEach { target -> + target.compilations.getByName("main").dependencies { + implementation(libs.ktor.client.darwin) + } + } } android { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index baf21fe..8a5d2de 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] kotlin = "2.2.20" compose-multiplatform = "1.11.1" -agp = "2.1.3" +agp = "8.13.2" ktor = "3.5.1" kotlinx-serialization-json = "1.11.0" kotlinx-coroutines = "1.11.0" @@ -27,6 +27,7 @@ androidx-activity-compose = { module = "androidx.activity:activity-compose", ver [plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a9db115..df6a6ad 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500