Aplikasi bertanda platform adalah aplikasi yang menggunakan sertifikat penandatanganan
yang sama (atau kompatibel) dengan paket platform (android
). Aplikasi bertanda platform dapat berupa
aplikasi sistem (berada di partisi image sistem), atau aplikasi nonsistem.
UID bersama bertanda platform adalah UID bersama (android:sharedUserId
) yang
berisi aplikasi bertanda platform. Build yang dapat di-debug adalah build yang
android.os.Build.isDebuggable()
menampilkan true
, seperti build
userdebug
atau eng
.
Secara historis, produsen perangkat memiliki sedikit kontrol atas aplikasi nonsistem
yang ditandatangani platform mana yang dapat bergabung dengan UID bersama yang ditandatangani platform. Mulai Android
15, produsen dapat secara eksplisit mengizinkan aplikasi nonsistem
yang ditandatangani platform untuk bergabung dengan UID bersama yang ditandatangani platform dalam file XML
konfigurasi sistem di direktori /etc/permissions
. Jika aplikasi nonsistem
yang ditandatangani platform tidak ditambahkan ke daftar yang diizinkan untuk UID bersama yang ditandatangani platform, dan aplikasi
masih mencoba bergabung dengan UID bersama yang ditandatangani platform (dengan android:sharedUserId
dalam manifesnya), aplikasi tersebut tidak dapat diinstal pada build yang tidak dapat di-debug.
Menambahkan daftar yang diizinkan
Anda dapat mencantumkan daftar yang diizinkan untuk aplikasi dalam satu file XML atau dalam beberapa file XML,
mirip dengan
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>
Menemukan daftar yang diizinkan yang hilang
Untuk menemukan entri daftar yang diizinkan yang hilang, coba instal aplikasi nonsistem yang ditandatangani platform pada build yang tidak dapat di-debug dan periksa apakah aplikasi tersebut masih dapat diinstal. Jika tidak, Anda dapat memeriksa log perangkat untuk menemukan format pesan peringatan berikut:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}