fastlane+FirebaseAppDistributionでFlutterアプリを配信する

welchi
9 min readFeb 25, 2020

--

FirebaseAppDistribution(以降FAD)は開発中のアプリをβテスターへ配信するサービスです。iOS/Androidへ両対応しています。

今回Flutter iOSアプリを、FADで配信してみたので、手順についてまとめます。

環境

  • macOS Mojave 10.14.6
  • fastlane 2.142.0
  • Flutter 1.12.13+hotfix.7

fastlane設定

まず、Flutter公式 の手順に従い、fastlaneをインストールします。

$ brew install fastlane

次に、Flutterプロジェクト内でfastlaneプロジェクトを初期化します。

$ cd <Flutter project dir>/ios
$ fastlane init
...
1. 📸 Automate screenshots
2. 👩‍✈️ Automate beta distribution to TestFlight
3. 🚀 Automate App Store distribution
4. 🛠 Manual setup - manually setup your project to automate your tasks
? 4

これで<Flutter project dir>/ios下にfastlaneディレクトリが生成されます。

次に、Appfileを設定していきます。

AppfileはAppleIDやBundleIdentifier など、fastlaneでビルドに使用する情報を設定するファイルです。

$ cd fastlane
$ vim Appfile

Appfileに次の情報を記載します。

app_identifier("<Bundle Identifier>")
apple_id("<AppleID(mail address)>")

あとは、.bashrcに環境変数にAppleIDのパスワードを追記しておきます。

export FASTLANE_PASSWORD=<your password>

あとは、FADが使えるようにプラグインインストールしておきます。

$ fastlane add_plugin firebase_app_distribution

プロビジョニング・プロファイルを作成

FADでアプリを配信するためには、AppStoreではなくAd Hoc(評価配布用)またはEnterpriseの配布プロファイルを使用する必要があります。(プロファイルがAppStoreだとUUIDを追加できない)

未作成の場合は、AppleDeveloperより作成しておきます。ここではAdHocプロファイルの想定で進めていきます。

プロファイルを作成したら、Xcode>Preference>AccountsよりDownloadManualProfilesをクリックし、作成したプロファイルをダウンロードします。

その後、Signing&Capabilitiesより、手動でプロファイルを設定しておきます。

FirebaseAppDistributionの設定

まず、FirebaseCLIをインストールしていない場合、次のコマンドでインストールします。

$ curl -sL firebase.tools | bash

インストールしたら、次のコマンドでFirebaseへログインします。

$ firebase login

Firebaseコンソール に移動し、プロジェクトを作成します。

プロジェクトを作成後、プロジェクトの左サイドバーより、ProjectOverview>歯車アイコン>プロジェクトの設定をクリックします。

iOSアプリが未登録の場合、「アプリを追加」より追加しておきます。(後で使用するので「アプリID」を控えておいてください)

アプリを追加し終えたら、左サイドバーより品質>AppDistributionをクリックします。

「開始」ボタンをクリックし、FADの利用を始めます。

AppDistribution>テスターとグループ から、テスターやテストグループをを追加します。(ここではmeグループを作成し、自分を追加しています)

テスターへ配布する

それでは、fastlaneを使用してFADへビルドをアップロードしていきます。

<Flutter project dir>/ios/fastlane下のFastfileを次のように編集してください。

default_platform(:ios)
platform :ios do
lane :dist_me do
build_ios_app(export_options: {method: "ad-hoc"})
firebase_app_distribution(
app:"<アプリID>",
groups:"me",
firebase_cli_path:"/usr/local/bin/firebase"
)
end
end

appにはFirebaseで作成したアプリIDを、groupsには配信先グループ名を設定します。

あとは、次のコマンドでFADで配信できます。(プロビジョニング・プロファイルとテスト端末を結びつけていない場合、配信後に届く招待メールから端末のUUIDを登録してください。その後、プロファイルと端末を結びつけ、プロファイルをダウンロードしてから再度コマンドを実行してください)

$ fastlane dist_me

これでテスト端末へ配信できます。

参考

--

--

welchi

株式会社GoodWelchi代表。Flutterが好きです。お仕事のご相談は welchizm@gmail.com までご連絡下さい。 ホームページ: https://goodwelchi.com