1. 始める前に
このコードラボでは、 Firebase App Distributionとそのfastlaneプラグインを使用して、iOS アプリをテスターに配布し、テストデバイスの UDID を収集し、アプリのプロビジョニング プロファイルに登録する方法を学びます。これにより、アドホック ビルドをテスターに迅速に取得できるようになります。 '手。
学べること
- Firebase App Distribution とfastlaneを使用して、プレリリース iOS アプリ (アドホック) をアップロードしてテスターに配布する方法。
- テスターとしてサインアップし、配布されたアプリをテスト デバイスにダウンロードする方法。
- App Distribution のfastlaneプラグインを使用してテスト デバイスの UDID をエクスポートし、テスト デバイスを迅速に登録する方法。
- アプリのプロビジョニング プロファイルを更新し、配布のために再アップロードする方法。
必要なもの
- Googleアカウント
- XCode 11.7+ がインストールされた Apple マシン
- Xcode に組み込まれたアドホックのプレリリース iOS アプリ
- 有料のApple Developer アカウント
- テスト用の物理 iOS デバイス。
iOS シミュレーター アプリはほとんどのコードラボで動作しますが、シミュレーターはリリースをダウンロードできません。
App Distribution テスター Web アプリに [ダウンロード] ボタンが表示されることを確認することで、セットアップが機能したことを確認できます。
2. 始めましょう
ファストレーンをセットアップする
App Distribution はfastlaneと統合され、アプリのプレリリース ビルドの配布を自動化できるようになります。 App Distribution はfastlane構成と統合されます。
- fastlane をインストールしてセットアップします。
- セットアップ中にプロジェクトのルート ディレクトリで
fastlane init
を実行し、[手動セットアップ] を選択します。 fastlaneの構成に使用するFastfile
、Appfile
、およびPluginfile
を含むfastlane
というサブディレクトリが表示されます。
Firebase CLIをインストールする
Firebase CLIもインストールする必要があります。 macOS または Linux を使用している場合は、次の cURL コマンドを実行できます。
curl -sL https://firebase.tools | bash
Windows を使用している場合は、インストール手順を読んでスタンドアロン バイナリを入手するか、 npm
経由でインストールしてください。
CLI をインストールしたら、 firebase --version
を実行すると、 12.0.0
以降のバージョンが報告されるはずです。
$ firebase --version 12.0.0
3. fastlane を使用してアプリを構築する
アプリを構築する
- ./fastlane/Appfile でfastlaneのいくつかのグローバル変数を設定します
./fastlane/Appfile.
アプリの ID と Apple ID を含めます。
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- 最初のレーンを作成し、 fastlane の
build_app
アクション (gym
とも呼ばれます) を使用して、./fastlane/Fastfile
に以下を追加してアプリを構築します。
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 Analytics を有効にする必要はありません。
- 「プロジェクトの作成」をクリックします。
iOS アプリをプロジェクトに追加する
- iOS アイコンをクリックして新しい Firebase iOS アプリを作成し、アプリのバンドル ID を入力します。
- 次のいくつかの手順をスキップし、 [コンソールに進む]をクリックします。後でアプリに 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 プロジェクトを認証します。
- 次のコマンドを実行して、CLI を Google アカウントに接続します。
$ firebase login
- コマンドによって認証リンクが出力されたら、そのリンクをブラウザで開きます。
- プロンプトが表示されたら、Google アカウントにログインし、Firebase プロジェクトへのアクセスを許可します。
アプリを配布する
これで、アプリを配布する準備が整いました。
-
./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. テスターを招待してアプリをダウンロードする
テスターがアドホック ビルドをテストするための招待を受け入れると、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 Tester 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 を使用すると、Firebase コンソールから生のテキスト ファイルとして直接エクスポートできるため、複数の新しいデバイス UDID を一度に簡単に収集できます。
- すべての 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 開発者コンソールにデバイスを追加する
- 次のレーンを作成して、Apple 開発者コンソールのデバイス リストに UDID を追加します。これにより、 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 をアプリに追加したりする場合、コマンドfastlane distribute
1 つ実行するだけで済みます。
そのため、テスターから UDID を個別に収集したり、Apple 開発者コンソールにアクセスしてデバイス リストやプロビジョニング プロファイルを更新したりする必要はもうありません。 XCode を開く必要さえありません。
このワークフローは、継続的統合環境で時間ごとまたは毎日実行するように簡単に設定できます。
参考文献
- iOS 用アプリ内 SDKなど、 Firebase App Distribution の機能を詳しく見る
- ファストレーンについて詳しく見る
match
を使用してチームのコード署名を管理する- fastlane をCI に統合する