Android App Bundle をビルドしてテストする

Android App Bundle は、複数のデバイス設定にわたってアプリをビルド、公開、配布するためのおすすめの方法です。App Bundle でも、Play Feature Delivery、Play Asset Delivery、Instant エクスペリエンスなどの高度な機能を有効にできます。 App Bundle を初めて採用する場合でも、より高度なユースケース向けに開発する場合でも、このページで概説する、開発の各段階でアプリをテストするためのさまざまな戦略が利用できます。

App Bundle を初めて使用する場合は、Android App Bundle についてをご覧ください。

Android Studio を使用して App Bundle をビルドする

Android Studio を使用する場合は、数回クリックするだけで署名済みの App Bundle としてプロジェクトをビルドできます。IDE を使用しない場合は、コマンドラインから App Bundle をビルドできます。次に、App Bundle を Play Console にアップロードし、アプリをテストまたは公開します。

App Bundle をビルドする手順は次のとおりです。

  1. Android Studio 3.2 以降をダウンロードする。機能モジュールを追加して App Bundle をビルドする最も簡単な方法です。

  2. Android Studio を使用して Android App Bundle をビルドする。また、実行 / デバッグ構成を変更し、App Bundle から APK をデプロイするオプションを選択して、アプリを App Bundle から接続デバイスにデプロイすることもできます。このオプションを使用すると、APK のみをビルド、デプロイする場合と比較して、ビルド時間が長くなることにご注意ください。

  3. Android App Bundle をデプロイする。App Bundle を使用して、デバイスにデプロイする APK を生成します。

  4. アプリの Play アプリ署名に登録する。登録しないと、Play Console に App Bundle をアップロードできません。

  5. App Bundle を Google Play に公開する

Android Studio で App Bundle を使用してデプロイする

Android App Bundle としてアプリをビルドし、IDE から直接接続したデバイスにデプロイできます。IDE と Google Play は同じツールを使用して APK を抽出し、デバイスにインストールするため、このローカルテスト戦略で以下の内容について確認できます。

  • アプリを App Bundle としてビルドできる。
  • IDE が App Bundle から対象のデバイス設定向けに APK を抽出できる。
  • 機能モジュールに分割した機能が、アプリのベース モジュールで利用できる。
  • アプリが期待どおりに対象デバイスで機能する。

Android Studio から接続済みデバイスにアプリをデプロイする際、デフォルトでは、IDE によって対象のデバイス設定向けの APK がビルドされ、デプロイされます。これは、特定のデバイス設定向けに APK をビルドするほうが、アプリがサポートするすべてのデバイス設定向けに App Bundle をビルドするよりも早いからです。

テストとして、アプリから App Bundle をビルドし、その後で App Bundle から接続デバイスに APK をデプロイする場合は、次のようにデフォルトの実行 / デバッグ構成を編集します。

  1. メニューバーから [Run] > [Edit Configurations] を選択します。
  2. 左側のペインから実行 / デバッグ構成を選択します。
  3. 右側のペインで [General] タブを選択します。
  4. [Deploy] の横のプルダウン メニューから [APK from app bundle] を選択します。
  5. アプリに含まれる Instant App 版をテストする場合は、[Deploy as an instant app] チェックボックスをオンにします。
  6. アプリに機能モジュールが含まれる場合は、各モジュールの横にあるチェックボックスをオンにして、デプロイするモジュールを選択できます。Android Studio はデフォルトではすべての機能モジュールをデプロイし、ベース アプリ モジュールを必ずデプロイします。
  7. [Apply] または [OK] をクリックします。

メニューバーから [Run] > [Run] を選択すると、Android Studio により App Bundle がビルドされ、接続済みデバイスと、選択した機能モジュールに必要な APK だけがその App Bundle からデプロイされます。

コマンドラインからのビルドとテスト

App Bundle をビルドして APK に変換するために Android Studio と Google Play が 使用するツールは、コマンドラインから手動で利用できます。つまり、これらのツールをコマンドラインから起動し、ローカルにビルドした Android App Bundle からアプリをデプロイできます。

このローカル テストツールは、以下の場合に便利です。

  • App Bundle の設定可能なビルドを、継続的インテグレーション(CI)サーバーなどのカスタムビルド環境に統合する。
  • App Bundle から接続済みテストデバイスへのアプリのデプロイを自動化する。
  • Google Play から接続済みデバイスへのアプリのダウンロードをエミュレートする。

コマンドラインから App Bundle をビルドする

コマンドラインから App Bundle をビルドする場合は、bundletool または Android Gradle プラグインを使用します。

Android Gradle プラグイン: このプラグインは Google が作成したもので、Android Studio にバンドルされており、Maven リポジトリとしても利用できます。プラグインには、コマンドラインから App Bundle をビルドするために実行できるコマンドが定義されています。このプラグインを使用すると App Bundle を最も簡単にビルドできますが、テストデバイスにアプリをデプロイするには bundletool を使用する必要があります。

bundletool: このコマンドライン ツールは、Android Gradle プラグインと Google Play の両方で App Bundle のビルドに使用され、GitHub から入手できますbundletool を使用して App Bundle をビルドする方法は、プラグインを使用して Gradle タスクを実行する方法よりかなり複雑になります。プラグインでは App Bundle をビルドするための一部の必須条件が自動化されているからです。ただし、このツールは CI ワークフロー内で App Bundle アーティファクトを生成する場合に便利です。

どちらの方法でも App Bundle をビルドする方法については、コマンドラインからアプリをビルドするをご覧ください。

コマンドラインからアプリをデプロイする

コマンドラインから App Bundle をビルドするには Android Gradle プラグインを使用するのが最も簡単な方法ですが、App Bundle から接続済みデバイスにアプリをデプロイするには bundletool を使用する必要があります。これは、bundletool が App Bundle のテストと Google Play からの配布のエミュレートを行う専用のコマンドを提供しているためです。

bundletool を使用してテストできるシナリオには、以下のようなさまざまな場合があります。

  • アプリがサポートするすべてのデバイス設定向けの分割 APK を含めた APK セットを生成します。bundletool が接続済みデバイスにアプリをデプロイする前に、通常はこの APK セットをビルドする必要があります。
    • アプリの分割 APK をすべて含めたセットをビルドしたくない場合は、接続済みデバイスまたはデバイス仕様の JSON に基づいて、そのデバイス専用の APK セットを生成できます。
  • APK セットから接続済みデバイスにアプリをデプロイします。bundletool は、adb を使用して、各デバイス設定に必要な分割 APK を判断し、それらの APK だけをデバイスにデプロイします。複数のデバイスがある場合は、デバイス ID を bundletool に渡して、特定のデバイスを対象にすることもできます。
  • 機能配信のオプションをローカルでテストしますbundletool を使用すると、実際にアプリを Play Console に公開することなく、Google Play からデバイスへの機能モジュールのダウンロードとインストールをエミュレートできます。これは、オンデマンドのモジュールのダウンロード リクエストとその失敗をアプリがどのように処理するかをローカルにテストする場合に便利です。
  • デバイス設定ごとにアプリのダウンロード サイズを推定します。これにより、アプリをダウンロードするユーザー エクスペリエンスについて把握し、App Bundle の場合、または Instant 版を有効にする場合の圧縮ダウンロード サイズの制限をアプリが満たしているかどうかを確認できます。

Play で App Bundle をテストする

このページで説明した前述のテスト戦略ではアプリを Play にアップロードしませんでしたが、Play Console を使用してテストすると、ユーザー エクスペリエンスを最も正確に把握できます。社内の関係者、社内の QA チーム、アルファ版テスターのクローズド グループ、あるいはベータ版テスターの広範なユーザー グループのいずれとアプリを共有する場合でも、Play Console には複数のテスト戦略があります。

Play Console を使用してアプリをテストする理由として、以下が考えられます。

  • アプリをダウンロードする際、さらに必要に応じて、オンデマンドで機能をインストールする際のユーザー エクスペリエンスについて最も正確な情報を得るため。
  • テスター グループが簡単にアクセスできるようにするため。
  • QA、アルファ版、ベータ版のテスターに対してテストの範囲を設定するため。
  • 各デバイスでテストできるアプリのアップロードの履歴にアクセスするため。たとえば、パフォーマンスの低下についてバージョンを比較する場合です。

URL を使ってアプリをすぐに共有する

Play Console のテストトラックを使用すると、アプリの正式なテストを段階的に進める方法を採用できますが、ときには、正式なチャネル以外のメールやテキスト メッセージなどで、Trusted Tester とアプリをすぐに共有したい場合もあります。

App Bundle を Play Console の内部アプリ共有のページにアップロードすると、他のユーザーと簡単に共有できる URL を生成できます。この方法でアプリを共有すると、次のようなメリットがあります。

  • チームの誰でも認証されると、Play Console でアプリへのアクセス権が付与されなくても、テストビルドをアップロードできるようになります。
  • テスターは、共有された特定のテスト バージョンのアプリにしかアクセスできません。
  • テストビルドに対して任意の鍵で署名することも、まったく署名しないこともできるので、アップロードするユーザーも製品版の鍵やアップロード鍵にアクセスする必要がありません。
  • バージョン コードは一意である必要がないため、既存のバージョン コードを再利用可能で、アップロードのたびにコードを増やす必要はありません。
  • 機能のオンデマンドでのダウンロードやアプリ内アップデートなど、カスタム配信オプションをテストできます。
  • アプリのデバッグ可能なバージョンを共有することで、重要なデータやログを取得できます。

