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

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

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

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

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