テスト復元認証情報

認証情報マネージャーの認証情報の復元機能により、ユーザーは新しいデバイスにスムーズに移行できます。この機能をテストする際は、次のいずれかの方法を使用できます。

  • 別々のデバイス: バックアップを実行するソースデバイスと、復元を実行する別の対象デバイスを使用するか、2 つの別々の Android Studio エミュレータを使用します。
  • 単一デバイス: 1 台の実機または Android Studio エミュレータを使用します。アプリがデータをバックアップしたら、アプリをアンインストールして再インストールし、復元を実行します。

このガイドでは、Android Studio を使用して、エミュレータ上のデバッグ可能なアプリの復元認証情報をテストする方法について説明します。この方法では、別々のデバイスと単一のデバイスの両方の状況をシミュレートできます。

前提条件

Android Studio のバックアップと復元の機能を使用して Restore Credentials をテストするには、次の前提条件を満たしていることを確認します。

  • Android Studio Otter | 2025.2.1 以降。
  • Android 9(API レベル 28)以降を搭載した仮想デバイスまたは物理デバイス。Google Play システム イメージと Google Play 開発者サービス バージョン 242200000 以降がインストールされている必要があります(adb shell dumpsys package com.google.android.gms | grep versionCode で確認)。
  • テストデバイスまたはエミュレータでログインしている Google アカウント。[設定] > [セキュリティ] で PIN、パターン、パスワードの画面ロックが設定されているため、クラウドのエンドツーエンドの暗号化(E2EE)が有効になり、E2eeUnavailableException はスローされません。
  • debuggable true でビルドされたアプリ、または debug モードで実行されているアプリ。エミュレータでは、デバッグはデフォルトで有効になっています。

Android Studio のバックアップと復元機能を使用する

Android Studio を使用して Restore Credentials 機能をテストするには、まずデバイスからデータをバックアップし、次に別のデバイスでアプリデータを復元します。アプリを復元すると、認証状態が自動的に復元されます。

Android Studio で認証データをバックアップする

Android Studio でバックアップ フローをテストする手順は次のとおりです。

  1. エミュレータでアプリを実行します。
  2. 任意の認証メカニズム(ユーザー名とパスワード、パスキー、Google でログインなど)を使用してアプリにログインし、アプリが CreateRestoreCredentialRequest を指定して createCredential() を呼び出すようにします。
  3. 実行中デバイス ウィンドウの上部にあるデバイス オプションで、[Backup App Data] をクリックします。
    Android Studio でアプリデータをバックアップする
    図 1: Android Studio のアプリデータのバックアップ
  4. [バックアップの種類] で、[デバイス間] または [クラウド] を選択します。

  5. [OK] をクリックします。

復元された認証をテストする

バックアップが完了したら、同じデバイスを使用して復元手順をテストするか、別のデバイスを使用します。

Android Studio で復元フローをテストする手順は次のとおりです。

  1. 同じデバイスでテストするには、アプリをアンインストールして再インストールします(adb uninstall <package_name> の後に adb install <path_to_apk>)。これにより、デバイス上のすべてのローカルアプリデータと以前の復元キーが消去されます。新しいデバイスで使用するには、新しいデバイスにアプリをインストールします。

  2. 最初に Activity を起動せずに第 1 階層のバックグラウンド復元(BackupAgent.onRestoreFinished())をテストするには、Android Studio で [Run] > [Edit Configurations] を開き、インストール前に [Launch Options] > [Launch] を [Nothing] に設定します。[Restore App Data] を実行する前にアプリを起動すると、復元キーがまだデバイスに復元されていないため、認証画面にリダイレクトされます。

  3. 実行中デバイス ウィンドウのデバイス オプションで [アプリデータ復元] をクリックし、最近作成したバックアップを選択します。

    Android Studio でアプリデータを復元する
    図 2: Android Studio でアプリデータを復元する

  4. Logcat を調べて、BackupAgent.onRestoreFinished() がバックグラウンドで RestoreCredential を取得したことを確認するか、アプリを開いてユーザーが自動的にログインしていることを確認します。

adb または自動 JUnit 5 テストスイートでテストする

Android Studio の UI アクションに加えて、コマンドラインまたは継続的インテグレーション(CI)でバックアップと復元のフローをテストできます。

  • bmgr を使用したコマンドライン テスト: 実機またはヘッドレス エミュレータで、バックアップ マネージャーを有効にし(adb shell bmgr enable true)、バックアップをトリガーし(adb shell bmgr backupnow <package_name>)、アプリを再インストールし、利用可能なバックアップ セットを一覧表示し(adb shell bmgr list sets)、復元をトリガーします(adb shell bmgr restore <token> <package_name>)。詳細については、バックアップと復元をテストするをご覧ください。
  • 自動 JUnit 5 ホストテスト(androidx.test.backup): BackupRestoreController を使用して自動 JUnit 5 テストを作成し、1 台または 2 台の接続済みデバイスで BackupTransportMode.CLOUD_ENCRYPTED と BackupTransportMode.DEVICE_TO_DEVICE の両方を実行します。設定手順とサンプルテストについては、自動バックアップと復元のテストをご覧ください。