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

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

要件の全リストについては、デバイス管理を実装するをご覧ください。デバイス所有者は、下記のように TestDPC アプリを使用して、デバイス管理機能をテストできます。

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

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

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

デバイス所有者のセットアップを検証する

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

バグレポートとログ

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 設定を使用します。