หน้านี้อธิบายเค้าโครงไดเรกทอรีสำหรับอุปกรณ์ที่ใช้ 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