ไดเรกทอรี กฎ และนโยบาย

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