Skip to content

Commit b73eddf

Browse files
committed
Add minimum supported AGP version
This is a new policy of support. This target will keep moving as AGP releases new versions.
1 parent 7bdfd1a commit b73eddf

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616
*/
1717
package com.google.devtools.ksp.gradle
1818

19+
import com.android.build.api.AndroidPluginVersion
1920
import com.android.build.api.variant.Component
2021
import com.google.devtools.ksp.KspExperimental
2122
import com.google.devtools.ksp.gradle.model.builder.KspModelBuilder
23+
import com.google.devtools.ksp.gradle.utils.MINIMUM_SUPPORTED_AGP_VERSION
2224
import com.google.devtools.ksp.gradle.utils.canUseGeneratedKotlinApi
2325
import com.google.devtools.ksp.gradle.utils.canUseInternalKspApis
2426
import com.google.devtools.ksp.gradle.utils.enableProjectIsolationCompatibleCodepath
27+
import com.google.devtools.ksp.gradle.utils.getAgpVersion
2528
import com.google.devtools.ksp.gradle.utils.isAgpBuiltInKotlinUsed
2629
import com.google.devtools.ksp.gradle.utils.useLegacyVariantApi
2730
import org.gradle.api.Project
@@ -116,6 +119,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
116119
registry.register(KspModelBuilder())
117120

118121
target.plugins.withId("com.android.base") {
122+
checkMinimumAgpVersion(target.getAgpVersion())
119123
val androidComponents =
120124
target.extensions.findByType(com.android.build.api.variant.AndroidComponentsExtension::class.java)!!
121125

@@ -130,6 +134,15 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
130134
}
131135
}
132136

137+
private fun checkMinimumAgpVersion(agpVersion: AndroidPluginVersion?) {
138+
if (agpVersion != null && agpVersion < MINIMUM_SUPPORTED_AGP_VERSION) {
139+
throw RuntimeException(
140+
"The minimum support AGP version is ${MINIMUM_SUPPORTED_AGP_VERSION.version}. " +
141+
"Please upgrade the AGP version in your project."
142+
)
143+
}
144+
}
145+
133146
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean {
134147
val project = kotlinCompilation.target.project
135148
val useKsp2 = project.extensions.getByType(KspExtension::class.java).useKsp2.get()

gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/utils/agpUtils.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,11 @@ fun Project.canUseInternalKspApis(): Boolean {
4242
val agpVersion = project.getAgpVersion() ?: return false
4343
return agpVersion >= AndroidPluginVersion(9, 0, 0).alpha(14)
4444
}
45+
46+
/**
47+
* Defines the minimum supported Android Gradle Plugin (AGP) version.
48+
*
49+
* KSP aims to support AGP versions released approximately within the last year
50+
* from the current KSP release date.
51+
*/
52+
val MINIMUM_SUPPORTED_AGP_VERSION = AndroidPluginVersion(8, 3, 0)

0 commit comments

Comments
 (0)