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

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

1.始める前に

4cddd34bd261cea0.png

このコードラボでは、 Firebase App Distributionとそのfastlaneプラグインを使用して、iOSアプリをテスターに​​配布し、テストデバイスのUDIDを収集して、アプリのプロビジョニングプロファイルに登録する方法を学習します。これにより、アドホックビルドをテスターに​​すばやく組み込むことができます。 '手。

あなたが学ぶこと

  • Firebase App Distributionとfastlaneを使用して、プレリリースiOSアプリ(アドホック)をテスターに​​アップロードして配布する方法。
  • テスターとしてサインアップし、テストデバイスに分散アプリをダウンロードする方法。
  • App Distributionのfastlaneプラグインを使用してテストデバイスのUDIDをエクスポートすることにより、テストデバイスをすばやく登録する方法。
  • アプリのプロビジョニングプロファイルを更新し、配布用に再アップロードする方法。

必要なもの

  • Googleアカウント
  • XCode11.7 +がインストールされたAppleマシン
  • Xcodeに組み込まれたアドホックプレリリースiOSアプリ
  • 有料のAppleDeveloperアカウント
  • テスト用の物理iOSデバイス。

iOSシミュレーターアプリはほとんどのコードラボで動作しますが、シミュレーターはリリースをダウンロードできません。

App Distribution Tester 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とAppleIDを含めます。
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. 最初のレーンを作成し、 fastlaneのbuild_appアクション( gymとも呼ばれます)を使用して、。/ fastlane / ./fastlane/Fastfileに以下を追加して、アプリをビルドします。
default_platform(:ios)

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

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

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にアップロードします

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

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

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

このプロジェクトでGoogleAnalyticsを有効にする必要はありません。

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

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

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

9c26c130a6c42212.png

  1. 次のいくつかの手順をスキップして、[コンソールに進む]をクリックします。後でアプリにSDKを追加します。

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

66f79cc8a97fa8e9.png

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

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

460213326c2784ae.png

fastlaneにディストリビューションを設定する

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

コマンドでオプションの入力を求められた場合は、オプション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. 次に、ログインアクションにより、更新トークンが出力されます。このトークンは、AppDistributionプラグインがFirebaseでの認証に使用します。

dbd61c40c4131158.png

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

$ export FIREBASE_TOKEN= <token>

アプリを配布する

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

  1. firebase_app_idの先頭で、 ./fastlane/Fastfileという変数を定義します。 <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.テスターを招待してアプリをダウンロードします

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

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

  1. firebase_app_idの上部にある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

メールアドレスを含めると、FirebaseAppDistributionからアプリのテストを招待するメールが届きます。あなたは今、最初のテスターです!以下のセクションを続けて、テストデバイスでテスターとして設定します。

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

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

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

d833407de251b89f.png

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

fd141215e54a938d.png

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

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

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

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

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

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

fe93d649dfa25877.png

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

7b9f665a63a384cf.png

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

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

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

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

241a9936898a2fc0.png

  1. 「AppleUDIDのエクスポート」をクリックします。

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. コンソールから行ったのと同じように、AppDistributionプラグインの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デベロッパコンソールへのddデバイス

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

$ fastlane add_new_devices

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

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

  1. ビルドレーンのプロビジョニングプロファイルステップにforce引数を追加して、 buildたびに新しいデバイスを強制的に取得するようにします。
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 DistributionTesterWebアプリに戻ります。

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

dad6d03b6ad78746.png

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

7.おめでとうございます

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

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

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

参考文献