ไดเรกทอรีกฎและแยกต่างหาก

หน้านี้อธิบายโครงร่างไดเร็กทอรีสำหรับอุปกรณ์ที่ใช้ Android 8.0 ขึ้นไปกฎ VNDK และ sepolicy ที่เกี่ยวข้อง

เค้าโครงไดเร็กทอรี

เค้าโครงไดเร็กทอรีเสื่อม ประกอบด้วยไดเร็กทอรีต่อไปนี้:

  • /system/lib[64] มีไลบรารีที่ใช้ร่วมกันของเฟรมเวิร์กทั้งหมดรวมถึงไลบรารี LL-NDK, VNDK และเฟรมเวิร์กเท่านั้น (รวมถึง LL-NDK-Private และบางไลบรารีที่มีชื่อเดียวกับไลบรารีใน VNDK-SP)
  • /system/lib[64]/vndk-sp มีไลบรารี VNDK-SP สำหรับ HAL กระบวนการเดียวกัน
  • /vendor/lib[64] มีไลบรารี VNDK ที่ขยายโดยผู้ขาย (ไลบรารี DXUA หรือ DXUX VNDK) การใช้งาน HAL ในกระบวนการเดียวกันและไลบรารีที่ใช้ร่วมกันของผู้จำหน่ายรายอื่น
  • /vendor/lib[64]/vndk-sp อาจมีไลบรารี VNDK-SP ที่ขยายโดยผู้ขาย

โมดูลผู้ขายโหลดไลบรารี VNDK จาก /system/lib[64]

กฎ VNDK

ส่วนนี้แสดงรายการกฎ VNDK โดยละเอียด:

  • กระบวนการเฟรมเวิร์กต้องไม่โหลดไลบรารีที่แบ่งใช้ที่ไม่ใช่ SP-HAL จากพาร์ติชันของผู้จำหน่าย (บังคับใช้อย่างเคร่งครัดโดยเริ่มจาก Android 8.1)
  • กระบวนการของผู้จัดจำหน่ายต้องไม่โหลดไลบรารีที่ไม่ใช่ LL-NDK ไม่ใช่ VNDK-SP และไม่ใช่ VNDK จากพาร์ติชันระบบ (ไม่ได้บังคับใช้อย่างเคร่งครัดใน Android O แต่จะเป็นรุ่นในอนาคต)
  • ไลบรารี VNDK ที่ติดตั้งจะต้องเป็นส่วนย่อยของไลบรารี VNDK ที่มีสิทธิ์ที่ Google กำหนด
  • การอ้างอิงภายนอกของ SP-HAL และ SP-HAL-Dep ต้อง จำกัด ไว้ที่ LL-NDK หรือไลบรารี VNDK-SP ที่ Google กำหนด
    • การอ้างอิงของไลบรารีที่ใช้ร่วมกัน SP-HAL ต้องถูก จำกัด ไว้ที่ไลบรารี LL-NDK ไลบรารี VNDK-SP ที่ Google กำหนดไลบรารี SP-HAL อื่น ๆ และ / หรือไลบรารีที่ใช้ร่วมกันของผู้จำหน่ายรายอื่นที่สามารถระบุว่าเป็นไลบรารี SP-HAL-Dep .
    • ไลบรารีที่ใช้ร่วมกันของผู้จำหน่ายสามารถระบุว่าเป็นไลบรารี SP-HAL-Dep เฉพาะในกรณีที่ไม่ใช่ไลบรารี AOSP และการอ้างอิงถูก จำกัด ไว้ที่ไลบรารี LL-NDK ไลบรารี VNDK-SP ที่ Google กำหนด, ไลบรารี SP-HAL และ / หรือ ไลบรารี SP-HAL-Dep อื่น ๆ
  • VNDK-SP ต้องมีอยู่ในตัว libRS_internal.so ได้รับการดูแลเป็นพิเศษใน Android 8.0 แต่จะกลับมาเยี่ยมชมอีกครั้งในอนาคต
  • ไม่มีการสื่อสารกับผู้ขายเฟรมเวิร์กผ่านอินเทอร์เฟซที่ไม่ใช่ HIDL รวมถึง (แต่ไม่ จำกัด เพียง) ตัวยึดซ็อกเก็ตความทรงจำที่ใช้ร่วมกันไฟล์ ฯลฯ
  • ขนาดของพาร์ติชันระบบต้องใหญ่พอที่จะมีสองสำเนาของไลบรารี VNDK ที่มีสิทธิ์ทั้งหมดและสำเนาของไลบรารีที่แบ่งใช้ของเฟรมเวิร์กที่ไม่มีสิทธิ์

sepolicy

กระบวนการของกรอบที่อธิบายในส่วนนี้สอดคล้องกับ coredomain ใน sepolicies ในขณะที่กระบวนการของผู้ขายสอดคล้องกับ non-coredomain ตัวอย่างเช่น /dev/binder สามารถเข้าถึงได้เฉพาะใน coredomain และ /dev/vndbinder สามารถเข้าถึงได้เฉพาะใน coredomain ไม่ใช่ coredomain เท่านั้น

นโยบายที่คล้ายกัน จำกัด การเข้าถึงไลบรารีที่แบ่งใช้บนพาร์ติชันระบบและผู้จำหน่าย ตารางต่อไปนี้แสดงสิทธิ์ในการเข้าถึงไลบรารีที่แบ่งใช้ในประเภทต่างๆ:

ประเภท พาร์ทิชัน เข้าถึงได้จาก
coredomain
เข้าถึงได้จาก
non-coredomain
LL-NDK ระบบ
LL-NDK- เอกชน ระบบ
VNDK-SP / VNDK-SP- ส่วนตัว ระบบ
VNDK-SP-Ext ผู้ขาย
VNDK ระบบ
VNDK-Ext ผู้ขาย
FWK เท่านั้น ระบบ
FWK-ONLY-RS ระบบ
SP-HAL ผู้ขาย
SP-HAL-Dep ผู้ขาย
VND เท่านั้น ผู้ขาย

LL-NDK-Private และ VNDK-SP-Private ต้องสามารถเข้าถึงได้จากทั้งสองโดเมนเนื่องจากโดเมนที่ไม่ใช่ coredomain จะเข้าถึงโดยทางอ้อม ในทำนองเดียวกัน SP-HAL-Dep ต้องสามารถเข้าถึงได้จาก coredomain เนื่องจาก SP-HAL อาศัยอยู่

ป้ายกำกับ same_process_hal_file

ไลบรารีต่อไปนี้มีอยู่ในพาร์ติชันผู้จำหน่าย ทำให้ไลบรารีเหล่านี้สามารถเข้าถึงได้จากทั้ง coredomain และ coredomain ไม่ใช่ coredomain

  • VNDK-SP-Ext ใน /vendor/lib[64]/vndk-sp
  • SP-HAL ใน /vendor/lib[64] หรือ /vendor/lib[64]/hw
  • SP-HAL-Dep ใน /vendor/lib[64] หรือ /vendor/lib[64]/hw

ติดป้ายชื่อไฟล์เหล่านี้อย่างชัดเจนว่า same_process_hal_file เนื่องจากสิ่งใด ๆ ในพาร์ติชัน vendor จะไม่สามารถเข้าถึงได้โดยค่าเริ่มต้นสำหรับ coredomain เพิ่มบรรทัดที่คล้ายกับข้อความต่อไปนี้ในไฟล์ file_contexts เฉพาะผู้จัดจำหน่าย

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0