รายการที่อนุญาต UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์ม

แอปที่ลงนามโดยแพลตฟอร์มคือแอปที่แชร์ใบรับรองการลงนามเดียวกัน (หรือเข้ากันได้) กับแพ็กเกจแพลตฟอร์ม (android) แอปที่ลงนามโดยแพลตฟอร์มอาจเป็น แอประบบ (อยู่ในพาร์ติชันอิมเมจระบบ) หรือแอปที่ไม่ใช่ระบบ UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์มคือ UID ที่แชร์ (android:sharedUserId) ซึ่ง มีแอปที่ลงนามโดยแพลตฟอร์ม บิลด์ที่แก้ไขข้อบกพร่องได้คือบิลด์ที่ android.os.Build.isDebuggable() แสดงผลเป็น true เช่น บิลด์ userdebug หรือ eng

ในอดีต ผู้ผลิตอุปกรณ์มีการควบคุมเพียงเล็กน้อยว่าแอปที่ไม่ใช่ระบบที่ลงนามโดยแพลตฟอร์มแอปใดสามารถเข้าร่วม UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์มได้ ตั้งแต่ Android 15 เป็นต้นมา ผู้ผลิตสามารถอนุญาตให้แอปที่ไม่ใช่ระบบที่ลงนามโดยแพลตฟอร์มเข้าร่วม UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์มในไฟล์ XML การกำหนดค่าระบบในไดเรกทอรี /etc/sysconfig ได้อย่างชัดเจน หากไม่ได้เพิ่มแอปที่ไม่ใช่ระบบที่ลงนามโดยแพลตฟอร์มลงในรายการที่อนุญาตสำหรับ UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์ม และแอปยังคงพยายามเข้าร่วม UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์ม (โดยมี android:sharedUserId ในไฟล์ Manifest) ระบบจะไม่สามารถติดตั้งแอปดังกล่าวในบิลด์ที่แก้ไขข้อบกพร่องไม่ได้

เพิ่มรายการที่อนุญาต

คุณสามารถแสดงรายการที่อนุญาตสำหรับแอปในไฟล์ 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}