หน้านี้อธิบายรูปแบบไดเรกทอรีสำหรับอุปกรณ์ที่ใช้ 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 กำหนด ห้องสมุด
- ทรัพยากร Dependency ภายนอกของ SP-HAL และ SP-HAL-Dep ต้องจำกัดไว้เฉพาะ
ไลบรารี LL-NDK หรือ VNDK-SP ที่ Google กำหนด
- ทรัพยากร Dependency ของไลบรารีที่ใช้ร่วมกัน SP-HAL ต้องจำกัดไว้เฉพาะ LL-NDK ห้องสมุด, ห้องสมุด VNDK-SP ที่ Google กำหนด, ห้องสมุด SP-HAL อื่นๆ และ/หรือ ไลบรารีที่ใช้ร่วมกันของผู้ให้บริการรายอื่นๆ ที่สามารถติดป้ายกำกับเป็น SP-HAL-Dep ห้องสมุด
- ไลบรารีที่ใช้ร่วมกันของผู้ให้บริการจะมีป้ายกำกับเป็นไลบรารี SP-HAL-Dep ก็ต่อเมื่อ ไม่ใช่ไลบรารี AOSP และมีการจำกัดทรัพยากร Dependency ไว้เฉพาะไลบรารี LL-NDK ไลบรารี VNDK-SP ที่ Google กำหนด, ไลบรารี SP-HAL และ/หรือ SP-HAL-Dep อื่นๆ ห้องสมุด
- VNDK-SP ต้องมีในตัว
libRS_internal.so
รับข้อเสนอพิเศษ ใน Android 8.0 แต่จะเข้าสู่รุ่นต่อๆ ไป - ต้องไม่มีการสื่อสารกับผู้ให้บริการเฟรมเวิร์กผ่านอินเทอร์เฟซที่ไม่ใช่ HIDL ซึ่งรวมถึง (แต่ไม่จำกัดเพียง) แฟ้ม ซ็อกเก็ต ความทรงจำที่มีร่วมกัน ไฟล์ เป็นต้น
- พาร์ติชันระบบต้องใหญ่พอที่จะมีสำเนา 2 สำเนา ของคลัง VNDK ทั้งหมดที่มีสิทธิ์ และสำเนาของเฟรมเวิร์กที่ไม่มีสิทธิ์ที่แชร์ ห้องสมุด
Sepolicy
กระบวนการของเฟรมเวิร์กที่อธิบายในส่วนนี้สอดคล้องกับ
coredomain
ใน sepolicies ในขณะที่กระบวนการของผู้ให้บริการสอดคล้องกับ
non-coredomain
เช่น /dev/binder
อาจเป็น
เข้าถึงได้เฉพาะใน coredomain
และ /dev/vndbinder
สามารถเข้าถึงได้
เข้าถึงได้เฉพาะในบัญชีที่ไม่ใช่ coredomain
เท่านั้น
นโยบายที่คล้ายกันจำกัดการเข้าถึงไลบรารีที่ใช้ร่วมกันในระบบและ พาร์ติชันผู้ให้บริการ ตารางต่อไปนี้แสดงสิทธิในการเข้าถึง ไลบรารีของหมวดหมู่ต่างๆ ได้แก่
หมวดหมู่ | พาร์ติชัน | เข้าถึงได้จาก โดเมนหลัก |
เข้าถึงได้จาก ที่ไม่ใช่โดเมนหลัก |
---|---|---|---|
LL-NDK | ระบบ | Y | Y |
LL-NDK-ส่วนตัว | ระบบ | Y | Y |
VNDK-SP/VNDK-SP-ส่วนตัว | ระบบ | Y | Y |
VNDK-SP-EX | ตัวแทนจำหน่ายรายย่อย | Y | Y |
ดองเวียดนาม | ระบบ | Y | Y |
VNDK-ภายนอก | ตัวแทนจำหน่ายรายย่อย | ไม่ใช่ | Y |
FWK เท่านั้น | ระบบ | Y | ไม่ใช่ |
FWK เท่านั้น-RS | ระบบ | Y | ไม่ใช่ |
SP-HAL | ตัวแทนจำหน่ายรายย่อย | Y | Y |
ระดับ SP-HAL | ตัวแทนจำหน่ายรายย่อย | Y | Y |
VND เท่านั้น | ตัวแทนจำหน่ายรายย่อย | ไม่ใช่ | Y |
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
เนื่องจาก
coredomain
จะเข้าถึงพาร์ติชัน vendor
ไม่ได้โดยค่าเริ่มต้น เพิ่มบรรทัดที่คล้ายกับ
ต่อไปนี้ลงในไฟล์ 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