@@ -27,7 +27,7 @@ android {
2727 }
2828 defaultConfig {
2929 compileSdk = libs.versions.compileSdk.get().toInt()
30- minSdk = 21
30+ minSdk = libs.versions.minimumSdk.get().toInt()
3131 testOptions.targetSdk = libs.versions.targetSdk.get().toInt()
3232 consumerProguardFiles(" consumer-rules.pro" )
3333 }
@@ -60,13 +60,15 @@ android {
6060 unitTests.isReturnDefaultValues = true
6161 }
6262 namespace = " com.google.maps.android"
63+ sourceSets[" main" ].java.srcDir(" build/generated/source/artifactId" )
6364}
6465
6566dependencies {
6667 api(libs.play.services.maps)
6768 implementation(libs.kotlinx.coroutines.android)
6869 implementation(libs.appcompat)
6970 implementation(libs.core.ktx)
71+ implementation(libs.startup.runtime)
7072 lintPublish(project(" :lint-checks" ))
7173 testImplementation(libs.junit)
7274 testImplementation(libs.robolectric)
@@ -89,3 +91,39 @@ tasks.register("instrumentTest") {
8991if (System .getenv(" JITPACK" ) != null ) {
9092 apply (plugin = " maven" )
9193}
94+
95+ // START: Attribution ID Generation Logic
96+ val attributionId = " gmp_git_androidmapsutils_v$version "
97+
98+ val generateArtifactIdFile = tasks.register(" generateArtifactIdFile" ) {
99+ description = " Generates an AttributionId object from the project version."
100+ group = " build"
101+
102+ val outputDir = layout.buildDirectory.dir(" generated/source/artifactId" )
103+ val packageName = " com.google.maps.android.utils.meta"
104+ val packagePath = packageName.replace(' .' , ' /' )
105+ val outputFile = outputDir.get().file(" $packagePath /ArtifactId.kt" ).asFile
106+
107+ outputs.file(outputFile)
108+
109+ doLast {
110+ outputFile.parentFile.mkdirs()
111+ outputFile.writeText(
112+ """
113+ package $packageName
114+
115+ /**
116+ * Automatically generated object containing the library's attribution ID.
117+ * This is used to track library usage for analytics.
118+ */
119+ public object AttributionId {
120+ public const val VALUE: String = "$attributionId "
121+ }
122+ """ .trimIndent()
123+ )
124+ }
125+ }
126+
127+ tasks.named(" preBuild" ) {
128+ dependsOn(generateArtifactIdFile)
129+ }
0 commit comments