ไดเร็กทอรี กฎ และความแตกแยก

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

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

Degenerated Directory Layout ประกอบด้วยไดเร็กทอรีต่อไปนี้:

  • /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 ที่มีสิทธิ์ทั้งหมดสองชุดและสำเนาของไลบรารีที่แบ่งใช้กรอบงานที่ไม่มีสิทธิ์

การแบ่งแยกดินแดน

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

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

หมวดหมู่ พาร์ทิชัน เข้าถึงได้จาก
โดเมนหลัก
เข้าถึงได้จาก
ไม่ใช่โดเมนหลัก
LL-NDK ระบบ Y Y
LL-NDK-ส่วนตัว ระบบ Y Y
VNDK-SP/VNDK-SP-ส่วนตัว ระบบ Y Y
VNDK-SP-Ext ผู้ขาย Y Y
VNDK ระบบ Y Y
VNDK-Ext ผู้ขาย นู๋ Y
FWK-เท่านั้น ระบบ Y นู๋
FWK-เท่านั้น-RS ระบบ Y นู๋
SP-HAL ผู้ขาย Y Y
SP-HAL-Dep ผู้ขาย Y Y
VND เท่านั้น ผู้ขาย นู๋ Y

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

same_process_hal_file label

ไลบรารีต่อไปนี้มีอยู่ในพาร์ติชันผู้จัดจำหน่าย ทำให้ไลบรารีเหล่านี้สามารถเข้าถึงได้จากทั้ง 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