Skip to content

Commit 9f18d24

Browse files
committed
Migrate to new AGP structure for Kotlin Multiplatform libraries
1 parent 8b00c71 commit 9f18d24

6 files changed

Lines changed: 38 additions & 46 deletions

File tree

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", versi
7070
[plugins]
7171
android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" }
7272
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
73-
android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" }
73+
android-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "android-gradle-plugin" }
7474
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
7575
com-vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "com-vanniktech-maven-publish" }
7676
binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" }

rssparser/build.gradle.kts

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
@file:OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalWasmDsl::class)
22

3+
import com.android.build.api.dsl.androidLibrary
34
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
45
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
56
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
67
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
78

89
plugins {
9-
alias(libs.plugins.kotlin.multiplatform)
1010
alias(libs.plugins.android.library)
11+
alias(libs.plugins.kotlin.multiplatform)
1112
alias(libs.plugins.com.vanniktech.maven.publish)
1213
alias(libs.plugins.kotlinx.serialization)
1314
}
@@ -21,8 +22,15 @@ tasks.withType(KotlinJvmCompile::class).configureEach {
2122
kotlin {
2223
jvm()
2324

24-
androidTarget {
25-
publishLibraryVariants("release", "debug")
25+
androidLibrary {
26+
namespace = "com.prof18.rssparser"
27+
compileSdk = Integer.parseInt(libs.versions.android.compile.sdk.get())
28+
minSdk = libs.versions.android.min.sdk.get().toInt()
29+
compilerOptions.jvmTarget.set(JvmTarget.JVM_1_8)
30+
31+
withHostTest {
32+
isIncludeAndroidResources = true
33+
}
2634
}
2735

2836
iosArm64()
@@ -58,14 +66,7 @@ kotlin {
5866
}
5967
}
6068

61-
applyDefaultHierarchyTemplate {
62-
common {
63-
group("jvmAndroid") {
64-
withAndroidTarget()
65-
withJvm()
66-
}
67-
}
68-
}
69+
applyDefaultHierarchyTemplate()
6970

7071
compilerOptions {
7172
freeCompilerArgs.add("-Xexpect-actual-classes")
@@ -80,6 +81,14 @@ kotlin {
8081
}
8182
}
8283

84+
val jvmAndroidMain by creating {
85+
dependsOn(commonMain.get())
86+
}
87+
88+
val jvmAndroidTest by creating {
89+
dependsOn(commonTest.get())
90+
}
91+
8392
commonMain.dependencies {
8493
implementation(libs.kotlinx.coroutines.core)
8594
}
@@ -91,26 +100,33 @@ kotlin {
91100
implementation(libs.kotlinx.coroutines.test)
92101
}
93102

103+
jvmMain {
104+
dependsOn(jvmAndroidMain)
105+
}
106+
94107
jvmTest {
108+
dependsOn(jvmAndroidTest)
95109
dependencies {
96110
implementation(kotlin("test-junit"))
97111
}
98112
}
99113

100114
androidMain {
115+
dependsOn(jvmAndroidMain)
101116
dependencies {
102117
implementation(libs.kotlinx.coroutines.android)
103118
}
104119
}
105120

106-
androidUnitTest {
121+
getByName("androidHostTest") {
122+
dependsOn(jvmAndroidTest)
107123
dependencies {
108124
implementation(libs.org.robolectric)
109125
implementation(kotlin("test-junit"))
110126
}
111127
}
112128

113-
get("jvmAndroidMain").dependencies {
129+
jvmAndroidMain.dependencies {
114130
api(libs.com.squareup.okhttp3)
115131
implementation(libs.com.squareup.okhttp3.coroutines)
116132
}
@@ -125,21 +141,3 @@ kotlin {
125141
}
126142
}
127143

128-
android {
129-
namespace = "com.prof18.rssparser"
130-
131-
compileSdk = Integer.parseInt(libs.versions.android.compile.sdk.get())
132-
133-
defaultConfig {
134-
minSdk = libs.versions.android.min.sdk.get().toInt()
135-
}
136-
137-
testOptions.unitTests {
138-
isIncludeAndroidResources = true
139-
}
140-
141-
compileOptions {
142-
sourceCompatibility = JavaVersion.VERSION_1_8
143-
targetCompatibility = JavaVersion.VERSION_1_8
144-
}
145-
}

rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/AndroidTestUtils.kt renamed to rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/AndroidTestUtils.kt

File renamed without changes.

rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt renamed to rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/XmlParserFactory.kt

File renamed without changes.

rssparser/src/androidUnitTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt renamed to rssparser/src/androidHostTest/kotlin/com/prof18/rssparser/XmlParserTestExecutor.kt

File renamed without changes.

samples/multiplatform/shared/build.gradle.kts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,22 @@
22

33
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
44
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
5+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
56

67
plugins {
7-
alias(libs.plugins.kotlin.multiplatform)
88
alias(libs.plugins.android.library)
9+
alias(libs.plugins.kotlin.multiplatform)
910
}
1011

1112
kotlin {
1213
jvmToolchain(17)
1314

14-
androidTarget()
15+
androidLibrary {
16+
namespace = "com.prof18.rssparser.sample"
17+
compileSdk = libs.versions.android.compile.sdk.get().toInt()
18+
minSdk = libs.versions.android.min.sdk.get().toInt()
19+
compilerOptions.jvmTarget.set(JvmTarget.JVM_17)
20+
}
1521

1622
jvm("desktop")
1723

@@ -55,15 +61,3 @@ kotlin {
5561
}
5662
}
5763

58-
android {
59-
namespace = "com.prof18.rssparser.sample"
60-
compileSdk = libs.versions.android.compile.sdk.get().toInt()
61-
defaultConfig {
62-
minSdk = libs.versions.android.min.sdk.get().toInt()
63-
}
64-
65-
compileOptions {
66-
sourceCompatibility = JavaVersion.VERSION_17
67-
targetCompatibility = JavaVersion.VERSION_17
68-
}
69-
}

0 commit comments

Comments
 (0)