モジュールのインストールをローカルでテストする

Play Core Library を使用すると、Play ストアに接続せずに、アプリの以下の機能をローカルにテストできるようになります。

このページでは、アプリの分割 APK をテストデバイスにデプロイすることで、Play Core が自動的にその APK を使用して、Play ストアに対してモジュールのリクエスト、ダウンロード、インストールをシミュレートする仕組みについて説明します。

アプリのロジックを変更する必要はありませんが、以下の要件を満たす必要があります。

  • bundletool の最新版をダウンロードしてインストールします。App Bundle からインストール可能な APK の新しいセットをビルドするために、bundletool が必要です。
  • アプリが Play Core 1.7.2 以上を使用していることを確認します。詳しくは、プロジェクトに Play Core Library を含める方法をご覧ください。

APK セットをビルドする

まだビルドしていない場合は、次の手順で、アプリの分割 APK をビルドします。

  1. 以下のいずれかの方法でアプリの App Bundle を作成します。
  2. bundletool を使用して、次のコマンドですべてのデバイス設定向けの APK セットを生成します。

    bundletool build-apks --local-testing
      --bundle my_app.aab
      --output my_app.apks
    

--local-testing フラグを使用すると、Play ストアに接続せずに Play Core Library がローカルな分割 APK を使用して機能モジュールのインストールをテストできるようになるメタデータが APK のマニフェストに指定されます。

アプリをデバイスにデプロイする

--local-testing フラグを使用して APK セットをビルドした後、bundletool を使用して、アプリのベース バージョンをインストールし、その他の APK をデバイスのローカル ストレージに転送します。次のコマンドで両方の操作を実行できます。

bundletool install-apks --apks my_app.apks

これで、アプリが起動し、機能モジュールのダウンロードとインストールのユーザーフローが完了すると、bundletool によってデバイスのローカル ストレージに転送された APK を Play Core Library が使用するようになります。

ネットワーク エラーをシミュレートする

Play ストアからのモジュールのインストールをシミュレートするために、Play Core Library はSplitInstallManager の代わりとなる FakeSplitInstallManager を使用してモジュールをリクエストします。bundletool--local-testing フラグとともに使用して、APK セットをビルドし、テストデバイスにデプロイすると、アプリの API 呼び出しを自動的に切り替えて SplitInstallManager の代わりに FakeSplitInstallManager を呼び出すよう Play Core Library に指示するメタデータが提供されます。

FakeSplitInstallManager に含まれるブール値フラグにより、次回アプリがモジュールのインストールをリクエストしたときに、ネットワーク エラーをシミュレートできるようになります。テストで FakeSplitInstallManager にアクセスするために、下記のように、FakeSplitInstallManagerFactory を使用してインスタンスを取得します。

Kotlin

// Creates an instance of FakeSplitInstallManager with the app's context.
val fakeSplitInstallManager = FakeSplitInstallManagerFactory.create(context)
// Tells Play Core Library to force the next module request to
// result in a network error.
fakeSplitInstallManager.setShouldNetworkError(true)

Java

// Creates an instance of FakeSplitInstallManager with the app's context.
FakeSplitInstallManager fakeSplitInstallManager =
    FakeSplitInstallManagerFactory.create(context);
// Tells Play Core Library to force the next module request to
// result in a network error.
fakeSplitInstallManager.setShouldNetworkError(true);