diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b25fb7d2..f4bf46c5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -activitycompose = "1.10.1" +activitycompose = "1.11.0" agp = "8.13.0" androidCore = "1.7.0" androidx-core = "1.17.0" @@ -11,7 +11,7 @@ gradleMavenPublishPlugin = "0.34.0" jacoco-plugin = "0.2.1" junit = "4.13.2" junitktx = "1.3.0" -kotlin = "2.2.10" +kotlin = "2.2.20" kotlinxCoroutines = "1.10.2" leakcanaryAndroid = "2.14" mapsecrets = "2.0.1" @@ -22,7 +22,7 @@ screenshot = "0.0.1-alpha11" constraintlayout = "2.2.1" material = "1.13.0" robolectric = "4.16" -truth = "1.4.4" +truth = "1.4.5" [libraries] android-gradle-plugin = { module = "com.android.tools.build:gradle", version.ref = "agp" } diff --git a/maps-app/build.gradle.kts b/maps-app/build.gradle.kts index 28d01da6..01234fd9 100644 --- a/maps-app/build.gradle.kts +++ b/maps-app/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("com.android.application") id("kotlin-android") @@ -8,7 +10,7 @@ plugins { android { lint { - sarifOutput = file("$buildDir/reports/lint-results.sarif") + sarifOutput = layout.buildDirectory.file("reports/lint-results.sarif").get().asFile } buildTypes { @@ -43,9 +45,14 @@ android { compose = true } - kotlinOptions { - jvmTarget = "1.8" - freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" + + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.addAll( + "-opt-in=kotlin.RequiresOptIn" + ) + } } experimentalProperties["android.experimental.enableScreenshotTest"] = true diff --git a/maps-app/src/main/java/com/google/maps/android/compose/markerexamples/AdvancedMarkersActivity.kt b/maps-app/src/main/java/com/google/maps/android/compose/markerexamples/AdvancedMarkersActivity.kt index 98d082b8..fc62f6d1 100644 --- a/maps-app/src/main/java/com/google/maps/android/compose/markerexamples/AdvancedMarkersActivity.kt +++ b/maps-app/src/main/java/com/google/maps/android/compose/markerexamples/AdvancedMarkersActivity.kt @@ -183,7 +183,6 @@ class AdvancedMarkersActivity : ComponentActivity(), OnMapsSdkInitializedCallbac when (renderer) { MapsInitializer.Renderer.LATEST -> Log.d("MapsDemo", "The latest version of the renderer is used.") MapsInitializer.Renderer.LEGACY -> Log.d("MapsDemo", "The legacy version of the renderer is used.") - else -> {} } } } \ No newline at end of file diff --git a/maps-compose-utils/build.gradle.kts b/maps-compose-utils/build.gradle.kts index d889f7c2..d0583c13 100644 --- a/maps-compose-utils/build.gradle.kts +++ b/maps-compose-utils/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("kotlin-android") alias(libs.plugins.compose.compiler) @@ -6,7 +8,7 @@ plugins { android { lint { - sarifOutput = file("$buildDir/reports/lint-results.sarif") + sarifOutput = layout.buildDirectory.file("reports/lint-results.sarif").get().asFile } namespace = "com.google.maps.android.compose.utils" @@ -26,10 +28,14 @@ android { compose = true } - kotlinOptions { - jvmTarget = "1.8" - freeCompilerArgs += "-Xexplicit-api=strict" - freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.addAll( + "-Xexplicit-api=strict", + "-Xopt-in=kotlin.RequiresOptIn" + ) + } } } diff --git a/maps-compose-widgets/build.gradle.kts b/maps-compose-widgets/build.gradle.kts index 5518fa60..8ec76cea 100644 --- a/maps-compose-widgets/build.gradle.kts +++ b/maps-compose-widgets/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("kotlin-android") alias (libs.plugins.compose.compiler) @@ -6,7 +8,7 @@ plugins { android { lint { - sarifOutput = file("$buildDir/reports/lint-results.sarif") + sarifOutput = layout.buildDirectory.file("reports/lint-results.sarif").get().asFile } namespace = "com.google.maps.android.compose.widgets" @@ -26,12 +28,14 @@ android { compose = true } - kotlinOptions { - jvmTarget = "1.8" - freeCompilerArgs += listOf( - "-Xexplicit-api=strict", - "-Xopt-in=kotlin.RequiresOptIn" - ) + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.addAll( + "-Xexplicit-api=strict", + "-Xopt-in=kotlin.RequiresOptIn" + ) + } } } diff --git a/maps-compose/build.gradle.kts b/maps-compose/build.gradle.kts index f1ee4b15..ad2b7599 100644 --- a/maps-compose/build.gradle.kts +++ b/maps-compose/build.gradle.kts @@ -1,4 +1,5 @@ import org.gradle.kotlin.dsl.sourceSets +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("org.jetbrains.kotlin.android") @@ -8,7 +9,7 @@ plugins { android { lint { - sarifOutput = file("$buildDir/reports/lint-results.sarif") + sarifOutput = layout.buildDirectory.file("reports/lint-results.sarif").get().asFile } namespace = "com.google.maps.android.compose" @@ -28,20 +29,24 @@ android { compose = true } - kotlinOptions { - jvmTarget = "1.8" - freeCompilerArgs += listOf( - "-Xexplicit-api=strict", - "-Xopt-in=kotlin.RequiresOptIn", - ) + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.addAll( + "-Xexplicit-api=strict", + "-Xopt-in=kotlin.RequiresOptIn" + ) + } } sourceSets["main"].java.srcDir("build/generated/source/artifactId") } composeCompiler { - stabilityConfigurationFile = - layout.projectDirectory.file("compose_compiler_stability_config.conf") + stabilityConfigurationFiles.set( + listOf(layout.projectDirectory.file("compose_compiler_stability_config.conf")) + ) + if (findProperty("composeCompilerReports") == "true") { reportsDestination = layout.buildDirectory.dir("compose_compiler") } @@ -50,6 +55,7 @@ composeCompiler { } } + dependencies { implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.core) diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt b/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt index 8a01f6f9..c47383a5 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt @@ -59,7 +59,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext /** * A compose container for a [MapView]. @@ -170,7 +169,10 @@ public fun GoogleMap( val componentCallbacks = object : ComponentCallbacks2 { override fun onConfigurationChanged(newConfig: Configuration) {} - @Deprecated("Deprecated in Java", ReplaceWith("onTrimMemory(level)")) + @Deprecated( + "Deprecated in Java", + ReplaceWith("onTrimMemory(level)") + ) override fun onLowMemory() { mapView.onLowMemory() } diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/Marker.kt b/maps-compose/src/main/java/com/google/maps/android/compose/Marker.kt index a0922b14..f2333f8c 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/Marker.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/Marker.kt @@ -29,6 +29,7 @@ import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshots.StateFactoryMarker +import androidx.compose.ui.UiComposable import androidx.compose.ui.geometry.Offset import com.google.android.gms.maps.model.AdvancedMarkerOptions import com.google.android.gms.maps.model.BitmapDescriptor @@ -337,7 +338,7 @@ public fun MarkerComposable( onInfoWindowClick: (Marker) -> Unit = {}, onInfoWindowClose: (Marker) -> Unit = {}, onInfoWindowLongClick: (Marker) -> Unit = {}, - content: @Composable () -> Unit, + content: @UiComposable @Composable () -> Unit, ) { val icon = rememberComposeBitmapDescriptor(*keys) { content() } @@ -411,7 +412,7 @@ public fun MarkerInfoWindow( onInfoWindowClick: (Marker) -> Unit = {}, onInfoWindowClose: (Marker) -> Unit = {}, onInfoWindowLongClick: (Marker) -> Unit = {}, - content: (@Composable (Marker) -> Unit)? = null + content: (@UiComposable @Composable (Marker) -> Unit)? = null ) { MarkerImpl( state = state, @@ -484,8 +485,8 @@ public fun MarkerInfoWindowComposable( onInfoWindowClick: (Marker) -> Unit = {}, onInfoWindowClose: (Marker) -> Unit = {}, onInfoWindowLongClick: (Marker) -> Unit = {}, - infoContent: (@Composable (Marker) -> Unit)? = null, - content: @Composable () -> Unit, + infoContent: (@UiComposable @Composable (Marker) -> Unit)? = null, + content: @UiComposable @Composable () -> Unit, ) { val icon = rememberComposeBitmapDescriptor(*keys) { content() } @@ -557,7 +558,7 @@ public fun MarkerInfoWindowContent( onInfoWindowClick: (Marker) -> Unit = {}, onInfoWindowClose: (Marker) -> Unit = {}, onInfoWindowLongClick: (Marker) -> Unit = {}, - content: (@Composable (Marker) -> Unit)? = null + content: (@UiComposable @Composable (Marker) -> Unit)? = null ) { MarkerImpl( state = state,