แอปที่ลงนามโดยแพลตฟอร์มคือแอปที่ใช้ใบรับรองการลงนามเดียวกัน (หรือเข้ากันได้) กับแพ็กเกจแพลตฟอร์ม (android
) แอปที่ลงนามโดยแพลตฟอร์มอาจเป็นแอประบบ (อยู่ในพาร์ติชันรูปภาพระบบ) หรือแอปที่ไม่ใช่ระบบก็ได้ UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์มคือ UID ที่แชร์ (android:sharedUserId
) ที่มีแอปที่ลงนามโดยแพลตฟอร์ม บิลด์ที่แก้ไขข้อบกพร่องได้คือบิลด์ที่ android.os.Build.isDebuggable()
แสดงผลเป็น true
เช่น บิลด์ userdebug
หรือ eng
ที่ผ่านมา ผู้ผลิตอุปกรณ์มีการควบคุมเพียงเล็กน้อยเกี่ยวกับแอปที่ไม่ใช่ระบบซึ่งลงนามโดยแพลตฟอร์มที่เข้าร่วม UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์มได้ ตั้งแต่ Android 15 เป็นต้นไป ผู้ผลิตสามารถอนุญาตให้แอปที่ไม่ใช่ระบบซึ่งลงนามโดยแพลตฟอร์มเข้าร่วม UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์มได้อย่างชัดเจนในไฟล์ XML การกำหนดค่าระบบในไดเรกทอรี /etc/permissions
หากไม่ได้เพิ่มแอปที่ไม่ใช่ระบบซึ่งลงนามโดยแพลตฟอร์มลงในรายการที่อนุญาตสําหรับ UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์ม และแอปยังคงพยายามเข้าร่วม UID ที่แชร์ซึ่งลงนามโดยแพลตฟอร์ม (โดยมี android:sharedUserId
ในไฟล์ Manifest) ระบบจะติดตั้งแอปดังกล่าวในบิลด์ที่แก้ไขข้อบกพร่องไม่ได้
เพิ่มรายการที่อนุญาต
คุณสามารถแสดงรายการที่อนุญาตสำหรับแอปในไฟล์ 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}