mapbox_glのAndroid対応
MapBoxのFlutter向け非公式ライブラリ mapbox_gl のmaster最新コミット (f90d54) をAndroidで動かしたときの設定メモです。
iOSでの設定つまづきポイントはこちら。
ビルド時
gradleのバージョンを 6.3 に上げる
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
minSdkVersionを 20 に上げる
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