build: Remove vestigial kotlin-android plugin references for AGP 9

With AGP 9's built-in Kotlin, org.jetbrains.kotlin.android is no longer
applied to Android modules. Convention plugin hooks using
withPlugin("org.jetbrains.kotlin.android") were dead code — replaced
with withPlugin("com.android.application") and
withPlugin("com.android.library") which correctly trigger for
Android-only modules using built-in Kotlin.

- KoinConventionPlugin: split into app + library hooks
- AndroidRoomConventionPlugin: use com.android.library hook
- KotlinXSerializationConventionPlugin: use app + library hooks
- Remove kotlin-android from version catalog and root build.gradle.kts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
James Rich
2026-05-26 13:10:39 -05:00
parent d62c459810
commit 058a522c51
5 changed files with 19 additions and 5 deletions

View File

@@ -53,7 +53,7 @@ class AndroidRoomConventionPlugin : Plugin<Project> {
dependencies { add("kspJvm", roomCompiler) }
}
pluginManager.withPlugin("org.jetbrains.kotlin.android") {
pluginManager.withPlugin("com.android.library") {
val hasAndroidTest = projectDir.resolve("src/androidTest").exists()
dependencies {
"implementation"(roomRuntime)

View File

@@ -48,7 +48,7 @@ class KoinConventionPlugin : Plugin<Project> {
}
}
pluginManager.withPlugin("org.jetbrains.kotlin.android") {
pluginManager.withPlugin("com.android.application") {
// If this is *only* an Android module (no KMP plugin)
if (!pluginManager.hasPlugin("org.jetbrains.kotlin.multiplatform")) {
dependencies {
@@ -58,6 +58,16 @@ class KoinConventionPlugin : Plugin<Project> {
}
}
pluginManager.withPlugin("com.android.library") {
// If this is *only* an Android library module (no KMP plugin)
if (!pluginManager.hasPlugin("org.jetbrains.kotlin.multiplatform")) {
dependencies {
add("implementation", koinCore)
add("implementation", koinAnnotations)
}
}
}
pluginManager.withPlugin("org.jetbrains.kotlin.jvm") {
// If this is *only* a JVM module (no KMP plugin)
if (!pluginManager.hasPlugin("org.jetbrains.kotlin.multiplatform")) {

View File

@@ -36,10 +36,16 @@ class KotlinXSerializationConventionPlugin : Plugin<Project> {
}
}
pluginManager.withPlugin("org.jetbrains.kotlin.android") {
pluginManager.withPlugin("com.android.application") {
dependencies { "implementation"(serializationLib) }
}
pluginManager.withPlugin("com.android.library") {
if (!pluginManager.hasPlugin("org.jetbrains.kotlin.multiplatform")) {
dependencies { "implementation"(serializationLib) }
}
}
pluginManager.withPlugin("org.jetbrains.kotlin.jvm") { dependencies { "implementation"(serializationLib) } }
}
}

View File

@@ -26,7 +26,6 @@ plugins {
alias(libs.plugins.firebase.crashlytics) apply false
alias(libs.plugins.google.services) apply false
alias(libs.plugins.room) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.kotlin.parcelize) apply false

View File

@@ -297,7 +297,6 @@ compose-screenshot = { id = "com.android.compose.screenshot", version.ref = "com
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" }
koin-compiler = { id = "io.insert-koin.compiler.plugin", version.ref = "koin-plugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }