アプリの配布とfastlaneを使用して、プレリリースのiOSビルドをより速く配布します

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

1. 始める前に

4cddd34bd261cea0.png

この 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構成と統合されます。

  1. fastlane をインストールしてセットアップします
  2. セットアップ中にプロジェクトのルート ディレクトリでfastlane initを実行し、[手動セットアップ] を選択します。 fastlaneの構成に使用するFastfileAppfile 、およびPluginfileを含むfastlaneというサブディレクトリが表示されます。

3. fastlane でアプリをビルドする

アプリをビルドする

  1. ./fastlane/Appfile でfastlane用のいくつかのグローバル変数を設定します./fastlane/Appfile.アプリの ID と Apple ID を含めます。
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. 最初のレーンを作成し、以下を./fastlane/Fastfileに追加して、 fastlane のbuild_appアクション ( gymとも呼ばれます) を使用してアプリをビルドします。
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. アプリに署名して配布します。

このコードラボでは、 get_certificates ( certとも呼ばれます) を使用して独自の証明書とプロファイルを管理します。これにより、署名証明書がローカルで生成され、すべてが macOS キーチェーンに保存されます。ただし、通常はfastlane sync_code_signing action ( matchとも呼ばれます) を使用して、チームのコード署名証明書とプロファイルを安全に管理する必要があります。

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. get_provisioning_profileアクション (別名sigh ) を使用して、アプリのプロビジョニング プロファイルを設定します。これにより、アプリをテスターと共有できます。
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [オプション] これまでアプリを実行したことがない場合は、次のコマンドを実行して、Apple 開発者コンソールでアプリを作成します。

$ fastlane produce --skip_itc

  1. 最後に、レーンを実行してアプリをビルドします。

Apple ID、パスワード (キーチェーンに保存されています)、アプリのバンドル ID の入力を求められます。

$ fastlane build

問題が発生した場合は、 fastlaneトラブルシューティング ガイドを参照してください。

4. アプリを Firebase にアップロードする

アプリを作成したので、App Distribution にアップロードする準備が整いました。

Firebase プロジェクトを作成して設定する

  1. Firebase にサインインします。
  2. Firebase コンソールで新しいプロジェクトを作成または追加し、プロジェクトに「UDID Export Codelab」という名前を付けます。

このプロジェクトで Google アナリティクスを有効にする必要はありません。

  1. [プロジェクトを作成]をクリックします。

iOS アプリをプロジェクトに追加する

  1. iOS アイコンをクリックして新しい Firebase iOS アプリを作成し、アプリのバンドル ID を入力します。

9c26c130a6c42212.png

  1. 次のいくつかの手順をスキップして、 [Continue to console]をクリックします。 SDK は後でアプリに追加します。

プロジェクトとアプリが[プロジェクトの概要]ページで利用できるようになりました。

66f79cc8a97fa8e9.png

アプリの配布を有効にする

  1. [リリースと監視] セクションで、 [アプリの配布]をクリックします。
  2. 条件に同意したら、[開始] をクリックして、アプリの App Distribution を有効にします。

460213326c2784ae.png

fastlaneでディストリビューションをセットアップする

  1. iOS プロジェクトのルートから次のコマンドを実行して、App Distribution をfastlane構成に追加します。

コマンドでオプションのプロンプトが表示された場合は、オプション 3: RubyGems.orgを選択します。

$ fastlane add_plugin firebase_app_distribution

  1. プラグインがインストールされていることを確認します。

$ fastlane

出力では、インストールされているプラ​​グインのリストにfastlane-plugin-firebase_app_distributionが表示されます。

  1. プラグインがインストールされていることを確認したら、オプション 0 を選択してキャンセルします。

Firebase プロジェクトを認証する

fastlaneプラグインを使用するには、まず Firebase プロジェクトを認証します。

  1. 次のコマンドを実行します。

$ fastlane run firebase_app_distribution_login

  1. コマンドによって認証リンクが出力されたら、ブラウザでリンクを開きます。
  2. プロンプトが表示されたら、Google アカウントにサインインし、Firebase プロジェクトへのアクセス許可を付与します。

