2
0

More than 1 year has passed since last update.

Google mapをJetpack Composeで扱うための環境構築

Last updated at Posted at 2022-12-29

公式ドキュメントのインストール手順通りに進めてもうまく行かない箇所があったのでここに調査結果をまとめる。
なお、すでに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を扱うための環境は整った。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0