You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(matrix): Fetch AGP<->Kotlin compat dynamically
Replace the static gradleToKotlin dict with a fetch of the AGP/Kotlin
compatibility table from developer.android.com/build/kotlin-support.
For each AGP version we now pick the highest Kotlin whose required AGP
is <= ours, which is a more direct semantic fit and also catches new
Kotlin minors automatically. The existing Kotlin->min-Gradle floor
check (sourced from kotlinlang.org) stays in place.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(matrix): Skip Kotlin minors with no stable release
The developer.android.com/build/kotlin-support table lists upcoming
Kotlin minors before they ship (e.g. Kotlin 2.4 with AGP 9.1.0 while
only 2.4.0-Beta* is on Maven Central). Resolve each Kotlin minor to
its latest stable patch by reading kotlin-stdlib's maven-metadata.xml
and drop rows whose minor has no stable release yet, so the generated
matrix never references an unpublished version.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* build(deps): Bump KSP to 2.3.7
KSP 2.1.0-1.0.29 is pinned to Kotlin compiler 2.1.0 and fails with
"ksp-2.1.0-1.0.29 is too old for kotlin-2.3.21" when the test matrix
runs the android-instrumentation-sample against newer Kotlin versions.
Bump to 2.3.7, which is the latest KSP2 release — KSP2 is decoupled
from the Kotlin compiler version and works across the Kotlin versions
the matrix now picks from developer.android.com/build/kotlin-support.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* build(deps): Swap in KSP2 only when matrix overrides Kotlin
The pinned KSP (2.1.0-1.0.29, KSP1) is bound to the Kotlin 2.1 compiler
and fails with "ksp is too old for kotlin-X" when the test matrix picks
newer Kotlin versions from developer.android.com/build/kotlin-support.
Bumping KSP directly breaks the default build because KSP2 requires
Kotlin language version 2.0+, but the default Kotlin in Dependencies.kt
is 1.8.20.
Intercept plugin resolution in settings.gradle.kts: when VERSION_KOTLIN
is set (i.e. the matrix is driving the build), use KSP2 2.3.7, which is
decoupled from the Kotlin compiler. Otherwise leave the pinned KSP1 in
place so default / pre-merge builds keep working.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* build(deps): Pick KSP version via BuildPluginsVersion
The settings.gradle.kts resolutionStrategy override didn't work because
plugin-alias requests through the version catalog bypass it — Gradle
rejected the rewrite with "the plugin is already on the classpath with
a different version". Switch to the same pattern the other Kotlin
plugins use: a `BuildPluginsVersion.KSP` field sourced from VERSION_KOTLIN
(KSP2 2.3.7 when Kotlin 2.x, KSP1 2.1.0-1.0.29 otherwise), applied via
`version BuildPluginsVersion.KSP` on both the root `apply false` and the
sample's plugins block.
Verified locally that both default builds (Kotlin 1.8.20, KSP1) and the
matrix path (VERSION_KOTLIN=2.3.21, KSP2) resolve and run
`kspStagingReleaseKotlin` successfully.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(matrix): Strip AGP pre-release and select Kotlin by value
Two related bugs in the AGP -> Kotlin lookup:
1. `agpVersion >= minAgp` evaluates to false for pre-release AGP with
the same major.minor.patch as a stable minAgp (semver rule:
9.3.0-alpha01 < 9.3.0). Strip the pre-release identifier before
the comparison so a row that should match isn't skipped.
2. `maxByOrNull { it.first }` picks the highest minAgp, not the
highest Kotlin. Works by coincidence today under monotonic data
but breaks on ties (e.g. Kotlin 1.4 and 1.5 both require AGP 7.0).
Switch to `it.second` to select by Kotlin version directly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* ref(matrix): Extract helpers and harden Kotlin major parsing
Code cleanup from review:
- Add fetchGooglesourceText() and parseVersionOrNull() helpers to
collapse the repeated URL-base64-decode and try/catch-parse patterns
across six call sites in the compat fetchers.
- Parse the Kotlin major as an Int in BuildPluginsVersion.KSP instead
of matching `startsWith("2.")`, so a future Kotlin "20.x" won't be
misclassified as Kotlin 2.x.
No behavior change; matrix output verified identical.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* drop ksp version from toml
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments