รายการที่อนุญาตสำหรับสิทธิ์ลายเซ็น

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

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

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

คุณสามารถแสดงรายการที่อนุญาตสิทธิ์สำหรับแอปในไฟล์ XML ไฟล์เดียวหรือในไฟล์ XML หลายไฟล์ที่อยู่ในไดเรกทอรี frameworks/base/etc/permissions ดังนี้

  • /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