iOS編の続き。AndroidもローカルからApp Distributionに配信できるようにする。
1.環境を分けてビルド
Androidの方はめちゃくちゃ簡単で、この記事を参考にgradleで設定すれば問題なくできる。flavorはiOSの側と合わせておく。
https://medium.com/flutter-community/flutter-ready-to-go-e59873f9d7de
2.fastlaneのインストール
iOS編でインストールしているのでスキップ。
3.Fastfileを作る
flavorを分けたら、それに合わせてFlutterでビルドする。App DistributionではAppBundleに対応していないので、apkで出力する。
テストする端末に合わせて32bit版と64bit版両方欲しかったので、オプションに--split-per-abi
も追加する。
$ flutter build apk --split-per-abi --release --flavor staging --target lib/main_staging.dart
$ cd android
$ fastlane init
fastlane/Fastfile
とfastlane/Appfile
ができるので、Appfile
のpackage_name
を確認しておく。今回はスキップしたけど、GooglePlayStoreにアップしたい場合は、GooglePlayConsoleからjson_key_file
を用意する。
https://docs.fastlane.tools/getting-started/android/setup/#collect-your-google-credentials
4.Firebase App Distributionにアップする
androidの側でもfirebase_app_distributionプラグインをインストールする。途中、Gemfileを作るか聞かれるので"y"と答えておく。
$ fastlane add_plugin firebase_app_distribution
Gemfile
とGemfile.lock
、fastlane/Pluginfile
が作成される。あとはFastfileにfirebase_app_distributionのアクションを追加する。
default_platform(:android)
platform :android do
desc "Submit a new Staging Build to Firebase AppDistribution"
lane :staging do
firebase_app_distribution(
app: "(Firebase上のアプリ ID)",
groups: "dev",
release_notes: "from fastlane (32bit)",
apk_path: "../build/app/outputs/apk/staging/release/app-staging-armeabi-v7a-release.apk",
firebase_cli_path: `which firebase`.strip()
)
firebase_app_distribution(
app: "(Firebase上のアプリ ID)",
groups: "dev",
release_notes: "from fastlane (64bit)",
apk_path: "../build/app/outputs/apk/staging/release/app-staging-arm64-v8a-release.apk",
firebase_cli_path: `which firebase`.strip()
)
end
end
apkの出力自体はすでにFlutterで行っているので、firebase_app_distributionのapk_path
に出力されたapkのパスを渡してある。
firebase_app_distributionの実行にfirebase-toolsのバージョン7.4.0以上が必要なので、インストールする。今回はローカルからのアップなので、Firebaseへのログインもしておく。
すでにインストールしている場合はここはスキップする。
$ npm install -g firebase-tools
$ firebase login
以上で準備は整ったので、fastlaneを実行する。Gemfileを作ったので、bundle exec
から起動する。
$ bundle exec fastlane staging
おわり
iOS編と同様に、App Distributionに配信できるようになった。
次はGithub Actionsでビルドしたり、GooglePlayにアップできるようにもしたいところ。