From 0e4bf7cca527fdc9a52106981edccdebe1d54a93 Mon Sep 17 00:00:00 2001 From: Yang Date: Thu, 29 May 2025 17:15:05 +1000 Subject: [PATCH 1/2] Remove dependency on `com.android.tools:common`. --- build.gradle.kts | 3 +-- gradle/libs.versions.toml | 2 -- .../appversioning/AppVersioningPlugin.kt | 20 ++++++++++--------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 730fb73b..b51f6de9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -86,11 +86,10 @@ val test by tasks.getting(Test::class) { val fixtureAgpVersion: Provider = providers .environmentVariable("AGP_VERSION") .orElse(providers.gradleProperty("AGP_VERSION")) - .orElse(libs.versions.agp.asProvider()) + .orElse(libs.versions.agp) dependencies { compileOnly(libs.agp.build) - compileOnly(libs.agp.common) testImplementation(libs.junit) testImplementation(libs.truth) testImplementation(libs.testParameterInjector) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index af0fd371..4723ceaa 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,6 @@ kotlin = "2.1.20" binaryCompabilityValidator = "0.15.1" agp = "8.10.1" -agp-common = "31.10.1" detekt = "1.23.7" mavenPublish = "0.31.0" junit = "4.13.2" @@ -14,7 +13,6 @@ toolchainsResolver = "0.10.0" plugin-detektFormatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } agp-build = { module = "com.android.tools.build:gradle", version.ref = "agp" } -agp-common = { module = "com.android.tools:common", version.ref = "agp-common" } junit = { module = "junit:junit", version.ref = "junit" } truth = { module = "com.google.truth:truth", version.ref = "truth" } testParameterInjector = { group = "com.google.testparameterinjector", name = "test-parameter-injector", version.ref = "testParameterInjector" } diff --git a/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt b/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt index f6fe94d1..bdcb0566 100644 --- a/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt +++ b/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt @@ -1,6 +1,5 @@ package io.github.reactivecircus.appversioning -import com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION import com.android.build.api.variant.ApplicationAndroidComponentsExtension import com.android.build.api.variant.ApplicationVariant import com.android.build.gradle.AppPlugin @@ -23,20 +22,23 @@ import java.util.concurrent.atomic.AtomicBoolean class AppVersioningPlugin : Plugin { override fun apply(project: Project) { - val gradleVersion = Version.parse(project.gradle.gradleVersion) - check(gradleVersion >= Version.parse(MIN_GRADLE_VERSION)) { - "Android App Versioning Gradle Plugin requires Gradle $MIN_GRADLE_VERSION or later. Detected Gradle version is $gradleVersion." - } - val agpVersion = Version.parse(ANDROID_GRADLE_PLUGIN_VERSION) - check(agpVersion >= Version.parse(MIN_AGP_VERSION)) { - "Android App Versioning Gradle Plugin requires Android Gradle Plugin $MIN_AGP_VERSION or later. Detected AGP version is $agpVersion." - } val androidAppPluginApplied = AtomicBoolean(false) val pluginDisabled = AtomicBoolean(false) val appVersioningExtension = project.extensions.create("appVersioning", AppVersioningExtension::class.java) project.plugins.withType { androidAppPluginApplied.set(true) val extension = project.extensions.getByType() + + val gradleVersion = Version.parse(project.gradle.gradleVersion) + check(gradleVersion >= Version.parse(MIN_GRADLE_VERSION)) { + "Android App Versioning Gradle Plugin requires Gradle $MIN_GRADLE_VERSION or later. Detected Gradle version is $gradleVersion." + } + + val agpVersion = Version.parse(extension.pluginVersion.version) + check(agpVersion >= Version.parse(MIN_AGP_VERSION)) { + "Android App Versioning Gradle Plugin requires Android Gradle Plugin $MIN_AGP_VERSION or later. Detected AGP version is $agpVersion." + } + extension.onVariants(selector = extension.selector().all()) { variant -> if (pluginDisabled.get()) return@onVariants if (!appVersioningExtension.enabled.get()) { From 50663b390cddf242e4dfa39bf04b7b23742480bc Mon Sep 17 00:00:00 2001 From: Yang Date: Thu, 29 May 2025 18:16:26 +1000 Subject: [PATCH 2/2] Remove support for AGP 7.x or lower. --- .github/workflows/ci.yml | 2 +- CHANGELOG.md | 4 +++- README.md | 4 +++- .../appversioning/AppVersioningPlugin.kt | 17 +---------------- 4 files changed, 8 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 399b25dd..a27cc24a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,7 @@ jobs: AGP_VERSION: ${{ matrix.agp-version }} strategy: matrix: - agp-version: [ 7.3.1, 7.4.2, 8.0.2, 8.1.4, 8.2.2, 8.3.2, 8.4.2, 8.5.2, 8.6.1, 8.7.3, 8.8.2, 8.9.2, 8.10.1, 8.11.0-alpha10, 8.12.0-alpha02 ] + agp-version: [ 8.0.2, 8.1.4, 8.2.2, 8.3.2, 8.4.2, 8.5.2, 8.6.1, 8.7.3, 8.8.2, 8.9.2, 8.10.1, 8.11.0-alpha10, 8.12.0-alpha02 ] steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 4472054d..c6c3521c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,9 @@ ## Unreleased -No changes yet. +### Changed +- Minimum Android Gradle Plugin version is now **8.0.0**. +- Remove `compileOnly` dependency on `com.android.tools:common` to support future version of AGP. ## 1.4.0 diff --git a/README.md b/README.md index a1ca7940..273800ef 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,9 @@ This [blogpost](https://dev.to/ychescale9/git-based-android-app-versioning-with- ## Android Gradle Plugin version compatibility -The minimum version of Android Gradle Plugin required is **7.0.0-beta04**. +The minimum version of Android Gradle Plugin required is **8.0.0**. + +Version `1.4.0` of the plugin is the final version that's compatible with AGP **7.x** and below. Version `0.4.0` of the plugin is the final version that's compatible with AGP **4.0** and **4.1**. diff --git a/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt b/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt index bdcb0566..c0173274 100644 --- a/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt +++ b/src/main/kotlin/io/github/reactivecircus/appversioning/AppVersioningPlugin.kt @@ -12,7 +12,6 @@ import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.withType import org.gradle.language.nativeplatform.internal.BuildType import java.io.File -import java.lang.module.ModuleDescriptor.Version import java.util.Locale import java.util.concurrent.atomic.AtomicBoolean @@ -28,17 +27,6 @@ class AppVersioningPlugin : Plugin { project.plugins.withType { androidAppPluginApplied.set(true) val extension = project.extensions.getByType() - - val gradleVersion = Version.parse(project.gradle.gradleVersion) - check(gradleVersion >= Version.parse(MIN_GRADLE_VERSION)) { - "Android App Versioning Gradle Plugin requires Gradle $MIN_GRADLE_VERSION or later. Detected Gradle version is $gradleVersion." - } - - val agpVersion = Version.parse(extension.pluginVersion.version) - check(agpVersion >= Version.parse(MIN_AGP_VERSION)) { - "Android App Versioning Gradle Plugin requires Android Gradle Plugin $MIN_AGP_VERSION or later. Detected AGP version is $agpVersion." - } - extension.onVariants(selector = extension.selector().all()) { variant -> if (pluginDisabled.get()) return@onVariants if (!appVersioningExtension.enabled.get()) { @@ -159,10 +147,7 @@ class AppVersioningPlugin : Plugin { return replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() } } - companion object { - private const val MIN_GRADLE_VERSION = "6.8" - private const val MIN_AGP_VERSION = "7.0.0-beta04" - } + companion object } private const val APP_VERSIONING_TASK_GROUP = "versioning"