結果のコードをログイン ブラウザからコピーし、コマンド ラインに貼り付けます。

  1. ログイン アクションは更新トークンを出力します。この更新トークンは、App Distribution プラグインが Firebase での認証に使用します。

dbd61c40c4131158.png

  1. FIREBASE_TOKEN環境変数を設定してトークンを渡します。

$ export FIREBASE_TOKEN= <token>

アプリを配布する

これで、アプリを配布する準備が整いました。

  1. ./fastlane/Fastfileの先頭で、 firebase_app_idという変数を定義します。 <your_app_id>を、作成したアプリの Firebase アプリ ID に置き換えます (これはプロジェクト設定ページにあります)。

Fastfileは Ruby で記述されているため、Ruby 構文を使用して変数を定義します。

firebase_app_id = "<your_app_id>"
  1. ビルド レーンを呼び出すdistributeという新しいレーンを追加し、 firebase_app_distributionアクションを使用してアプリを配布します。
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. 新しいレーンを実行してアプリをビルドし、ディストリビューションを作成します。

$ 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 コンソールを更新すると、アプリの新しいリリースが表示されます。

c59dc1a94de3bf3c.png

5. テスターに​​アプリのダウンロードを依頼する

テスターが Ad Hoc ビルドのテストへの招待を受け入れると、UDID を共有する許可を求められます。ユーザーが同意すると、App Distribution はユーザーのデバイス情報を収集し、メールで通知します。このセクションでは、配布したアプリをダウンロードしてテストするテスターとして自分自身を追加します。

自分をテスターとしてリリースに追加する

  1. Fastfile の上部にあるfirebase_app_idの下に、テスターを保持する変数を作成し、自分のメール アドレスと、試してみたいその他のオプションのメール アドレスを含めます。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. 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
  1. レーンをもう一度実行します。

$ fastlane distribute

レーンを実行すると、追加したテスターは App Distribution から招待メールを受け取り、新たにリリースが利用可能になったことを通知します。 Firebase コンソールで、アプリのリリースの下に追加したテスターを確認できるようになりました。

2e0fc9603b868af8.png

メール アドレスを入力したので、Firebase App Distribution から、アプリをテストするよう招待するメールが届きます。あなたが最初のテスターです!以下のセクションに進み、テスト デバイスでテスターとして設定します。

テスト デバイスを登録する

テスターとして、テストに招待されたアプリ リリースにアクセスするには、テスト デバイスで Google にログインする必要があります。テスト ビルドはアドホック リリースであるため、Firebase プロファイルをインストールしてテスト デバイスを登録する必要もあります。その後、利用可能になったリリースには、デバイスのホーム画面に追加された Web クリップを使用して、App Distribution テスター Web アプリからアクセスできます。

  1. iOS テスト デバイスで、Firebase App Distribution から送信されたメールを開き、 [開始する]リンクをタップします。リンクは必ずSafariで開いてください。
  2. これで、App Distribution テスター Web アプリが表示されます。表示されるページで、Google アカウントでサインインし、 [招待を受け入れる] をタップします。

d833407de251b89f.png

  1. 招待されたリリースを確認できるようになりました。いずれかのリリースの下にある[デバイスの登録]をタップします。

fd141215e54a938d.png

  1. プロンプトが表示されたら、Firebase プロファイルをダウンロードし、プロファイルを設定アプリにインストールします。

プロファイルをインストールすると、Firebase に次の権限が付与されます。

  • デバイスの一意のデバイス ID (UDID) を収集して、テスト デバイスを登録します。

Firebase は、Firebase プロジェクトのすべての所有者と編集者に、テスト デバイスの UDID を含むメールを送信します。

  • テスト デバイスのホーム画面に Web クリップをインストールします。 Web クリップは App Distribution テスター Web アプリを開き、すべてのテスト アプリをインストールしてアクセスできるようにします。

App Distribution テスター Web アプリで、テスト デバイスがアプリのリリース用に登録されました。

fe93d649dfa25877.png

テスト デバイスの UDID を Firebase に共有したので、デベロッパーとして再開できます。 App Distribution ダッシュボード[テスター] タブで、テスター情報がアプリのリリースの下に「承認済み」のステータスで表示されるようになりました。

7b9f665a63a384cf.png

次のセクションでは、デバイスの UDID をアプリのプロビジョニング プロファイルに追加し、テスト デバイスで動作するバージョンのアプリをビルドします。

テスター デバイスの UDID をエクスポートする

開発者は、テスト デバイスの UDID を含むメールを Firebase から受け取ります。オプションとして、App Distribution を使用すると、複数の新しいデバイス UDID を一度に簡単に収集できます。これにより、それらを Firebase コンソールから生のテキスト ファイルとして直接エクスポートできます。

  1. すべての UDID をエクスポートするには、 [テスターとグループ]タブを開きます。

241a9936898a2fc0.png

  1. [Apple UDID のエクスポート] をクリックします。

bcf0c26c522d9b4e.png

このファイルには、テスト デバイスの UDID が含まれている必要があります。

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

UDID は、次のセクションで行うfastlaneを使用してコマンド ラインからエクスポートすることもできます。

6. アプリのプロビジョニング プロファイルを更新して再構築する

ここで、テスト デバイスの UDID をアプリのプロビジョニング プロファイルに追加し、デバイスで動作するアプリのバージョンを再構築して、新しいバージョンを配布します。

UDIDエクスポートレーンを追加

  1. Fastfile の先頭に別の変数を追加し、テスターのデバイス UDID がダウンロードされるファイル パスに設定します。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. コンソールから行ったのと同じように、App Distribution プラグインの UDID エクスポート アクションを使用してテスター UDID をダウンロードする新しいレーンをセットアップします。
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. 次のレーンを実行して、UDID をダウンロードします。

$ fastlane download_udids

  1. ダウンロードしたファイルを印刷します。このファイルには、テスト デバイスの UDID が含まれている必要があります。

$ cat tester_udids.txt

Apple 開発者コンソールへのデバイスの追加

  1. 次のレーンを作成して、UDID を Apple 開発者コンソールのデバイス リストに追加します。これにより、 fastlane のregister_devicesアクションを使用してプロビジョニング プロファイルに追加できます。
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. 次に、レーンを実行します。

$ fastlane add_new_devices

その後、開発者コンソールのデバイス リストに新しいデバイスが表示されます。

デバイスをプロビジョニング プロファイルに追加する

  1. ビルドするたびに新しいデバイスを強制的に取得するために、 buildレーンのプロビジョニング プロファイル ステップにforce引数を追加します。
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

レーンを再実行してビルドおよびアップロードする

ここで、 distributeレーンを新しいレーンで更新して、デバイスをプロビジョニング プロファイルに追加し、アプリを再ビルドしてから配布します。

  1. 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
  1. 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 が含まれたので、それらをテスト デバイスにインストールできます。

e275f73d57cc8fb1.png

  1. テスト デバイスで、電子メール内のリンクまたはデバイスのホーム画面のアイコンを使用して、App Distribution テスター Web アプリに戻ります。

UDID コードラボ アプリに移動すると、リリースをダウンロードする準備ができていることがわかります。

dad6d03b6ad78746.png

  1. 物理デバイスを使用している場合は、ダウンロードを押してから、アプリをインストールして実行してください!

7.おめでとう

これで、App Distribution とfastlaneを構成して、プレリリース テスト プロセスを自動化できました。これで、追加のテスターを招待したり、その UDID をアプリに追加したりしたい場合は、1 つのコマンドを実行するだけで済みます: fastlane distribute

そのため、テスターから個別に UDID を収集したり、Apple 開発者コンソールにアクセスしてデバイス リストやプロビジョニング プロファイルを更新したりする必要はもうありません。 XCode を開く必要さえありません。

このワークフローは、継続的インテグレーション環境で毎時間または毎日実行するように簡単に設定できます。

参考文献