Android 10 รองรับการสร้าง
odm
พาร์ติชันโดยใช้ระบบบิลด์ของ Android
เกี่ยวกับพาร์ติชัน ODM
ผู้ผลิตการออกแบบดั้งเดิม (ODM) ปรับแต่งผู้ให้บริการระบบวงจรรวมบนชิป (SoC) แพ็กเกจบริการสนับสนุนกระดานข้อความ (BSP) ไปยังอุปกรณ์ที่เจาะจง (บอร์ด) ช่วงเวลานี้ ช่วยให้ติดตั้งใช้งานโมดูลเคอร์เนลสำหรับคอมโพเนนต์เฉพาะบอร์ดได้ Daemon เฉพาะบอร์ด หรือลักษณะของตัวเองในเลเยอร์ Abstraction ของฮาร์ดแวร์ (HAL) และอาจต้องแทนที่หรือปรับแต่งคอมโพเนนต์ SoC ด้วย
ใน Android รุ่นต่ำกว่า การปรับแต่งดังกล่าวทำให้ใช้
รูปภาพของผู้ให้บริการสำหรับอุปกรณ์ที่มี SoC เดียวกัน (หรือมี SoC ต่างกัน แต่อยู่ใน
ครอบครัวเดียวกัน) ใน Android 10 ขึ้นไป คุณสามารถใช้
แยกพาร์ติชัน odm
สำหรับการปรับแต่ง ซึ่งให้คุณดำเนินการต่อไปนี้ได้
ใช้อิมเมจผู้ให้บริการรูปเดียวสำหรับ SKU ฮาร์ดแวร์หลายรายการ
ใช้พาร์ติชันผลิตภัณฑ์และ ODM
Android 9 เพิ่มการรองรับการสร้าง
product
ทำให้สามารถใช้อิมเมจระบบเดียวสำหรับซอฟต์แวร์หลายรายการ
SKU ที่มาจากรูปภาพ product.img
รูปที่ต่างกัน ในขณะที่
พาร์ติชัน product
มีไว้สำหรับ SKU ของซอฟต์แวร์
พาร์ติชัน odm
มีไว้สำหรับ SKU ฮาร์ดแวร์
เมื่อใช้พาร์ติชัน ODM และผลิตภัณฑ์เฉพาะ คุณจะใช้ system
ได้
เพื่อโฮสต์โค้ดทั่วไปเพื่อใช้ร่วมกันระหว่าง SKU ของซอฟต์แวร์หลายรายการ และ
vendor
พาร์ติชันเพื่อโฮสต์โค้ด BSP เฉพาะ SoC เพื่อแชร์
อุปกรณ์หลายเครื่องโดยอิงตาม SoC ที่กำหนด
การใช้พาร์ติชันแยกกันมีข้อเสีย เช่น ความยากในการจัดการ พื้นที่ในดิสก์ (เช่น คุณต้องจองพื้นที่ไว้ใช้ในอนาคตอย่างจำกัด การเติบโต) อย่างไรก็ตาม Android 10 จะรองรับ พาร์ติชันแบบไดนามิก นำปัญหาเกี่ยวกับดิสก์ออก และทำให้มีการแบ่งพาร์ติชันอุปกรณ์ใหม่ในระหว่าง มีการอัปเดตผ่านอากาศ (OTA) ได้
คอมโพเนนต์ ODM
พาร์ติชัน odm
มีคอมโพเนนต์เฉพาะ ODM ต่อไปนี้
(คล้ายกับพาร์ติชัน vendor
) ซึ่งแสดงในตารางต่อไปนี้
คอมโพเนนต์เฉพาะ ODM | ตำแหน่ง |
---|---|
โมดูลเคอร์เนลที่โหลดได้ (LKM) | /odm/lib/modules/*.ko |
ไลบรารีที่มาพร้อมเครื่อง | /odm/lib[64] |
HAL | /odm/lib[64]/hw |
นโยบาย SE | /odm/etc/selinux |
ออบเจ็กต์ VINTF ข้อมูล | /odm/etc/vintf |
init.rc
ไฟล์ |
/odm/etc/init |
พร็อพเพอร์ตี้ของระบบ | /odm/build.prop |
การวางซ้อนทรัพยากรรันไทม์ (RRO) | /odm/overlay/*.apk |
แอป | /odm/app/*.apk |
แอป Priv | /odm/priv-app/*.apk |
ไลบรารี Java | /odm/framework/*.jar |
การกำหนดค่าระบบของ Android Framework | /odm/etc/sysconfig/* และ /odm/etc/permissions/* |
ไม่มีรูปภาพที่กำหนดเอง
ไม่ใช้ กำหนดเอง รูปภาพเนื่องจากไม่มีการรองรับรายการต่อไปนี้
- การติดตั้งโมดูลไปยังเป้าหมายเฉพาะ รูปภาพที่กำหนดเองรองรับการคัดลอกอาร์ติแฟกต์ลงในรูปภาพ แต่ทำไม่ได้ ติดตั้งโมดูลลงในพาร์ติชันเฉพาะโดยการระบุพาร์ติชันเป้าหมาย เป็นส่วนหนึ่งของกฎการสร้าง
- เร็วๆ นี้ ไม่สามารถสร้าง
custom_images
โดยใช้ ระบบการสร้าง Soong - การอัปเดต OTA ระบบใช้รูปภาพที่กําหนดเองเป็น อิมเมจ ROM จากโรงงานที่ OTA ไม่ได้
รักษา ABI ระหว่างพาร์ติชัน
พาร์ติชัน odm
เป็นส่วนขยายของ vendor
พาร์ติชัน เมื่อพิจารณาความเสถียรของอินเทอร์เฟซแบบไบนารีของแอปพลิเคชัน (ABI) โปรด
สถาปัตยกรรมต่อไปนี้เป็นหลัก
รูปที่ 1 การรักษา ABI ระหว่างพาร์ติชัน
- ไม่มีความเสถียรของ ABI ระหว่าง
odm
ถึงvendor
พาร์ติชัน คุณต้องอัปเกรดทั้ง 2 พาร์ติชันพร้อมกัน - พาร์ติชัน
odm
และvendor
อาจขึ้นอยู่กับ กัน แต่พาร์ติชันvendor
ต้องใช้งานได้ โดยไม่มีพาร์ติชันodm
- ABI ระหว่าง
odm
ถึงsystem
เหมือนกับ ABI ระหว่างvendor
ถึงsystem
การโต้ตอบโดยตรงระหว่างพาร์ติชัน product
และ
พาร์ติชัน vendor
หรือ odm
ไม่ใช่
อนุญาต (บังคับใช้โดย SEpolicy)
ติดตั้งใช้งานพาร์ติชัน ODM
ก่อนติดตั้งใช้งานพาร์ติชันใหม่ ให้ตรวจสอบส่วน AOSP ที่เกี่ยวข้อง การเปลี่ยนแปลง
ตั้งค่าพาร์ติชัน ODM
หากต้องการตั้งค่า odm
พาร์ติชัน ให้ใส่แฟล็กบิลด์ต่อไปนี้
BOARD_ODMIMAGE_PARTITION_SIZE
สำหรับขนาดพาร์ติชันคงที่PRODUCT_USE_DYNAMIC_PARTITIONS
และBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
เป็นเวลา พาร์ติชันแบบไดนามิก ขนาด- ประเภทระบบไฟล์
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
ที่ใช้สำหรับ รูปภาพ ODM PRODUCT_ODM_PROPERTIES
สำหรับ/odm/build.prop
สำหรับ ใช้ภายใน$(call inherit-product path/to/device.mk)
เช่นPRODUCT_ODM_PROPERTIES += product.abc=ok
ติดตั้งโมดูลไปยังพาร์ติชัน ODM
ใช้แฟล็กบิลด์เหล่านี้เพื่อติดตั้งโมดูลไปยังพาร์ติชัน odm
device_specific: true
ในAndroid.bp
LOCAL_ODM_MODULE := true
ในAndroid.mk
เปิดใช้การเปิดเครื่องที่ได้รับการยืนยัน
หากต้องการป้องกันไม่ให้ซอฟต์แวร์ที่เป็นอันตรายแทรกแซงพาร์ติชัน odm
เปิดใช้งานการเปิดเครื่องที่ได้รับการยืนยัน Android
(AVB) สำหรับพาร์ติชันเหล่านั้น (เช่นเดียวกับที่คุณดำเนินการกับ vendor
และ
system
พาร์ติชัน)
หากต้องการเปิดใช้ AVB ให้ใส่แฟล็กบิลด์
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
. โปรดดูรายละเอียดเกี่ยวกับการกำหนดค่า
AVB ในพาร์ติชันแบบไดนามิก โปรดดู
การกำหนดค่า AVB
การเปลี่ยนแปลง
ถือว่า /odm เป็นพาร์ติชัน /vendor อื่น
ตรวจสอบว่าระบบจัดการพาร์ติชัน odm
เป็น
พาร์ติชัน vendor
แทนที่ vendor
แบบฮาร์ดโค้ดทั้งหมด
การอ้างอิงด้วยชุดพาร์ติชันที่มุ่งเน้นฮาร์ดแวร์ (ปัจจุบัน
odm
และ vendor
) โดดเด่น vendor
ตำแหน่งอ้างอิงในแพลตฟอร์มประกอบด้วย
ไดนามิก
Linker
แพ็กเกจ
และshell/libc