はじめに
Android用Mapbox Maps SDKを参考にはじめてのMapboxアプリを作成しているときに直面したエラーにかなりハマったため、共有します。
この記事では、環境構築からMapboxのチュートリアルで簡単なAndroidアプリを起動するまで、を対象としています。
以下のURLを参考にアプリを作成しようとした時に、自分がハマったところをポイントで抜き出してまとめています。
https://docs.mapbox.com/android/maps/overview/#add-the-dependency
https://docs.mapbox.com/android/maps/overview/#install-the-maps-sdk
https://docs.mapbox.com/help/tutorials/first-steps-android-sdk/
https://www.youtube.com/watch?v=VzQEbGyGe4E
事前準備
Mapboxのアカウントを作成する必要があります。
サインアップをして以下のアカウント画面が表示されるとOKです。
一部情報は隠しています。「SECRET TOKEN」と書いてある場所は後で説明するAndroidアプリをビルドするときに発行して使用します。
実行環境
- Windows 10
- Android Studio (Kotlin)
SDK初期設定
MapboxのAndroidアプリを作成するときには、はじめに、Mapbox Maps SDKから初期設定をする必要があります。
そこで中段付近に、依存関係について記載されている章があります。
ここで、右側の「Direct download」のタブを選択して、そのまま進めてしまうと、アプリを作成することはできるのですが、タップして起動しようとした時にすぐに、強制終了してしまいます。
少し調べると、どうやら「Direct download」ではプロセスが機能しておらず、「Maven」でセットアップしてくれ、ということでした。
https://stackoverflow.com/questions/63066242/mapbox-android-sdk-error-java-lang-classnotfoundexception-didnt-find-class
注意点
- 4.はModuleのbuild.gradleです。
- 5.はProjextのbuild.gradleです。ここのusernameとpasswordは変更しなくて大丈夫でした。
MAPBOX_DOWNLOADS_TOKENの中身(シークレットトークン)はgradle.propertiesに追記します。
-
シークレットトークンは以下を選択して発行しましたが、「DOWNLOADS:READ」にチェックが入っていればいいとのことです。シークレットトークンは発行した直後は表示されていますが、リロードやページ遷移をすると、隠されてしまうのでコピーします。
-
シークレットトークンは«USER_HOME»/.gradle/gradle.propertiesファイルに記載します。
gradle.propertiesがない場合は、新規ファイルで生成します。
-
Android Studioの設定でGradleのパスを設定および確認します。
この設定で、gradle.propertiesのファイルの中身(シークレットトークン)をAndroid Studioで確認することができます。
あとは、URLのチュートリアル通りに、MainActivityやAndroidManifest.xml、acrivity_mainを追記していきます。
エラーがないことを確認して、実行すると、マップが表示されます。
余談
SDKのインポート時に「Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.3.0」というエラーメッセージが出て、なかなか解決できずかなりハマってしまいました。。
シークレットトークンを何回も発行したり、依存関係を見直したり、gradle.propetiesを確認したり色々試しました。
最終的には、usernameをMapboxの登録の名前にしていたため、デフォルトのmapboxに設定するとうまくいった気がします。ただ、今ではMapbox登録アカウント名でも問題なくSDKのインポートとビルドができます、、