diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ff78c7b0..20c5a8eb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -69,7 +69,7 @@ androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", versi [plugins] android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } -android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" } +android-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "android-gradle-plugin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } com-vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "com-vanniktech-maven-publish" } binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" } diff --git a/rssparser/build.gradle.kts b/rssparser/build.gradle.kts index b9228d57..e51737a1 100644 --- a/rssparser/build.gradle.kts +++ b/rssparser/build.gradle.kts @@ -1,13 +1,14 @@ @file:OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalWasmDsl::class) +import com.android.build.api.dsl.androidLibrary import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile plugins { - alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.com.vanniktech.maven.publish) alias(libs.plugins.kotlinx.serialization) } @@ -21,8 +22,15 @@ tasks.withType(KotlinJvmCompile::class).configureEach { kotlin { jvm() - androidTarget { - publishLibraryVariants("release", "debug") + androidLibrary { + namespace = "com.prof18.rssparser" + compileSdk = Integer.parseInt(libs.versions.android.compile.sdk.get()) + minSdk = libs.versions.android.min.sdk.get().toInt() + compilerOptions.jvmTarget.set(JvmTarget.JVM_1_8) + + withHostTest { + isIncludeAndroidResources = true + } } iosArm64() @@ -58,14 +66,7 @@ kotlin { } } - applyDefaultHierarchyTemplate { - common { - group("jvmAndroid") { - withAndroidTarget() - withJvm() - } - } - } + applyDefaultHierarchyTemplate() compilerOptions { freeCompilerArgs.add("-Xexpect-actual-classes") @@ -80,6 +81,14 @@ kotlin { } } + val jvmAndroidMain by creating { + dependsOn(commonMain.get()) + } + + val jvmAndroidTest by creating { + dependsOn(commonTest.get()) + } + commonMain.dependencies { implementation(libs.kotlinx.coroutines.core) } @@ -91,26 +100,33 @@ kotlin { implementation(libs.kotlinx.coroutines.test) } + jvmMain { + dependsOn(jvmAndroidMain) + } + jvmTest { + dependsOn(jvmAndroidTest) dependencies { implementation(kotlin("test-junit")) } } androidMain { + dependsOn(jvmAndroidMain) dependencies { implementation(libs.kotlinx.coroutines.android) } } - androidUnitTest { + getByName("androidHostTest") { + dependsOn(jvmAndroidTest) dependencies { implementation(libs.org.robolectric) implementation(kotlin("test-junit")) } } - get("jvmAndroidMain").dependencies { + jvmAndroidMain.dependencies { api(libs.com.squareup.okhttp3) } @@ -124,21 +140,3 @@ kotlin { } } -android { - namespace = "com.prof18.rssparser" - - compileSdk = Integer.parseInt(libs.versions.android.compile.sdk.get()) - - defaultConfig { - minSdk = libs.versions.android.min.sdk.get().toInt() - } - - testOptions.unitTests { - isIncludeAndroidResources = true - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } -} diff --git a/rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/AndroidTestUtils.kt b/rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/AndroidTestUtils.kt similarity index 100% rename from rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/AndroidTestUtils.kt rename to rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/AndroidTestUtils.kt diff --git a/rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt b/rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt similarity index 100% rename from rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt rename to rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt diff --git a/rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt b/rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt similarity index 100% rename from rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt rename to rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt diff --git a/samples/multiplatform/shared/build.gradle.kts b/samples/multiplatform/shared/build.gradle.kts index 3398d253..fa72b3dd 100644 --- a/samples/multiplatform/shared/build.gradle.kts +++ b/samples/multiplatform/shared/build.gradle.kts @@ -2,16 +2,22 @@ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.android.library) + alias(libs.plugins.kotlin.multiplatform) } kotlin { jvmToolchain(17) - androidTarget() + androidLibrary { + namespace = "com.prof18.rssparser.sample" + compileSdk = libs.versions.android.compile.sdk.get().toInt() + minSdk = libs.versions.android.min.sdk.get().toInt() + compilerOptions.jvmTarget.set(JvmTarget.JVM_17) + } jvm("desktop") @@ -55,15 +61,3 @@ kotlin { } } -android { - namespace = "com.prof18.rssparser.sample" - compileSdk = libs.versions.android.compile.sdk.get().toInt() - defaultConfig { - minSdk = libs.versions.android.min.sdk.get().toInt() - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } -}