Migrate to AGP 9.3.0#23
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Migrates the project’s Android/Gradle toolchain to AGP 9.3.0 and Gradle 9.5, updating the version catalog and aligning modules with AGP 9 defaults (including Kotlin “built-in” usage and the updated KMP Android DSL). This fits the codebase’s ongoing modular Gradle/Kotlin setup by keeping all module build scripts and the version catalog in sync with the new plugin/tooling requirements.
Changes:
- Upgraded core build tooling (AGP/Gradle wrapper/Kotlin) and refreshed dependency versions via
gradle/libs.versions.toml. - Updated KMP Android DSL in modules from
androidLibrary {}toandroid {}and bumpedcompileSdkto 37 across affected modules. - Removed usage of the
kotlin-androidplugin alias where applicable (root + app), moving the app tokotlin { compilerOptions { ... } }.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| skins/build.gradle.kts | Migrates KMP Android DSL (androidLibrary → android) and bumps compileSdk to 37. |
| iconpack/build.gradle.kts | Migrates KMP Android DSL (androidLibrary → android) and bumps compileSdk to 37. |
| gradle/wrapper/gradle-wrapper.properties | Updates Gradle wrapper distribution to 9.5.0. |
| gradle/libs.versions.toml | Bumps AGP/Kotlin and multiple library versions; removes kotlin-android plugin alias entry. |
| content/build.gradle.kts | Migrates KMP Android DSL and bumps compileSdk to 37. |
| compose/build.gradle.kts | Migrates KMP Android DSL and bumps compileSdk to 37. |
| build.gradle.kts | Updates ben-manes plugin and removes kotlin-android alias application. |
| baselineProfile/build.gradle.kts | Bumps compileSdk to 37 for baseline profile module. |
| app/build.gradle.kts | Drops kotlin-android plugin usage, configures Kotlin compiler options via kotlin { compilerOptions { ... } }, and bumps compileSdk to 37. |
Adopt AGP 9 with full defaults (no Upgrade-Assistant opt-out flags in
gradle.properties): built-in Kotlin, new DSL, non-final app R class, R8
strict full mode + optimized resource shrinking, unique package names,
uses-sdk disallowed in manifest, target=compileSdk default.
- Catalog: AGP 8.13 -> 9.3.0, Gradle wrapper -> 9.5, Kotlin 2.4.10, KSP
2.3.10, plus dependency bumps (Compose BOM, lifecycle 2.10 -> 2.11, Coil,
SQLDelight, navigation3, ben-manes 0.54, etc.).
- Built-in Kotlin: drop the kotlin-android plugin (app + root + catalog);
app now uses kotlin { compilerOptions }.
- Bump compileSdk 36 -> 37 across all modules (required by androidx.core
1.19.0 / lifecycle 2.11.0 AAR metadata; enforced by AGP 9).
- Rename deprecated kotlin { androidLibrary {} } -> kotlin { android {} }
in KMP modules (compose, content, skins, iconpack).
- Bump lib submodule to the merged android-framework-lib commit (AGP 9
migration + drop of the legacy iosX64 KMP target).
Validated: :app:installDebug + launch on device (Android 16);
:content:testAndroidHostTest 8/8 green.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5b608ee8-35b8-4744-b331-4844ee991f8a
Regenerated app/src/release/generated/baselineProfiles from a nonMinifiedRelease run on a connected device (CPH2653, Android 16) following the AGP 9.3.0 migration and dependency bumps (lifecycle 2.11, Compose BOM, etc.). Rules now reflect the updated startup and critical-path classes/methods (24888 -> 20237 lines). Validated: :app:installRelease (R8 minify + resource shrink + release signing) installs and launches on device with no crash. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5b608ee8-35b8-4744-b331-4844ee991f8a
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
AGP 9.3.0 migration
Migrates the app from AGP 8.13 to 9.3.0, adopts AGP 9 full defaults, and pulls in the dependency-catalog upgrades.
Changes
gradle.properties(built-in Kotlin, new DSL, non-final app R class, R8 strict full mode + optimized resource shrinking, unique package names, uses-sdk disallowed in manifest, target=compileSdk default, non-constrained deps, resValues off by default).kotlin-androidplugin (app + root + catalog); app useskotlin { compilerOptions }.kotlin { androidLibrary {} }→kotlin { android {} }(compose, content, skins, iconpack).lib(android-framework-lib) to4601f8be, which merges the AGP 9 migration (Migrate to AGP 9: compileSdk 37 and android {} KMP DSL android-framework-lib#2) and the drop of the legacyiosX64KMP target (Drop legacy iosX64 (Intel simulator) KMP target android-framework-lib#3).app/src/release/generated/baselineProfileson device after the upgrades (24888 → 20237 rules).Validation
:app:installDebug— builds/installs on a physical device (CPH2653, Android 16); launches, no crash.:app:installRelease— full R8 minify + resource shrink + lintVital + release signing; installs and launches on device with no crash (bundles the regenerated baseline profile).:content:testAndroidHostTest— 8/8 Robolectric tests pass.iosX64 (resolved)
androidx.lifecycle:lifecycle-viewmodel:2.11.0no longer publishes an iosX64 artifact (2.10.0 did). Fixed upstream by dropping theiosX64target from android-framework-lib (anod/android-framework-lib#3, merged);iosArm64+iosSimulatorArm64remain. The submodule bump above folds this fix in, so the KMP resolution error is gone. The Android build/tests were never affected.