ユーザーが Android デバイスでその URL をクリックすると、Google Play ストアが自動的に開き、アプリのテスト版がダウンロードされます。このテスト戦略の実施方法と、機能と制限の詳細については、URL でアプリを共有する方法についての記事、または次の動画をご覧ください。

アプリの過去のバージョンをダウンロードする

デベロッパーやテスターは、製品版トラックやテストトラックにアップロードしたことがあるアプリの過去のバージョンをダウンロードすることもできます。これはたとえば、パフォーマンスの低下を確認するために、アプリの旧バージョンをすぐにテストしたい場合に便利です。

Play Console の [App Bundle エクスプローラ] ページにアクセスし、ダウンロードするバージョンの [ダウンロード] タブに移動して、インストール リンクをコピーします。または、テストするアプリのバージョンのパッケージ名とバージョン コードがわかる場合は、テストデバイスから次のようなリンクにそのままアクセスします。

https://play.google.com/apps/test/package-name/version-code

テストトラックにアプリをアップロードする

アプリをアップロードして Play Console でリリースを作成すると、製品版に進む前に複数のテストで段階的にリリースを進めることができます。

  • 内部テスト: 内部テストリリースを作成して、内部テストや品質保証(QA)チェック用のアプリを迅速に配信できます。
  • クローズド テスト:: クローズド リリースを作成し、テスターの数を増やしてアプリのプレリリース版をテストできます。社員や信頼できるユーザーなどの小規模なグループでテストしてから、テストをオープン リリースに拡大できます。アプリのリリースページで、初期のクローズド テストとしてアルファ版トラックを利用できます。必要に応じて、追加のクローズド トラックを作成して名前を付けることもできます。
  • オープンテスト: クローズド リリースをテストした後、オープン リリースを作成します。オープン リリースでは、製品版のアプリを公開する前のテストとして、より広範囲のユーザーを対象にすることができます。

アプリの各テストを段階的に進めていくと、アプリを製品版としてリリースする前に、より多くのテスターに対してアプリを公開できます。Play Console のテストトラックの詳細については、オープンテスト版、クローズド テスト版、内部テスト版をセットアップするをご覧ください。

リリース前レポートを使って問題を特定する

オープン トラックまたはクローズド トラックに APK または App Bundle をアップロードすると、さまざまなバージョンの Android を搭載した広範囲にわたるデバイスで問題を特定できます。

Play Console のリリース前レポートで、以下の問題の可能性を特定できます。

  • 安定性
  • Android の互換性
  • パフォーマンス
  • ユーザー補助
  • セキュリティの脆弱性

App Bundle をアップロードすると、複数のデバイスでアプリが自動的に起動し、数分間クロールされます。このクロールで、入力、タップ、スワイプなどのアプリの基本操作を数秒ごとに行います。

テストが完了すると、結果が Play Console のリリース前レポートに表示されます。詳しくは、Play Console のリリース前レポートを使って問題を特定する方法についてのヘルプ記事をご覧ください。

特定のデバイス設定に対する APK を探し、ダウンロードする

App Bundle をアップロードすると、アプリがサポートするすべてのデバイス設定に対して Play Console で自動的に分割 APK とマルチ APK が生成されます。Play Console の App Bundle エクスプローラを使用して、Google Play で生成されるすべての APK アーティファクトを確認し、サポートされているデバイスや、アプリの配信設定などのデータを検査し、生成された APK をダウンロードしてローカルにデプロイ、テストすることができます。

詳しくは、Play Console の App Bundle の詳細を確認する方法についてのヘルプ記事をご覧ください。

Firebase App Distribution を使用して App Bundle をテストする

Firebase App Distribution を使用すると、アプリのプレリリース版を Trusted Tester に簡単に配布できるため、リリース前に有意義なフィードバックを得ることができます。

App Distribution により、プレリリース版のビルドすべてを中央のハブで管理でき、これらのビルドをコンソールから、またはすでにワークフローの一部になっているコマンドライン ツールを使用して、柔軟に配布できます。

Firebase App Distribution でプロジェクトを有効にするには、いくつかの手順を実施する必要があります。Firebase ドキュメントの始める前にをご覧ください。プロジェクトを設定したら、App Distribution をワークフローと統合する方法を選択します。