署名権限許可リスト

プラットフォームで署名されたアプリは、同じ(または互換性のある)署名を共有するアプリです。 プラットフォーム パッケージ(android)を含む証明書。プラットフォームで署名されたアプリは、 システムアプリ(システム イメージ パーティションに配置)、またはシステム以外のアプリ。 プラットフォーム署名権限は、プラットフォーム パッケージによって定義される権限です。 また、保護レベルが signature の VPC ネットワークにファイルを転送できます。デバッグ可能なビルドとは android.os.Build.isDebuggable()true を返す(userdebug など)。 eng ビルド。

これまでデバイス メーカーは、どのプラットフォームを使用するかをほとんど制御できませんでした signature の権限をプラットフォームで署名されたシステム以外のアプリに付与できます。 Android 15 以降では、メーカーは のシステム構成 XML ファイルで、プラットフォーム署名権限を付与する。 /etc/permissions ディレクトリ。プラットフォームで署名された非システムアプリが プラットフォーム署名権限の許可リストに追加されている場合、その権限は アプリがデバッグ不可能なビルドでプラットフォーム署名されていないかのように動作します。

許可リストを追加する

アプリの権限許可リストは、単一の XML ファイルまたは複数のファイルにリストできます。 frameworks/base/etc/permissions ディレクトリにある XML ファイル:

  • /etc/permissions/signature-permissions-OEM_NAME.xml
  • /etc/permissions/signature-permissions-DEVICE_NAME.xml

コンテンツを整理する方法に対する厳格なルールはありません。デバイスの実装者は コンテンツの構造を決めるのは、 権限が許可リストに追加されます。

許可リストをカスタマイズする

AOSP には、必要に応じてカスタマイズできる許可リスト実装が用意されています。 同様の 特権の許可リスト。次に例を示します。

<!--
  ~ This XML file declares which platform signature permissions to grant to
  ~ platform signed nonsystem apps.
  -->

<permissions>
    <signature-permissions package="com.android.example">
        <permission name="android.permission.READ_DEVICE_CONFIG"/>
        ...
    </signature-permissions>
    ...
</permissions>

不足している権限を特定する

不足している権限を見つけるには、プラットフォームで署名されたアプリをインストールしてデバイスを検査してください 次の形式の警告メッセージがログに記録されます。

Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist

システムはデバッグ可能なビルドに対して権限を付与できますが、 デバッグ不可能なビルド(user ビルドなど)。