diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8b7fddf1..0b5f7c04 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ kotlinxCoroutines = "1.10.1" leakcanaryAndroid = "2.12" lifecycleRuntimeKtx = "2.8.7" mapsecrets = "2.0.1" -mapsktx = "5.1.1" +mapsktx = "5.2.0" navigation = "6.2.0" org-jacoco-core = "0.8.12" places = "4.2.0" diff --git a/maps-compose/build.gradle.kts b/maps-compose/build.gradle.kts index 7f54638d..b2e17e7c 100644 --- a/maps-compose/build.gradle.kts +++ b/maps-compose/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.kotlin.dsl.sourceSets + plugins { id("org.jetbrains.kotlin.android") alias(libs.plugins.compose.compiler) @@ -33,6 +35,8 @@ android { "-Xopt-in=kotlin.RequiresOptIn", ) } + + sourceSets["main"].java.srcDir("build/generated/source/artifactId") } composeCompiler { @@ -60,3 +64,32 @@ dependencies { androidTestImplementation(libs.androidx.test.espresso) androidTestImplementation(libs.androidx.test.junit.ktx) } + +// Artifact ID logic +val attributionId = "gmp_git_androidmapscompose_v$version" + +val generateArtifactIdFile = tasks.register("generateArtifactIdFile") { + val outputDir = layout.buildDirectory.dir("generated/source/artifactId") + val packageName = "com.google.maps.android.compose.meta" + val packagePath = packageName.replace('.', '/') + val outputFile = outputDir.get().file("$packagePath/ArtifactId.kt").asFile + + outputs.file(outputFile) + + doLast { + outputFile.parentFile.mkdirs() + outputFile.writeText( + """ + package $packageName + + public object AttributionId { + public const val VALUE: String = "$attributionId" + } + """.trimIndent() + ) + } +} + +tasks.named("preBuild") { + dependsOn(generateArtifactIdFile) +} 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 b7595b23..2468e373 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 @@ -44,9 +44,12 @@ import androidx.lifecycle.findViewTreeLifecycleOwner import com.google.android.gms.maps.GoogleMapOptions import com.google.android.gms.maps.LocationSource import com.google.android.gms.maps.MapView +import com.google.android.gms.maps.MapsApiSettings + import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.MapColorScheme import com.google.android.gms.maps.model.PointOfInterest +import com.google.maps.android.compose.meta.AttributionId import com.google.maps.android.ktx.awaitMap import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineStart @@ -148,7 +151,8 @@ public fun GoogleMap( AndroidView( modifier = modifier, factory = { context -> - MapView(context, googleMapOptionsFactory()).also { mapView -> + MapView(context, googleMapOptionsFactory()) .also { mapView -> + MapsApiSettings.addInternalUsageAttributionId(context, AttributionId.VALUE ) val componentCallbacks = object : ComponentCallbacks2 { override fun onConfigurationChanged(newConfig: Configuration) {} @Deprecated("Deprecated in Java", ReplaceWith("onTrimMemory(level)"))