公式ドキュメントのインストール手順通りに進めてもうまく行かない箇所があったのでここに調査結果をまとめる。
なお、すでにGoogle mapのAPIキーは取得しているものとする。
プロジェクトを作成する
AndroidStudioのNew ProjectからEmpty Compose Activityを選択し、プロジェクトを作成する。
Google mapをAndroidで扱えるように設定する
Google maps platformのSet up an Android Studio projectを参考に、以下の設定をしていく。
moduleレベルのbuild.gradleに依存関係を追加
dependencies {
implementation 'com.google.android.gms:play-services-maps:18.1.0'
// ...
}
バージョンは以下から最新バージョンを確認して指定する
https://mvnrepository.com/artifact/com.google.android.gms/play-services-maps?repo=google
APIキーを保持する
APIキーをプロパティファイルから取得するライブラリを追加するため、以下をprojectレベルのbuild.gradleに追記する。
plugins {
// ...
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
}
次にmoduleレベルのbuild.gradleに以下を追記する
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
local.propertiesにAPIキーを追記する。
AndroidManifest.xmlに直書きするのではなくlocal.propertiesにAPIキーを記述することで、git管理からAPIキーを除外することができる。
MAPS_API_KEY=取得したAPIキー
AndroidManifest.xmlにmeta-dataを追記する
// ...
<application
//...
tools:targetApi="31">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${MAPS_API_KEY}" />
<activity
Google Play ServiceバージョンをAndroidManifest.xmlに追記する
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
位置情報のpermissionを追加する
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Jetpack ComposeでGoogle mapを扱えるようにする
インストール手順はMaps Composeライブラリの公式に記載があるが、依存関係を追加するだけでは以下のようにアプリ実行時にエラーが発生する。
dependencies {
//...
implementation 'com.google.maps.android:maps-compose:2.8.0'
}
エラー内容
Module was compiled with an incompatible version of Kotlin.
The binary version of its metadata is 1.7.1, expected version is 1.5.1.
調べたところmaps-composeの2.5.3より上記エラーが発生するようになっていた。
対処法
結論から言うと、kotlinのバージョンを上げる必要があった。
kotlinのバージョンとComposeのバージョンは対応させる必要があるため、
公式の互換性対応表を参考に、build.gradleの記述を修正した。
buildscript {
ext {
- compose_version = '1.1.0-beta01'
+ compose_version = '1.3.1'
}
}
plugins {
- id 'org.jetbrains.kotlin.android' version '1.5.31' apply false
+ id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}
さらに1.3.1版のComposeライブラリはandroidのcompileSdkに33を要求するので、moduleレベルのbuild.gradleの以下を修正した。
android {
- compileSdk 32
+ compileSdk 33
defaultConfig {
まとめ
上記で一通りComposeでGoogle mapを扱うための環境は整った。