mapbox_glのAndroid対応
MapBoxのFlutter向け非公式ライブラリ mapbox_gl
のmaster最新コミット (f90d54
) をAndroidで動かしたときの設定メモです。
iOSでの設定つまづきポイントはこちら。
ビルド時
6.3
に上げる
gradleのバージョンを Could not initialize class org.codehaus.groovy.runtime.InvokerHelper
みたいなエラーを潰す。
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
20
に上げる
minSdkVersionを minSdkVersion 16 cannot be smaller than version 20 declared in library
と言われるので従う。
android {
︙
defaultConfig {
︙
- minSdkVersion 16
+ minSdkVersion 20
︙
}
}
Registry tokenを設定する
SDK Registry token is null. See README.md for more information.
と言われる。
Registry tokenとはおそらく、mapbox_gl
が内部で使っているMapBox SDKのダウンロードに使うためのトークンのこと。これがないと403でアクセスできない現象をiOSで見た (それは ~/netrc
にトークンを置いて解決したのにAndroidは無理なのか?)。
環境変数に SDK_REGISTRY_TOKEN
を設定できればどんな手段でも良い。
VSCodeならワークスペース設定が便利そう。
{
"dart.env": {
"SDK_REGISTRY_TOKEN": "YOUR_TOKEN_HERE"
}
}
実行時
アクセストークンを渡す
Failed to find an Access Token in the Application meta-data.
と言われる。
これも MapboxMap
Widgetのinitializerにトークンを渡すことができればどんな手段でも良いが、ソースコードにベタ書きしてコミットしてしまうのはトークンに設定した権限によっては問題かもしれないので、環境変数か何かを介して渡せるようにするのが良いと思う。
flutter_dotenv が便利そう。
Discussion