【Mapbox】Android用Mapbox Maps SDKのアプリ作成での注意点

## はじめに
[Android用Mapbox Maps SDK](https://docs.mapbox.com/jp/android/maps/overview/ "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アプリをビルドするときに発行して使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/53ea1bf5-f16d-b76c-1333-a9bcf7cabeba.png)

## 実行環境

- Windows 10
- Android Studio （Kotlin）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/268bfbe7-4a20-d0af-cf58-5db4aafe47e1.png)

## SDK初期設定
MapboxのAndroidアプリを作成するときには、はじめに、[Mapbox Maps SDK](https://docs.mapbox.com/android/maps/overview/#install-the-maps-sdk "Mapbox Maps SDK")から初期設定をする必要があります。
そこで中段付近に、依存関係について記載されている章があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/0f6e1f9b-becf-8368-c264-10911b849f96.png)

ここで、右側の「Direct download」のタブを選択して、そのまま進めてしまうと、アプリを作成することはできるのですが、タップして起動しようとした時にすぐに、強制終了してしまいます。

少し調べると、どうやら「Direct download」ではプロセスが機能しておらず、「Ｍaven」でセットアップしてくれ、ということでした。
https://stackoverflow.com/questions/63066242/mapbox-android-sdk-error-java-lang-classnotfoundexception-didnt-find-class

Mavenのタブを選択して、セットアップを進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/9a935466-a486-427c-b5fe-b2b74bfb4252.png)

### 注意点
- 4.はModuleのbuild.gradleです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/e544b882-8f4a-e1e2-7cd2-b0053410bc9c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/d6371d86-8128-0801-f3af-706883fd7f75.png)

- 5.はProjextのbuild.gradleです。ここのusernameとpasswordは変更しなくて大丈夫でした。
MAPBOX_DOWNLOADS_TOKENの中身（シークレットトークン）はgradle.propertiesに追記します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/cb511763-6cc0-ff8e-3689-f318baa6c834.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/db1afa8e-2bc9-2276-dda7-ddb81b00fb20.png)

- シークレットトークンは以下を選択して発行しましたが、「DOWNLOADS:READ」にチェックが入っていればいいとのことです。シークレットトークンは発行した直後は表示されていますが、リロードやページ遷移をすると、隠されてしまうのでコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/92e7e529-d391-354d-88e7-0173d1ec29c9.png)

- シークレットトークンは«USER_HOME»/.gradle/gradle.propertiesファイルに記載します。
gradle.propertiesがない場合は、新規ファイルで生成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/777e6714-55ee-2fe3-be72-4efd6543d6f0.png)

- Android Studioの設定でGradleのパスを設定および確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/560e4c26-cf4e-ff27-8404-6b071d11ac27.png)
この設定で、gradle.propertiesのファイルの中身（シークレットトークン）をAndroid Studioで確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/ecd61c99-b15d-42be-37eb-737dc8dcec53.png)

- アクセストークンはres > values > strings.xmlに記載します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/0d9f9d03-4ca7-a94d-4f23-1c72496c523d.png)

- MainActivityにはimportを記載する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/243c06db-57ee-6e72-733e-a59cde3dbf48.png)




あとは、URLのチュートリアル通りに、MainActivityやAndroidManifest.xml、acrivity_mainを追記していきます。

エラーがないことを確認して、実行すると、マップが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/8e72c6fd-8e92-fbef-43be-9645e3ce6999.png)



### 余談
SDKのインポート時に「Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.3.0」というエラーメッセージが出て、なかなか解決できずかなりハマってしまいました。。
シークレットトークンを何回も発行したり、依存関係を見直したり、gradle.propetiesを確認したり色々試しました。
最終的には、usernameをMapboxの登録の名前にしていたため、デフォルトのmapboxに設定するとうまくいった気がします。ただ、今ではMapbox登録アカウント名でも問題なくSDKのインポートとビルドができます、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295868/71b4b9d5-0231-99d7-deb0-6581a6e93b5f.png)