Play Core Library を使用すると、Play ストアに接続せずに、アプリの以下の機能をローカルにテストできるようになります。
- モジュールのインストールをリクエストして監視する。
- インストール エラーを処理する。
SplitCompat
を使用してモジュールにアクセスする。
このページでは、アプリの分割 APK をテストデバイスにデプロイすることで、Play Core が自動的にその APK を使用して、Play ストアに対してモジュールのリクエスト、ダウンロード、インストールをシミュレートする仕組みについて説明します。
アプリのロジックを変更する必要はありませんが、以下の要件を満たす必要があります。
bundletool
の最新版をダウンロードしてインストールします。App Bundle からインストール可能な APK の新しいセットをビルドするために、bundletool
が必要です。- アプリが Play Core 1.7.2 以上を使用していることを確認します。詳しくは、プロジェクトに Play Core Library を含める方法をご覧ください。
APK セットをビルドする
まだビルドしていない場合は、次の手順で、アプリの分割 APK をビルドします。
- 以下のいずれかの方法でアプリの App Bundle を作成します。
- Android Studio と Android Plugin for Gradle を使用し、Android App Bundle をビルドして署名します。
- コマンドラインから App Bundle をビルドします。
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);