プラットフォーム署名の共有 UID 許可リスト

プラットフォーム署名アプリは、同じ(または互換性のある)署名を共有するアプリです プラットフォーム パッケージ(android)を含む証明書。プラットフォームで署名されたアプリは、 システムアプリ(システム イメージ パーティションに配置)、またはシステム以外のアプリ。 プラットフォームで署名された共有 UID は、共有 UID(android:sharedUserId)であり、 プラットフォームで署名されたアプリが含まれます。デバッグ可能なビルドとは、 android.os.Build.isDebuggable()trueuserdebugeng など)を返します。 説明します。

これまで、デバイス メーカーは、どのプラットフォームが署名するかをほとんど制御できませんでした。 システム以外のアプリがプラットフォームで署名された共有 UID に参加できます。Android での開始 15 で、メーカーはプラットフォーム署名済みの システム以外のアプリが、システム構成内でプラットフォームで署名された共有 UID を結合する /etc/permissions ディレクトリの XML ファイル。プラットフォームによって署名された非システム プラットフォームで署名された共有 UID の許可リストにアプリが追加されておらず、かつ 引き続きプラットフォームで署名された共有 UID(android:sharedUserId を使用)に参加しようとします。 そのアプリをデバッグ不可能なビルドにインストールすることはできません。

許可リストを追加する

アプリの許可リストは、単一の XML ファイルまたは複数の XML ファイルにリストできます。 frameworks/base/data/etc/package-shareduid-allowlist.xml:

<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.

- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
  -->

<config>
    <allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>

見つからない許可リストを探す

見つからない許可リストエントリを見つけるには、プラットフォームで署名されていない非システムをインストールしてみてください インストールできるかどうかを確認することをおすすめします。そうでない場合は、 デバイスログで次の形式の警告メッセージを確認できます。

Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}