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

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

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

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

  • /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 ใน sepolicies ในขณะที่กระบวนการของผู้จำหน่ายสอดคล้องกับ non-coredomain ตัวอย่างเช่น /dev/binder สามารถเข้าถึงได้เฉพาะใน coredomain และ /dev/vndbinder สามารถเข้าถึงได้เฉพาะใน non- coredomain

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

หมวดหมู่ ฉากกั้นห้อง เข้าถึงได้จาก
โดเมนหลัก
เข้าถึงได้จาก
ไม่ใช่โดเมนหลัก
LL-NDK ระบบ
LL-NDK-ส่วนตัว ระบบ
VNDK-SP/VNDK-SP-ส่วนตัว ระบบ
VNDK-SP-ต่อ ผู้ขาย
ดองเวียดนาม ระบบ
VNDK-ต่อ ผู้ขาย เอ็น
FWK เท่านั้น ระบบ เอ็น
FWK-เท่านั้น-RS ระบบ เอ็น
เอสพี-ฮาล ผู้ขาย
SP-HAL-แผนก ผู้ขาย
ดองเวียดนามเท่านั้น ผู้ขาย เอ็น

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

ป้ายกำกับ same_process_hal_file

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