From 54d87c80c726d62122039dab967d5b1b715a4f72 Mon Sep 17 00:00:00 2001 From: Dale Hawkins <107309+dkhawk@users.noreply.github.com> Date: Fri, 7 Aug 2026 13:42:13 -0600 Subject: [PATCH 1/6] fix(deps): update maps-ktx to 6.3.0 and project dependencies - Update maps-ktx and maps-utils-ktx to 6.3.0 - Add mavenLocal() repository to dependencyResolutionManagement - Update AGP to 9.3.1 and Gradle wrapper to 9.6.1 - Update com.vanniktech.maven.publish to 0.37.0 - Update constraintlayout to 2.2.2 and material to 1.14.0 - Upgrade Java / Kotlin target versioning to Java 17 across all modules - Update JaCoCo configuration and paths in PublishingConventionPlugin --- .../main/kotlin/PublishingConventionPlugin.kt | 16 ++++++++++++---- gradle/libs.versions.toml | 10 +++++----- gradle/wrapper/gradle-wrapper.properties | 2 +- maps-app/build.gradle.kts | 6 +++--- maps-compose-utils/build.gradle.kts | 6 +++--- maps-compose-widgets/build.gradle.kts | 6 +++--- maps-compose/build.gradle.kts | 6 +++--- settings.gradle.kts | 4 ++++ 8 files changed, 34 insertions(+), 22 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt b/build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt index 3544bc8c..257c3ea7 100644 --- a/build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt @@ -44,7 +44,7 @@ class PublishingConventionPlugin : Plugin { private fun Project.configureJacoco() { configure { - toolVersion = "0.8.11" // Compatible with newer JDKs + toolVersion = "0.8.15" // Compatible with newer JDKs } // AGP 9.0+ built-in Jacoco support or manual configuration. @@ -63,9 +63,17 @@ class PublishingConventionPlugin : Plugin { val mainSrc = "${layout.projectDirectory}/src/main/java" sourceDirectories.setFrom(files(mainSrc)) - // Class directories - we need to point to where Kotlin compiles to - val debugTree = fileTree("${layout.buildDirectory.get()}/tmp/kotlin-classes/debug") - classDirectories.setFrom(files(debugTree)) + // Class directories - AGP 9's built-in Kotlin compiler outputs to + // intermediates/built_in_kotlinc/, not the legacy tmp/kotlin-classes/ path. + classDirectories.setFrom( + fileTree(layout.buildDirectory.dir("intermediates/built_in_kotlinc/debug")) { + include("**/classes/**") + }, + fileTree(layout.buildDirectory.dir("intermediates/javac/debug")) { + include("**/classes/**") + exclude("**/R.class", "**/R\$*.class", "**/BuildConfig.class") + } + ) // Execution data from the unit test task executionData.setFrom(fileTree(layout.buildDirectory.get()) { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 46127a44..98a5d80d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,9 +7,9 @@ androidCompileSdk = "37" androidMinSdk = "23" androidTargetSdk = "37" -agp = "9.2.1" +agp = "9.3.1" dokka = "2.2.0" -gradleMavenPublishPlugin = "0.36.0" +gradleMavenPublishPlugin = "0.37.0" kotlin = "2.4.10" kotlinxCoroutines = "1.11.0" @@ -18,16 +18,16 @@ activitycompose = "1.13.0" androidx-core = "1.19.0" androidx-startup = "1.2.0" compose-bom = "2026.06.01" -constraintlayout = "2.2.1" +constraintlayout = "2.2.2" # Material -material = "1.13.0" +material = "1.14.0" material3 = "1.4.0" materialIconsExtendedAndroid = "1.7.8" # Google Maps Platform mapsecrets = "2.0.1" -mapsktx = "6.2.0" +mapsktx = "6.3.0" # Testing androidCore = "1.7.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c61a118f..a351597e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/maps-app/build.gradle.kts b/maps-app/build.gradle.kts index da2a48e7..a2ffb656 100644 --- a/maps-app/build.gradle.kts +++ b/maps-app/build.gradle.kts @@ -53,8 +53,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { @@ -77,7 +77,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) + jvmTarget.set(JvmTarget.JVM_17) freeCompilerArgs.addAll( "-opt-in=kotlin.RequiresOptIn" ) diff --git a/maps-compose-utils/build.gradle.kts b/maps-compose-utils/build.gradle.kts index 0e3f83df..2e98cc83 100644 --- a/maps-compose-utils/build.gradle.kts +++ b/maps-compose-utils/build.gradle.kts @@ -35,8 +35,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { @@ -54,7 +54,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) + jvmTarget.set(JvmTarget.JVM_17) freeCompilerArgs.addAll( "-Xexplicit-api=strict", "-opt-in=kotlin.RequiresOptIn" diff --git a/maps-compose-widgets/build.gradle.kts b/maps-compose-widgets/build.gradle.kts index c3812eb1..f86d8c6a 100644 --- a/maps-compose-widgets/build.gradle.kts +++ b/maps-compose-widgets/build.gradle.kts @@ -43,8 +43,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { @@ -62,7 +62,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) + jvmTarget.set(JvmTarget.JVM_17) freeCompilerArgs.addAll( "-Xexplicit-api=strict", "-opt-in=kotlin.RequiresOptIn" diff --git a/maps-compose/build.gradle.kts b/maps-compose/build.gradle.kts index 329f934b..b8cbc02c 100644 --- a/maps-compose/build.gradle.kts +++ b/maps-compose/build.gradle.kts @@ -35,8 +35,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { @@ -61,7 +61,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) + jvmTarget.set(JvmTarget.JVM_17) freeCompilerArgs.addAll( "-Xexplicit-api=strict", "-opt-in=kotlin.RequiresOptIn" diff --git a/settings.gradle.kts b/settings.gradle.kts index 41cc0b7e..e0b1768c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,6 +17,10 @@ dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { + if (providers.gradleProperty("useMavenLocal").orNull == "true" || + providers.environmentVariable("USE_MAVEN_LOCAL").orNull == "true") { + mavenLocal() + } google() mavenCentral() } From 019c63a6af18a6686a92410a5a948c59a3bce11a Mon Sep 17 00:00:00 2001 From: Dale Hawkins <107309+dkhawk@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:58:12 -0600 Subject: [PATCH 2/6] build(deps): upgrade android-maps-utils to 5.2.0, AGP to 9.4.0, and Gradle to 9.7.1 - Add explicit android-maps-utils 5.2.0 dependency to maps-compose-utils - Upgrade AGP from 9.3.1 to 9.4.0 - Upgrade Gradle wrapper from 9.6.1 to 9.7.1 --- gradle/libs.versions.toml | 4 +++- gradle/wrapper/gradle-wrapper.properties | 2 +- maps-compose-utils/build.gradle.kts | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 98a5d80d..010837c4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ androidCompileSdk = "37" androidMinSdk = "23" androidTargetSdk = "37" -agp = "9.3.1" +agp = "9.4.0" dokka = "2.2.0" gradleMavenPublishPlugin = "0.37.0" kotlin = "2.4.10" @@ -28,6 +28,7 @@ materialIconsExtendedAndroid = "1.7.8" # Google Maps Platform mapsecrets = "2.0.1" mapsktx = "6.3.0" +mapsutils = "5.2.0" # Testing androidCore = "1.7.0" @@ -72,6 +73,7 @@ material = { group = "com.google.android.material", name = "material", version.r # Google Maps Platform maps-ktx-std = { module = "com.google.maps.android:maps-ktx", version.ref = "mapsktx" } maps-ktx-utils = { module = "com.google.maps.android:maps-utils-ktx", version.ref = "mapsktx" } +maps-utils = { module = "com.google.maps.android:android-maps-utils", version.ref = "mapsutils" } maps-secrets-plugin = { module = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin", version.ref = "mapsecrets" } # Testing diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a9db1155..ad7845be 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 diff --git a/maps-compose-utils/build.gradle.kts b/maps-compose-utils/build.gradle.kts index 2e98cc83..d7b2f664 100644 --- a/maps-compose-utils/build.gradle.kts +++ b/maps-compose-utils/build.gradle.kts @@ -84,6 +84,7 @@ dependencies { implementation(libs.kotlin) implementation(libs.kotlinx.coroutines.android) api(libs.maps.ktx.utils) + api(libs.maps.utils) testImplementation(libs.test.junit) } From 04c8cc8e0b4ed1dd2f30b8ee01706dfd03ffe821 Mon Sep 17 00:00:00 2001 From: Dale Hawkins <107309+dkhawk@users.noreply.github.com> Date: Tue, 1 Sep 2026 17:25:39 -0600 Subject: [PATCH 3/6] test(clustering): call getMarkers() on MarkerManager.Collection In android-maps-utils 5.2.0, MarkerManager was migrated from Java to Kotlin, where getMarkers() is declared as a function rather than a synthetic property. --- .../maps/android/compose/GoogleMapViewClusteringTests.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maps-app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewClusteringTests.kt b/maps-app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewClusteringTests.kt index ae5d02b7..d4807c3c 100644 --- a/maps-app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewClusteringTests.kt +++ b/maps-app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewClusteringTests.kt @@ -80,12 +80,12 @@ class GoogleMapViewClusteringTests { composeTestRule.waitUntil(timeoutMillis = 10_000) { composeTestRule.runOnUiThread { val cm = clusterManagerHolder[0] - cm != null && cm.markerCollection.markers.isNotEmpty() + cm != null && cm.markerCollection.getMarkers().isNotEmpty() } } return composeTestRule.runOnUiThread { - clusterManagerHolder[0]!!.markerCollection.markers.first() + clusterManagerHolder[0]!!.markerCollection.getMarkers().first() } } From b03cac8ded483577f9f2eda64b55ea4cedbb6bb4 Mon Sep 17 00:00:00 2001 From: Dale Hawkins <107309+dkhawk@users.noreply.github.com> Date: Wed, 2 Sep 2026 07:42:59 -0600 Subject: [PATCH 4/6] build: retain JVM target at Java 11 across all modules Keep Java 11 compatibility across library and app modules to maintain backward compatibility for apps targeting Java 11. --- maps-app/build.gradle.kts | 6 +++--- maps-compose-utils/build.gradle.kts | 6 +++--- maps-compose-widgets/build.gradle.kts | 6 +++--- maps-compose/build.gradle.kts | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/maps-app/build.gradle.kts b/maps-app/build.gradle.kts index a2ffb656..da2a48e7 100644 --- a/maps-app/build.gradle.kts +++ b/maps-app/build.gradle.kts @@ -53,8 +53,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } buildFeatures { @@ -77,7 +77,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) + jvmTarget.set(JvmTarget.JVM_11) freeCompilerArgs.addAll( "-opt-in=kotlin.RequiresOptIn" ) diff --git a/maps-compose-utils/build.gradle.kts b/maps-compose-utils/build.gradle.kts index d7b2f664..8d80be4c 100644 --- a/maps-compose-utils/build.gradle.kts +++ b/maps-compose-utils/build.gradle.kts @@ -35,8 +35,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } buildFeatures { @@ -54,7 +54,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) + jvmTarget.set(JvmTarget.JVM_11) freeCompilerArgs.addAll( "-Xexplicit-api=strict", "-opt-in=kotlin.RequiresOptIn" diff --git a/maps-compose-widgets/build.gradle.kts b/maps-compose-widgets/build.gradle.kts index f86d8c6a..c3812eb1 100644 --- a/maps-compose-widgets/build.gradle.kts +++ b/maps-compose-widgets/build.gradle.kts @@ -43,8 +43,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } buildFeatures { @@ -62,7 +62,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) + jvmTarget.set(JvmTarget.JVM_11) freeCompilerArgs.addAll( "-Xexplicit-api=strict", "-opt-in=kotlin.RequiresOptIn" diff --git a/maps-compose/build.gradle.kts b/maps-compose/build.gradle.kts index b8cbc02c..329f934b 100644 --- a/maps-compose/build.gradle.kts +++ b/maps-compose/build.gradle.kts @@ -35,8 +35,8 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 } buildFeatures { @@ -61,7 +61,7 @@ android { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) + jvmTarget.set(JvmTarget.JVM_11) freeCompilerArgs.addAll( "-Xexplicit-api=strict", "-opt-in=kotlin.RequiresOptIn" From 3ee0e80fd3d30ac24e030efe33f1429066b82756 Mon Sep 17 00:00:00 2001 From: Dale Hawkins <107309+dkhawk@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:21:59 -0600 Subject: [PATCH 5/6] build(deps): update dependencies, dokka, and compose-bom - Upgrade mapsktx to 6.4.1 (Java 11 compatibility release) - Upgrade compose-bom to 2026.08.00 - Upgrade dokka to 2.2.0 and dependency-analysis to 3.19.1 - Add ben-manes versions plugin 0.61.0 for dependency updates tracking --- build.gradle.kts | 6 +++--- gradle/libs.versions.toml | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a20ba426..c03d5442 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,12 +30,12 @@ buildscript { } plugins { - id("org.jetbrains.dokka") version "2.1.0" + alias(libs.plugins.dokka) alias(libs.plugins.compose.compiler) apply false - id("com.autonomousapps.dependency-analysis") version "3.4.1" + alias(libs.plugins.dependency.analysis) + alias(libs.plugins.versions) alias(libs.plugins.android.application) apply false alias(libs.plugins.kotlin.android) apply false - } val projectArtifactId by extra { project: Project -> diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 010837c4..0e49a8d9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,16 +8,18 @@ androidMinSdk = "23" androidTargetSdk = "37" agp = "9.4.0" +dependencyAnalysis = "3.19.1" dokka = "2.2.0" gradleMavenPublishPlugin = "0.37.0" kotlin = "2.4.10" kotlinxCoroutines = "1.11.0" +versions = "0.61.0" # Android activitycompose = "1.13.0" androidx-core = "1.19.0" androidx-startup = "1.2.0" -compose-bom = "2026.06.01" +compose-bom = "2026.08.00" constraintlayout = "2.2.2" # Material @@ -27,7 +29,7 @@ materialIconsExtendedAndroid = "1.7.8" # Google Maps Platform mapsecrets = "2.0.1" -mapsktx = "6.3.0" +mapsktx = "6.4.1" mapsutils = "5.2.0" # Testing @@ -97,6 +99,8 @@ truth = { module = "com.google.truth:truth", version.ref = "truth" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +dependency-analysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } screenshot = { id = "com.android.compose.screenshot", version.ref = "screenshot"} +versions = { id = "com.github.ben-manes.versions", version.ref = "versions" } From 214b014d54b22b2996caae6c6318469565554367 Mon Sep 17 00:00:00 2001 From: Dale Hawkins <107309+dkhawk@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:32:29 -0600 Subject: [PATCH 6/6] build(deps): remove redundant maps-utils dependency android-maps-utils 5.2.0 is already exposed transitively via api(libs.maps.ktx.utils). --- gradle/libs.versions.toml | 2 -- maps-compose-utils/build.gradle.kts | 1 - 2 files changed, 3 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0e49a8d9..71f09189 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -30,7 +30,6 @@ materialIconsExtendedAndroid = "1.7.8" # Google Maps Platform mapsecrets = "2.0.1" mapsktx = "6.4.1" -mapsutils = "5.2.0" # Testing androidCore = "1.7.0" @@ -75,7 +74,6 @@ material = { group = "com.google.android.material", name = "material", version.r # Google Maps Platform maps-ktx-std = { module = "com.google.maps.android:maps-ktx", version.ref = "mapsktx" } maps-ktx-utils = { module = "com.google.maps.android:maps-utils-ktx", version.ref = "mapsktx" } -maps-utils = { module = "com.google.maps.android:android-maps-utils", version.ref = "mapsutils" } maps-secrets-plugin = { module = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin", version.ref = "mapsecrets" } # Testing diff --git a/maps-compose-utils/build.gradle.kts b/maps-compose-utils/build.gradle.kts index 8d80be4c..0e3f83df 100644 --- a/maps-compose-utils/build.gradle.kts +++ b/maps-compose-utils/build.gradle.kts @@ -84,7 +84,6 @@ dependencies { implementation(libs.kotlin) implementation(libs.kotlinx.coroutines.android) api(libs.maps.ktx.utils) - api(libs.maps.utils) testImplementation(libs.test.junit) }