Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
- **Languages**: Kotlin (primary for all new code) and Java (legacy — existing Java code is not subject to Kotlin standards, but should be internally consistent)
- **Architecture**: Gradle multi-module monorepo
- **Build system**: Gradle with Kotlin DSL (`build.gradle.kts`), convention plugins in `build-logic/plugins/`
- **Min SDK**: 24, **Compile SDK**: 37, **JVM toolchain**: 17
- **Min SDK**: 24, **Compile SDK**: 36, **JVM toolchain**: 17
- **Dependency management**: Version catalog at `gradle/libs.versions.toml` — all dependencies, plugins, and versions MUST be declared there
- Root `gradle.properties` — version (`VERSION_NAME`), group (`POM_GROUP=com.amplifyframework`)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {

private fun Project.configureAndroid(extension: LibraryExtension) {
extension.apply {
compileSdk = 37
// From AGP 9 a library publishes `minCompileSdk` equal to its own compileSdk, so this
// value is the compileSdk every consumer is forced onto. 37 would require consumers to
// move to AGP 9 as well, so it stays at 36 until that migration is something we want to
// ask of them. Raising it means checking what the published AARs then demand.
compileSdk = 36

buildFeatures {
buildConfig = true
Expand All @@ -81,7 +85,7 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {

// From AGP 9 an unset targetSdk defaults to compileSdk rather than minSdk, which
// puts the generated test manifest above the newest SDK the pinned Robolectric
// knows ("targetSdkVersion=37 > maxSdkVersion=31"). Pinning it to minSdk keeps
// knows ("targetSdkVersion=36 > maxSdkVersion=31"). Pinning it to minSdk keeps
// tests on the SDK they already ran against. Raising it means upgrading
// Robolectric first.
targetSdk = 24
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ class KotlinMultiplatformConventionPlugin : Plugin<Project> {
// this one has to reach for the nested extension by type.
(this as ExtensionAware).extensions.configure<KotlinMultiplatformAndroidLibraryExtension> {
namespace = "com.amplifyframework.${project.name.replace("-", ".")}"
compileSdk = 37
// Kept in step with AndroidLibraryConventionPlugin, which explains why this is 36.
compileSdk = 36
minSdk = 24

withHostTestBuilder {
Expand Down
4 changes: 3 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ mockito-inline = "5.2.0"
mockk = "1.14.11"
navigation = "2.3.4"
oauth2 = "0.26.0"
okhttp = "5.5.0"
# okhttp-android 5.5.0 declares minCompileSdk=37, which would push that requirement onto consumers
# and force them to AGP 9. Held at 5.4.0 (minCompileSdk=36) until we take that step.
okhttp = "5.4.0"
robolectric = "4.17"
rxjava = "3.1.12"
slf4j = "2.0.20"
Expand Down
Loading