デバイス管理をテストする

管理対象プロファイルのサポートを最小限に抑えるには、OEM デバイスに対して以下の不可欠な要素を指定する必要があります。

要件の全リストについては、デバイス管理の実装をご覧ください。デバイス管理機能をテストするには、デバイス オーナーが下記の TestDPC アプリを使用します。

テスト用にデバイス オーナーをセットアップする

次の手順に沿って、デバイス所有者のテスト環境を設定します。

  1. 対象のデバイスを出荷時設定にリセットします。
  2. デバイスにユーザー アカウントが残っていないことを確認します(オンライン サービスへのログインに使用されているユーザー アカウントなども含む)。アカウントは、[設定] > [アカウント] で確認できます。
  3. 次のいずれかの方法で、テストアプリをセットアップします。
  4. 次のコマンドを使用して、TestDPC アプリをデバイス オーナーとして設定します。
    adb shell dpm set-device-owner "com.afwsamples.testdpc/.DeviceAdminReceiver"
    
  5. デバイス上で、デバイス オーナーに関するすべてのセットアップを完了します(暗号化や Wi-Fi の選択など)。

デバイス オーナーのセットアップを検証する

デバイス オーナーが正しく設定されていることを確認するには、[設定] > [セキュリティ] > [デバイス管理アプリ] に移動し、TestDPC が一覧に表示されることを確認します。また、TestDPC を無効にできないことを確認します(これにより、TestDPC がデバイス オーナーであることがわかります)。

プロビジョニング テストの自動化

企業向けプロビジョニングのプロセスのテストを自動化するには、Android Enterprise テストハーネスを使用します。詳細については、デバイスのプロビジョニングをテストするをご覧ください。

バグレポートとログ

Android 7.0 以降、デバイス オーナーのデバイス ポリシー クライアント(DPC)が、バグレポートを取得して、管理対象デバイス上のエンタープライズ プロセスのログを表示できるようになりました。

バグレポート(adb bugreport が収集するデータと同等。dumpsys、dumpstate、logcat のデータが含まれます)をトリガーするには、DevicePolicyController.requestBugReport を使用します。バグレポートの収集が完了すると、バグレポート データの送信に関して同意を求めるメッセージがユーザーに表示されます。結果は、DeviceAdminReceiver.onBugreport[Failed|Shared|SharingDeclined] に送信されます。バグレポートの内容については、バグレポートを読むをご覧ください。

また、デバイス オーナー DPC は、管理対象デバイス上でユーザーが行ったアクションに関するログを収集することもできます。device_admin をレポートするすべてのデバイスにおいて、エンタープライズ プロセスのロギングが必要となります。このロギングでは、システム サーバーだけが読み取ることのできる新しいログ セキュリティ バッファが使用されます($ adb logcat -b security でこのバッファを読み取ることはできません)。ActivityManager サービスと Keyguard コンポーネントは、以下のイベントをセキュリティ バッファに記録します。

  • アプリケーション プロセスの開始
  • キーガードの操作(ロック解除の失敗や成功など)
  • デバイスに発行された adb コマンド

必要に応じて、コールドブート後ではなくリブート後もログを保持し、そのログをデバイス オーナー DPC で使用することができます。そのためには、pstorepmsg を有効にしたカーネルをデバイス内に設定し、リブートのすべてのステージで DRAM に対して電源供給とリフレッシュを行い、メモリ内に保持されているログの破損を防ぐ必要があります。サポートを有効にするには、frameworks/base/core/res/res/values/config.xml 内で config_supportPreRebootSecurityLogs 設定を使用します。