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)
This commit is contained in:
2026-07-08 16:59:26 +02:00
parent 15ae8cd046
commit 9ee5b1c415
4 changed files with 49 additions and 33 deletions
+1
View File
@@ -1,5 +1,6 @@
plugins { plugins {
alias(libs.plugins.kotlin.multiplatform) apply false alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.compose.multiplatform) apply false alias(libs.plugins.compose.multiplatform) apply false
alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.android.application) apply false alias(libs.plugins.android.application) apply false
+45 -31
View File
@@ -1,9 +1,9 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins { plugins {
alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.compose.multiplatform) alias(libs.plugins.compose.multiplatform)
alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.android.application) alias(libs.plugins.android.application)
@@ -11,8 +11,6 @@ plugins {
kotlin { kotlin {
androidTarget { androidTarget {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test)
compilations.all { compilations.all {
compileTaskProvider.configure { compileTaskProvider.configure {
compilerOptions.jvmTarget.set(JvmTarget.JVM_11) compilerOptions.jvmTarget.set(JvmTarget.JVM_11)
@@ -20,43 +18,59 @@ kotlin {
} }
} }
listOf(iosX64(), iosArm64(), iosSimulatorArm64()) iosX64()
iosArm64()
iosSimulatorArm64()
jvm("desktop") jvm("desktop")
sourceSets { sourceSets {
commonMain.dependencies { val commonMain by getting {
implementation(compose.runtime) dependencies {
implementation(compose.foundation) implementation(compose.runtime)
implementation(compose.material3) implementation(compose.foundation)
implementation(compose.components.uiToolingPreview) implementation(compose.material3)
implementation(libs.ktor.client.core) implementation(compose.components.uiToolingPreview)
implementation(libs.ktor.client.content.negotiation) implementation(libs.ktor.client.core)
implementation(libs.ktor.serialization.kotlinx.json) implementation(libs.ktor.client.content.negotiation)
implementation(libs.kotlinx.serialization.json) implementation(libs.ktor.serialization.kotlinx.json)
implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.serialization.json)
implementation(libs.multiplatform.settings) implementation(libs.kotlinx.coroutines.core)
implementation(libs.multiplatform.settings.no.arg) implementation(libs.multiplatform.settings)
implementation(libs.lifecycle.viewmodel.compose) implementation(libs.multiplatform.settings.no.arg)
implementation(libs.lifecycle.viewmodel.compose)
}
} }
commonTest.dependencies { val commonTest by getting {
implementation(kotlin("test")) dependencies {
implementation(libs.ktor.client.mock) implementation(kotlin("test"))
implementation(libs.kotlinx.coroutines.test) implementation(libs.ktor.client.mock)
implementation(libs.multiplatform.settings.test) implementation(libs.kotlinx.coroutines.test)
implementation(libs.multiplatform.settings.test)
}
} }
androidMain.dependencies { val androidMain by getting {
implementation(libs.ktor.client.cio) dependencies {
implementation(libs.androidx.activity.compose) implementation(libs.ktor.client.cio)
implementation(libs.androidx.activity.compose)
}
} }
iosMain.dependencies { val desktopMain by getting {
implementation(libs.ktor.client.darwin) dependencies {
} implementation(libs.ktor.client.cio)
desktopMain.dependencies { implementation(compose.desktop.currentOs)
implementation(libs.ktor.client.cio) }
implementation(compose.desktop.currentOs)
} }
} }
// Darwin engine for all iOS targets
targets.filterIsInstance<org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget>()
.filter { it.konanTarget.family == org.jetbrains.kotlin.konan.target.Family.IOS }
.forEach { target ->
target.compilations.getByName("main").dependencies {
implementation(libs.ktor.client.darwin)
}
}
} }
android { android {
+2 -1
View File
@@ -1,7 +1,7 @@
[versions] [versions]
kotlin = "2.2.20" kotlin = "2.2.20"
compose-multiplatform = "1.11.1" compose-multiplatform = "1.11.1"
agp = "2.1.3" agp = "8.13.2"
ktor = "3.5.1" ktor = "3.5.1"
kotlinx-serialization-json = "1.11.0" kotlinx-serialization-json = "1.11.0"
kotlinx-coroutines = "1.11.0" kotlinx-coroutines = "1.11.0"
@@ -27,6 +27,7 @@ androidx-activity-compose = { module = "androidx.activity:activity-compose", ver
[plugins] [plugins]
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } 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" } compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
android-application = { id = "com.android.application", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" }
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
retries=0 retries=0
retryBackOffMs=500 retryBackOffMs=500