1. 始める前に
この Codelab では、 Firebase App Distributionとそのfastlaneプラグインを使用して、iOS アプリをテスターに配布し、テスト デバイスの UDID を収集してアプリのプロビジョニング プロファイルに登録する方法を学習します。これにより、Ad Hoc ビルドをテスターにすばやく取得できます。手。
学習内容
- Firebase App Distribution とfastlaneを使用して、プレリリース iOS アプリ (アドホック) をテスターにアップロードして配布する方法。
- テスターとしてサインアップし、配布されたアプリをテスト デバイスにダウンロードする方法。
- App Distribution のfastlaneプラグインを使用してテスト デバイスの UDID をエクスポートすることにより、テスト デバイスをすばやく登録する方法。
- アプリのプロビジョニング プロファイルを更新し、配布用に再アップロードする方法。
必要なもの
- Google アカウント
- XCode 11.7+ がインストールされた Apple マシン
- Xcode で構築された Ad Hoc プレリリース iOS アプリ
- 有料のApple Developer アカウント
- テスト用の物理 iOS デバイス。
iOS シミュレーター アプリはほとんどの Codelab で動作しますが、シミュレーターはリリースをダウンロードできません。
App Distribution テスター Web アプリに [ダウンロード] ボタンが表示されることを確認することで、セットアップが機能していることを確認できます。
2. 始めましょう
ファストレーンを設定する
App Distribution はfastlaneと統合して、アプリのプレリリース ビルドの配布を自動化できるようにします。 App Distribution はfastlane構成と統合されます。
- fastlane をインストールしてセットアップします。
- セットアップ中にプロジェクトのルート ディレクトリで
fastlane init
を実行し、[手動セットアップ] を選択します。 fastlaneの構成に使用するFastfile
、Appfile
、およびPluginfile
を含むfastlane
というサブディレクトリが表示されます。
3. fastlane でアプリをビルドする
アプリをビルドする
- ./fastlane/Appfile でfastlane用のいくつかのグローバル変数を設定します
./fastlane/Appfile.
アプリの ID と Apple ID を含めます。
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- 最初のレーンを作成し、以下を
./fastlane/Fastfile
に追加して、 fastlane のbuild_app
アクション (gym
とも呼ばれます) を使用してアプリをビルドします。
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- アプリに署名して配布します。
このコードラボでは、 get_certificates
( cert
とも呼ばれます) を使用して独自の証明書とプロファイルを管理します。これにより、署名証明書がローカルで生成され、すべてが macOS キーチェーンに保存されます。ただし、通常はfastlane sync_code_signing action
( match
とも呼ばれます) を使用して、チームのコード署名証明書とプロファイルを安全に管理する必要があります。
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
-
get_provisioning_profile
アクション (別名sigh
) を使用して、アプリのプロビジョニング プロファイルを設定します。これにより、アプリをテスターと共有できます。
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [オプション] これまでアプリを実行したことがない場合は、次のコマンドを実行して、Apple 開発者コンソールでアプリを作成します。
$ fastlane produce --skip_itc
- 最後に、レーンを実行してアプリをビルドします。
Apple ID、パスワード (キーチェーンに保存されています)、アプリのバンドル ID の入力を求められます。
$ fastlane build
問題が発生した場合は、 fastlaneトラブルシューティング ガイドを参照してください。
4. アプリを Firebase にアップロードする
アプリを作成したので、App Distribution にアップロードする準備が整いました。
Firebase プロジェクトを作成して設定する
- Firebase にサインインします。
- Firebase コンソールで新しいプロジェクトを作成または追加し、プロジェクトに「UDID Export Codelab」という名前を付けます。
このプロジェクトで Google アナリティクスを有効にする必要はありません。
- [プロジェクトを作成]をクリックします。
iOS アプリをプロジェクトに追加する
- iOS アイコンをクリックして新しい Firebase iOS アプリを作成し、アプリのバンドル ID を入力します。
- 次のいくつかの手順をスキップして、 [Continue to console]をクリックします。 SDK は後でアプリに追加します。
プロジェクトとアプリが[プロジェクトの概要]ページで利用できるようになりました。
アプリの配布を有効にする
- [リリースと監視] セクションで、 [アプリの配布]をクリックします。
- 条件に同意したら、[開始] をクリックして、アプリの App Distribution を有効にします。
fastlaneでディストリビューションをセットアップする
- iOS プロジェクトのルートから次のコマンドを実行して、App Distribution をfastlane構成に追加します。
コマンドでオプションのプロンプトが表示された場合は、オプション 3: RubyGems.orgを選択します。
$ fastlane add_plugin firebase_app_distribution
- プラグインがインストールされていることを確認します。
$ fastlane
出力では、インストールされているプラグインのリストにfastlane-plugin-firebase_app_distribution
が表示されます。
- プラグインがインストールされていることを確認したら、オプション 0 を選択してキャンセルします。
Firebase プロジェクトを認証する
fastlaneプラグインを使用するには、まず Firebase プロジェクトを認証します。
- 次のコマンドを実行します。
$ fastlane run firebase_app_distribution_login
- コマンドによって認証リンクが出力されたら、ブラウザでリンクを開きます。
- プロンプトが表示されたら、Google アカウントにサインインし、Firebase プロジェクトへのアクセス許可を付与します。
結果のコードをログイン ブラウザからコピーし、コマンド ラインに貼り付けます。
- ログイン アクションは更新トークンを出力します。この更新トークンは、App Distribution プラグインが Firebase での認証に使用します。
-
FIREBASE_TOKEN
環境変数を設定してトークンを渡します。
$ export FIREBASE_TOKEN=
<token>
アプリを配布する
これで、アプリを配布する準備が整いました。
-
./fastlane/Fastfile
の先頭で、firebase_app_id
という変数を定義します。<your_app_id>
を、作成したアプリの Firebase アプリ ID に置き換えます (これはプロジェクト設定ページにあります)。
Fastfile
は Ruby で記述されているため、Ruby 構文を使用して変数を定義します。
firebase_app_id = "<your_app_id>"
- ビルド レーンを呼び出す
distribute
という新しいレーンを追加し、firebase_app_distribution
アクションを使用してアプリを配布します。
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- 新しいレーンを実行してアプリをビルドし、ディストリビューションを作成します。
$ fastlane distribute
この時点で、Fastfile は次のようになります。
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
Firebase コンソールを更新すると、アプリの新しいリリースが表示されます。
5. テスターにアプリのダウンロードを依頼する
テスターが Ad Hoc ビルドのテストへの招待を受け入れると、UDID を共有する許可を求められます。ユーザーが同意すると、App Distribution はユーザーのデバイス情報を収集し、メールで通知します。このセクションでは、配布したアプリをダウンロードしてテストするテスターとして自分自身を追加します。
自分をテスターとしてリリースに追加する
- Fastfile の上部にある
firebase_app_id
の下に、テスターを保持する変数を作成し、自分のメール アドレスと、試してみたいその他のオプションのメール アドレスを含めます。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- Ruby のArray#joinメソッドを適用して、
app_testers
配列をカンマ区切りの文字列に変換します。これは、testers
パラメーターが期待するものです。次に、結果を firebase_app_distribution のtesters
パラメータに渡しますfirebase_app_distribution.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
この時点で、Fastfile は次のようになります。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- レーンをもう一度実行します。
$ fastlane distribute
レーンを実行すると、追加したテスターは App Distribution から招待メールを受け取り、新たにリリースが利用可能になったことを通知します。 Firebase コンソールで、アプリのリリースの下に追加したテスターを確認できるようになりました。
メール アドレスを入力したので、Firebase App Distribution から、アプリをテストするよう招待するメールが届きます。あなたが最初のテスターです!以下のセクションに進み、テスト デバイスでテスターとして設定します。
テスト デバイスを登録する
テスターとして、テストに招待されたアプリ リリースにアクセスするには、テスト デバイスで Google にログインする必要があります。テスト ビルドはアドホック リリースであるため、Firebase プロファイルをインストールしてテスト デバイスを登録する必要もあります。その後、利用可能になったリリースには、デバイスのホーム画面に追加された Web クリップを使用して、App Distribution テスター Web アプリからアクセスできます。
- iOS テスト デバイスで、Firebase App Distribution から送信されたメールを開き、 [開始する]リンクをタップします。リンクは必ずSafariで開いてください。
- これで、App Distribution テスター Web アプリが表示されます。表示されるページで、Google アカウントでサインインし、 [招待を受け入れる] をタップします。
- 招待されたリリースを確認できるようになりました。いずれかのリリースの下にある[デバイスの登録]をタップします。
- プロンプトが表示されたら、Firebase プロファイルをダウンロードし、プロファイルを設定アプリにインストールします。
プロファイルをインストールすると、Firebase に次の権限が付与されます。
- デバイスの一意のデバイス ID (UDID) を収集して、テスト デバイスを登録します。
Firebase は、Firebase プロジェクトのすべての所有者と編集者に、テスト デバイスの UDID を含むメールを送信します。
- テスト デバイスのホーム画面に Web クリップをインストールします。 Web クリップは App Distribution テスター Web アプリを開き、すべてのテスト アプリをインストールしてアクセスできるようにします。
App Distribution テスター Web アプリで、テスト デバイスがアプリのリリース用に登録されました。
テスト デバイスの UDID を Firebase に共有したので、デベロッパーとして再開できます。 App Distribution ダッシュボードの[テスター] タブで、テスター情報がアプリのリリースの下に「承認済み」のステータスで表示されるようになりました。
次のセクションでは、デバイスの UDID をアプリのプロビジョニング プロファイルに追加し、テスト デバイスで動作するバージョンのアプリをビルドします。
テスター デバイスの UDID をエクスポートする
開発者は、テスト デバイスの UDID を含むメールを Firebase から受け取ります。オプションとして、App Distribution を使用すると、複数の新しいデバイス UDID を一度に簡単に収集できます。これにより、それらを Firebase コンソールから生のテキスト ファイルとして直接エクスポートできます。
- すべての UDID をエクスポートするには、 [テスターとグループ]タブを開きます。
- [Apple UDID のエクスポート] をクリックします。
このファイルには、テスト デバイスの UDID が含まれている必要があります。
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
UDID は、次のセクションで行うfastlaneを使用してコマンド ラインからエクスポートすることもできます。
6. アプリのプロビジョニング プロファイルを更新して再構築する
ここで、テスト デバイスの UDID をアプリのプロビジョニング プロファイルに追加し、デバイスで動作するアプリのバージョンを再構築して、新しいバージョンを配布します。
UDIDエクスポートレーンを追加
- Fastfile の先頭に別の変数を追加し、テスターのデバイス UDID がダウンロードされるファイル パスに設定します。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- コンソールから行ったのと同じように、App Distribution プラグインの UDID エクスポート アクションを使用してテスター UDID をダウンロードする新しいレーンをセットアップします。
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- 次のレーンを実行して、UDID をダウンロードします。
$ fastlane download_udids
- ダウンロードしたファイルを印刷します。このファイルには、テスト デバイスの UDID が含まれている必要があります。
$ cat tester_udids.txt
Apple 開発者コンソールへのデバイスの追加
- 次のレーンを作成して、UDID を Apple 開発者コンソールのデバイス リストに追加します。これにより、 fastlane の
register_devices
アクションを使用してプロビジョニング プロファイルに追加できます。
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- 次に、レーンを実行します。
$ fastlane add_new_devices
その後、開発者コンソールのデバイス リストに新しいデバイスが表示されます。
デバイスをプロビジョニング プロファイルに追加する
- ビルドするたびに新しいデバイスを強制的に取得するために、
build
レーンのプロビジョニング プロファイル ステップにforce
引数を追加します。
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
レーンを再実行してビルドおよびアップロードする
ここで、 distribute
レーンを新しいレーンで更新して、デバイスをプロビジョニング プロファイルに追加し、アプリを再ビルドしてから配布します。
-
distribute
から新しいレーンを呼び出します。
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
-
distribute
レーンを実行します。
$ fastlane distribute
この時点で、Fastfile は次のようになります。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
テスト デバイスからリリースをダウンロードする
アプリにテスト デバイスの UDID が含まれたので、それらをテスト デバイスにインストールできます。
- テスト デバイスで、電子メール内のリンクまたはデバイスのホーム画面のアイコンを使用して、App Distribution テスター Web アプリに戻ります。
UDID コードラボ アプリに移動すると、リリースをダウンロードする準備ができていることがわかります。
- 物理デバイスを使用している場合は、ダウンロードを押してから、アプリをインストールして実行してください!
7.おめでとう
これで、App Distribution とfastlaneを構成して、プレリリース テスト プロセスを自動化できました。これで、追加のテスターを招待したり、その UDID をアプリに追加したりしたい場合は、1 つのコマンドを実行するだけで済みます: fastlane distribute
。
そのため、テスターから個別に UDID を収集したり、Apple 開発者コンソールにアクセスしてデバイス リストやプロビジョニング プロファイルを更新したりする必要はもうありません。 XCode を開く必要さえありません。
このワークフローは、継続的インテグレーション環境で毎時間または毎日実行するように簡単に設定できます。
参考文献
- iOS 向けのアプリ内 SDKなど、 Firebase App Distribution の機能を調べる
- ファストレーンの詳細
- チームのコード署名を
match
で管理する - fastlane をCI に統合する