From fda5e8e92fe88143597d188f302c1f1143d23b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20L=C3=B3pez=20Ma=C3=B1as?= Date: Fri, 6 Dec 2024 18:22:36 +0100 Subject: [PATCH 1/3] chore: migration to KTS (#1432) * chore: migrated to KTS * chore: added release file * chore: updated .gitignore * chore: added headers * chore: header * chore: header --- .gitignore | 1 + .releaserc | 6 +- build-logic/.gitignore | 2 + build-logic/convention/build.gradle.kts | 42 ++++ .../main/kotlin/PublishingConventionPlugin.kt | 124 ++++++++++++ build-logic/settings.gradle.kts | 30 +++ build.gradle | 185 ------------------ build.gradle.kts | 47 +++++ demo/{build.gradle => build.gradle.kts} | 39 ++-- gradle/libs.versions.toml | 2 + library/{build.gradle => build.gradle.kts} | 59 +++--- settings.gradle => settings.gradle.kts | 19 +- 12 files changed, 314 insertions(+), 242 deletions(-) create mode 100644 build-logic/.gitignore create mode 100644 build-logic/convention/build.gradle.kts create mode 100644 build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt create mode 100644 build-logic/settings.gradle.kts delete mode 100644 build.gradle create mode 100644 build.gradle.kts rename demo/{build.gradle => build.gradle.kts} (67%) rename library/{build.gradle => build.gradle.kts} (50%) rename settings.gradle => settings.gradle.kts (62%) diff --git a/.gitignore b/.gitignore index 788a3d73f..e43020ee3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ project.properties .DS_Store .java-version secrets.properties +.kotlin diff --git a/.releaserc b/.releaserc index a8883ec5b..fefc4bfa9 100644 --- a/.releaserc +++ b/.releaserc @@ -7,11 +7,11 @@ plugins: - - "@google/semantic-release-replace-plugin" - replacements: - files: - - "build.gradle" + - "build.gradle.kts" from: "\\bversion = '.*'" to: "version = '${nextRelease.version}'" - files: - - "build.gradle" + - "build.gradle.kts" from: "com.google.maps.android:android-maps-utils:([0-9]+).([0-9]+).([0-9]+)" to: "com.google.maps.android:android-maps-utils:${nextRelease.version}'" - files: @@ -23,7 +23,7 @@ plugins: publishCmd: "./gradlew publish --warn --stacktrace" - - "@semantic-release/git" - assets: - - "build.gradle" + - "build.gradle.kts" - "*.md" - "@semantic-release/github" options: diff --git a/build-logic/.gitignore b/build-logic/.gitignore new file mode 100644 index 000000000..256f6d78c --- /dev/null +++ b/build-logic/.gitignore @@ -0,0 +1,2 @@ +*/build +.gradle \ No newline at end of file diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts new file mode 100644 index 000000000..0525b582a --- /dev/null +++ b/build-logic/convention/build.gradle.kts @@ -0,0 +1,42 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + `kotlin-dsl` +} + +repositories { + google() + mavenCentral() + gradlePluginPortal() +} + + +dependencies { + implementation(libs.kotlin.gradle.plugin) + implementation(libs.gradle) + implementation(libs.dokka.gradle.plugin) + implementation(libs.org.jacoco.core) +} + +gradlePlugin { + plugins { + register("publishingConventionPlugin") { + id = "android.maps.utils.PublishingConventionPlugin" + implementationClass = "PublishingConventionPlugin" + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt b/build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt new file mode 100644 index 000000000..5d31916fe --- /dev/null +++ b/build-logic/convention/src/main/kotlin/PublishingConventionPlugin.kt @@ -0,0 +1,124 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// buildSrc/src/main/kotlin/PublishingConventionPlugin.kt +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.publish.PublishingExtension +import org.gradle.api.publish.maven.MavenPublication +import org.gradle.kotlin.dsl.* +import org.gradle.testing.jacoco.plugins.JacocoPluginExtension +import org.gradle.api.tasks.testing.Test +import org.gradle.testing.jacoco.plugins.JacocoTaskExtension +import org.gradle.plugins.signing.SigningExtension +import org.gradle.api.publish.maven.* + +class PublishingConventionPlugin : Plugin { + override fun apply(project: Project) { + project.run { + + applyPlugins() + configureJacoco() + configurePublishing() + configureSigning() + } + } + + private fun Project.applyPlugins() { + apply(plugin = "com.android.library") + apply(plugin = "com.mxalbert.gradle.jacoco-android") + apply(plugin = "maven-publish") + apply(plugin = "org.jetbrains.dokka") + apply(plugin = "signing") + } + + private fun Project.configureJacoco() { + configure { + toolVersion = "0.8.7" + + } + + tasks.withType().configureEach { + extensions.configure(JacocoTaskExtension::class.java) { + isIncludeNoLocationClasses = true + excludes = listOf("jdk.internal.*") + } + } + } + + private fun Project.configurePublishing() { + extensions.configure { + publishing { + singleVariant("release") { + withSourcesJar() + withJavadocJar() + } + } + } + extensions.configure { + publications { + create("aar") { + afterEvaluate { + from(components["release"]) + } + pom { + name.set(project.name) + description.set("Handy extensions to the Google Maps Android API.") + url.set("https://github.com/googlemaps/android-maps-utils") + scm { + connection.set("scm:git@github.com:googlemaps/android-maps-utils.git") + developerConnection.set("scm:git@github.com:googlemaps/android-maps-utils.git") + url.set("scm:git@github.com:googlemaps/android-maps-utils.git") + } + licenses { + license { + name.set("The Apache Software License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + distribution.set("repo") + } + } + organization { + name.set("Google Inc") + url.set("http://developers.google.com/maps") + } + developers { + developer { + name.set("Google Inc.") + } + } + } + } + } + repositories { + maven { + val releasesRepoUrl = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") + val snapshotsRepoUrl = uri("https://oss.sonatype.org/content/repositories/snapshots/") + url = if (project.version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl + credentials { + username = project.findProperty("sonatypeToken") as String? + password = project.findProperty("sonatypeTokenPassword") as String? + } + } + } + } + } + + private fun Project.configureSigning() { + configure { + sign(extensions.getByType().publications["aar"]) + } + } +} diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 000000000..d674100b2 --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,30 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +dependencyResolutionManagement { + repositories { + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" +include(":convention") diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 3bc54dc11..000000000 --- a/build.gradle +++ /dev/null @@ -1,185 +0,0 @@ -/** - * Copyright 2023 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -buildscript { - ext.kotlin_version = '2.0.21' - repositories { - google() - mavenCentral() - maven { - url 'https://plugins.gradle.org/m2/' - } - } - dependencies { - classpath libs.gradle - classpath libs.jacoco.android - classpath libs.secrets.gradle.plugin - classpath libs.kotlin.gradle.plugin - classpath libs.dokka.gradle.plugin - } -} - - -allprojects { - repositories { - google() - mavenCentral() - flatDir { - dirs 'libs' - } - } -} - -tasks.register('clean', Delete) { - delete rootProject.buildDir -} - -ext.projectArtifactId = { project -> - if (project.name == 'library') { - return 'android-maps-utils' - } else { - return null - } -} - -allprojects { - group = 'com.google.maps.android' - version = '3.9.0' - project.ext.artifactId = rootProject.ext.projectArtifactId(project) -} - -/** - * Publishing and signing info - */ -subprojects { project -> - if (project.ext.artifactId == null) return - - apply plugin: 'com.android.library' - apply plugin: 'com.mxalbert.gradle.jacoco-android' - apply plugin: 'maven-publish' - apply plugin: 'signing' - - // Code coverage - jacoco { - toolVersion = "0.8.8" - } - - tasks.withType(Test).configureEach { - jacoco.includeNoLocationClasses = true - jacoco.excludes = ['jdk.internal.*'] - } - - tasks.register('javadoc', Javadoc) { - options.memberLevel = JavadocMemberLevel.PUBLIC - options.encoding = "utf-8" - failOnError = false - exclude '**/BuildConfig.java' - exclude '**/R.java' - source = android.sourceSets.main.java.srcDirs - doFirst { - classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) - } - android.libraryVariants.all { variant -> - if (variant.name == 'release') { - owner.classpath += variant.javaCompileProvider.get().classpath - } - } - options.addStringOption('-ignore-source-errors', '-quiet') - } - - tasks.register('sourcesJar', Jar) { - from android.sourceSets.main.java.srcDirs - archiveClassifier = 'sources' - } - - tasks.register('javadocJar', Jar) { - dependsOn dokkaHtml - archiveClassifier = 'javadoc' - from dokkaHtml.outputDirectory - } - - publishing { - publications { - aar(MavenPublication) { - groupId project.group - artifactId project.ext.artifactId - version project.version - - pom { - name = project.ext.artifactId - description = 'Handy extensions to the Google Maps Android API.' - url = 'https://github.com/googlemaps/android-maps-utils' - - scm { - url = 'scm:git@github.com:googlemaps/android-maps-utils.git' - connection = 'scm:git@github.com:googlemaps/android-maps-utils.git' - developerConnection = 'scm:git@github.com:googlemaps/android-maps-utils.git' - } - - licenses { - license { - name = 'The Apache Software License, Version 2.0' - url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' - distribution = 'repo' - } - } - - organization { - name = 'Google Inc' - url = 'http://developers.google.com/maps' - } - - developers { - developer { - name = 'Google Inc.' - } - } - } - - pom.withXml { - def dependenciesNode = asNode().appendNode('dependencies') - project.configurations.api.allDependencies.each { dependency -> - def dependencyNode = dependenciesNode.appendNode('dependency') - dependencyNode.appendNode('groupId', dependency.group) - dependencyNode.appendNode('artifactId', dependency.name) - dependencyNode.appendNode('version', dependency.version) - } - } - - afterEvaluate { - artifact "$buildDir/outputs/aar/$project.name-release.aar" - artifact sourcesJar - artifact javadocJar - } - } - } - - repositories { - maven { - name = "mavencentral" - url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" - credentials { - username sonatypeToken - password sonatypeTokenPassword - } - } - } - } - - signing { - sign publishing.publications.aar - } -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 000000000..f64434e08 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,47 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +buildscript { + val kotlinVersion by extra(libs.versions.kotlin.get()) + + repositories { + google() + mavenCentral() + } + + dependencies { + classpath(libs.gradle) + classpath(libs.jacoco.android) + classpath(libs.secrets.gradle.plugin) + classpath(libs.kotlin.gradle.plugin) + classpath(libs.dokka.gradle.plugin) + } +} + +tasks.register("clean") { + delete(rootProject.buildDir) +} + + +allprojects { + group = "com.google.maps.android" + version = "3.9.0" + val projectArtifactId = if (project.name == "library") { + "android-maps-utils" + } else { + null + } +} \ No newline at end of file diff --git a/demo/build.gradle b/demo/build.gradle.kts similarity index 67% rename from demo/build.gradle rename to demo/build.gradle.kts index b6f915bbf..46db97c5d 100644 --- a/demo/build.gradle +++ b/demo/build.gradle.kts @@ -1,5 +1,5 @@ /** - * Copyright 2020 Google Inc. + * Copyright 2024 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,29 +15,32 @@ */ plugins { - id 'com.android.application' - id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' - id 'kotlin-android' + id("com.android.application") + id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") + id("kotlin-android") } android { - lintOptions { + lint { sarifOutput = file("$buildDir/reports/lint-results.sarif") } defaultConfig { - compileSdk 35 - applicationId "com.google.maps.android.utils.demo" - minSdkVersion 21 - targetSdkVersion 35 - versionCode 1 - versionName "1.0" + compileSdk = 35 + applicationId = "com.google.maps.android.utils.demo" + minSdk = 21 + targetSdk = 35 + versionCode = 1 + versionName = "1.0" } buildTypes { release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) } } @@ -47,14 +50,13 @@ android { kotlin { jvmToolchain(17) } - namespace 'com.google.maps.android.utils.demo' + namespace = "com.google.maps.android.utils.demo" } // [START maps_android_utils_install_snippet] dependencies { - // [START_EXCLUDE silent] - implementation project(':library') + implementation(project(":library")) implementation(libs.appcompat) implementation(libs.lifecycle.extensions) @@ -69,12 +71,11 @@ dependencies { } // [END maps_android_utils_install_snippet] - secrets { // To add your Maps API key to this project: // 1. Create a file ./secrets.properties // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY - defaultPropertiesFileName 'local.defaults.properties' - propertiesFileName 'secrets.properties' + defaultPropertiesFileName ="local.defaults.properties" + propertiesFileName = "secrets.properties" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 660d5c7a3..a6f2a4478 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,6 +16,7 @@ robolectric = "4.12.2" kxml2 = "2.3.0" mockk = "1.13.11" lint = "31.7.3" +org-jacoco-core = "0.8.11" [libraries] appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" } @@ -41,3 +42,4 @@ lint-checks = { module = "com.android.tools.lint:lint-checks", version.ref = "li lint = { module = "com.android.tools.lint:lint", version.ref = "lint" } lint-tests = { module = "com.android.tools.lint:lint-tests", version.ref = "lint" } testutils = { module = "com.android.tools:testutils", version.ref = "lint" } +org-jacoco-core = { module = "org.jacoco:org.jacoco.core", version.ref = "org-jacoco-core" } \ No newline at end of file diff --git a/library/build.gradle b/library/build.gradle.kts similarity index 50% rename from library/build.gradle rename to library/build.gradle.kts index d8e39ddd5..6d23185ce 100644 --- a/library/build.gradle +++ b/library/build.gradle.kts @@ -14,39 +14,35 @@ * limitations under the License. */ plugins { - id 'kotlin-android' - id 'org.jetbrains.dokka' -} - -dokkaHtml { - moduleName.set("android-maps-utils ") + id("kotlin-android") + id("org.jetbrains.dokka") + id("android.maps.utils.PublishingConventionPlugin") } android { - lintOptions { + lint { sarifOutput = file("$buildDir/reports/lint-results.sarif") } defaultConfig { - compileSdk 35 - minSdkVersion 21 - targetSdkVersion 35 - versionCode 1 - versionName "1.0" - consumerProguardFiles 'consumer-rules.pro' - // This enables us to tell when we're running unit tests on Travis (#573) - buildConfigField("String", "TRAVIS", "\"" + System.getenv('TRAVIS') + "\"") + compileSdk = 35 + minSdk = 21 + targetSdk = 35 + consumerProguardFiles("consumer-rules.pro") + buildConfigField("String", "TRAVIS", "\"${System.getenv("TRAVIS")}\"") } buildTypes { release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) } } - resourcePrefix 'amu_' - // This enables long timeouts required on slow environments, e.g. Travis + resourcePrefix = "amu_" adbOptions { - timeOutInMs 10 * 60 * 1000 // 10 minutes - installOptions "-d", "-t" + timeOutInMs = 10 * 60 * 1000 // 10 minutes + installOptions("-d", "-t") } kotlinOptions { jvmTarget = "17" @@ -55,22 +51,19 @@ android { jvmToolchain(17) } testOptions { - animationsDisabled true - unitTests { - includeAndroidResources = true - returnDefaultValues = true - } + animationsDisabled = true + unitTests.isIncludeAndroidResources = true + unitTests.isReturnDefaultValues = true } - namespace 'com.google.maps.android' + namespace = "com.google.maps.android" } dependencies { - // We are adding api() for the Maps SDK for Android, so it propagates to the app-level modules. api(libs.play.services.maps) implementation(libs.kotlinx.coroutines.android) implementation(libs.appcompat) implementation(libs.core.ktx) - lintPublish project(':lint-checks') + lintPublish(project(":lint-checks")) testImplementation(libs.junit) testImplementation(libs.robolectric) testImplementation(libs.kxml2) @@ -78,8 +71,10 @@ dependencies { implementation(libs.kotlin.stdlib.jdk8) } -tasks.register('instrumentTest') { dependsOn connectedCheck } +tasks.register("instrumentTest") { + dependsOn("connectedCheck") +} -if (System.getenv("JITPACK")) { - apply plugin: 'maven' +if (System.getenv("JITPACK") != null) { + apply(plugin = "maven") } diff --git a/settings.gradle b/settings.gradle.kts similarity index 62% rename from settings.gradle rename to settings.gradle.kts index 7216cb508..ad428a01d 100644 --- a/settings.gradle +++ b/settings.gradle.kts @@ -13,7 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +pluginManagement { + includeBuild("build-logic") + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -include 'demo' -include 'library' -include 'lint-checks' +include("demo", "library", "lint-checks") From f7f48013f53bb092d780583cedf0a711fd32d4bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20L=C3=B3pez=20Ma=C3=B1as?= Date: Fri, 6 Dec 2024 18:24:32 +0100 Subject: [PATCH 2/3] feat: removed dependabot automerge flow (#1430) --- .github/workflows/dependabot.yml | 36 -------------------------------- 1 file changed, 36 deletions(-) delete mode 100644 .github/workflows/dependabot.yml diff --git a/.github/workflows/dependabot.yml b/.github/workflows/dependabot.yml deleted file mode 100644 index 2852ee30c..000000000 --- a/.github/workflows/dependabot.yml +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2022 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: Dependabot -on: pull_request - -permissions: - contents: write - pull-requests: write - -jobs: - test: - uses: ./.github/workflows/test.yml - dependabot: - needs: test - runs-on: ubuntu-latest - if: ${{ github.actor == 'dependabot[bot]' }} - env: - PR_URL: ${{github.event.pull_request.html_url}} - GITHUB_TOKEN: ${{secrets.SYNCED_GITHUB_TOKEN_REPO}} - steps: - - name: approve - run: gh pr review --approve "$PR_URL" - - name: merge - run: gh pr merge --auto --squash --delete-branch "$PR_URL" From 06ba27c5287f99618be68eb132620f74044d7f4d Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 6 Dec 2024 17:29:49 +0000 Subject: [PATCH 3/3] chore(release): 3.10.0 [skip ci] # [3.10.0](https://github.com/googlemaps/android-maps-utils/compare/v3.9.0...v3.10.0) (2024-12-06) ### Features * removed dependabot automerge flow ([#1430](https://github.com/googlemaps/android-maps-utils/issues/1430)) ([f7f4801](https://github.com/googlemaps/android-maps-utils/commit/f7f48013f53bb092d780583cedf0a711fd32d4bb)) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e02ba133..92c8008a7 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ dependencies { // Utilities for Maps SDK for Android (requires Google Play Services) // You do not need to add a separate dependency for the Maps SDK for Android // since this library builds in the compatible version of the Maps SDK. - implementation 'com.google.maps.android:android-maps-utils:3.9.0' + implementation 'com.google.maps.android:android-maps-utils:3.10.0' // Optionally add the Kotlin Extensions (KTX) for full Kotlin language support // See latest version at https://github.com/googlemaps/android-maps-ktx