เมื่อพัฒนาและเผยแพร่อุปกรณ์ใหม่ ผู้จำหน่ายสามารถกำหนดและประกาศ Target FCM Version ในรายการอุปกรณ์ (DM) เมื่ออัปเกรดอิมเมจผู้ขายสำหรับอุปกรณ์เก่า ผู้จำหน่ายสามารถเลือกที่จะใช้เวอร์ชัน HAL ใหม่และเพิ่มเวอร์ชัน Target FCM
การพัฒนาอุปกรณ์ใหม่
เมื่อกำหนดอุปกรณ์ Target FCM Version สำหรับอุปกรณ์ใหม่:
- ไม่ต้องกำหนด
DEVICE_MANIFEST_FILE
และPRODUCT_ENFORCE_VINTF_MANIFEST
- ใช้ HAL สำหรับเวอร์ชัน FCM เป้าหมาย
- เขียนไฟล์รายการอุปกรณ์ที่ถูกต้อง
- เขียน Target FCM Version ไปยังไฟล์รายการอุปกรณ์
- ตั้งค่า
DEVICE_MANIFEST_FILE
- ตั้งค่า
PRODUCT_ENFORCE_VINTF_MANIFEST
true
ออกเครื่องใหม่
เมื่อมีการเปิดตัวอุปกรณ์ใหม่ จะต้องกำหนดและประกาศเวอร์ชัน FCM เป้าหมายเริ่มต้นในรายการอุปกรณ์เป็นแอตทริบิวต์ " target-level
" ในองค์ประกอบ <manifest>
ระดับบนสุด
ตัวอย่างเช่น อุปกรณ์ที่เปิดตัวด้วย Android 9 ต้องมี Target FCM Version เท่ากับ 3 (เวอร์ชันที่สูงกว่าที่มีอยู่ในขณะนี้) เพื่อประกาศสิ่งนี้ในรายการอุปกรณ์:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
กำลังอัปเกรดอิมเมจผู้จำหน่าย
เมื่ออัปเกรดอิมเมจผู้ขายสำหรับอุปกรณ์เก่า ผู้จำหน่ายสามารถเลือกที่จะใช้เวอร์ชัน HAL ใหม่และเพิ่มเวอร์ชัน Target FCM
การอัพเกรด HALs
ในระหว่างการอัปเกรดอิมเมจของผู้จำหน่าย ผู้จำหน่ายสามารถใช้เวอร์ชัน HAL ใหม่ได้ โดยที่ชื่อ HAL ชื่ออินเทอร์เฟซ และชื่ออินสแตนซ์จะเหมือนกัน ตัวอย่างเช่น:
- อุปกรณ์ Google Pixel 2 และ Pixel 2 XL ที่เปิดตัวพร้อมกับ Target FCM เวอร์ชัน 2 ซึ่งใช้เสียง 2.0 HAL
android.hardware.audio@2.0::IDeviceFactory/default
- สำหรับเสียง 4.0 HAL ที่เปิดตัวพร้อมกับ Android 9 อุปกรณ์ Google Pixel 2 และ Pixel 2 XL สามารถใช้ OTA แบบเต็มเพื่ออัปเกรดเป็น 4.0 HAL ซึ่งใช้
android.hardware.audio@4.0::IDeviceFactory/default
- แม้ว่า
compatibility_matrix.2.xml
จะระบุเฉพาะเสียง 2.0 เท่านั้น ข้อกำหนดเกี่ยวกับอิมเมจของผู้จัดจำหน่ายที่มี Target FCM เวอร์ชัน 2 ได้รับการคลายออกเนื่องจากกรอบงาน Android 9 (FCM เวอร์ชัน 3) ถือว่าเสียง 4.0 เป็นการแทนที่เสียง 2.0 HAL ในแง่ของการทำงาน .
เพื่อสรุป โดยที่ compatibility_matrix.2.xml
_matrix.2.xml ต้องการเสียง 2.0 และ compatibility_matrix.3.xml
_matrix.3.xml ต้องใช้เสียง 4.0 ข้อกำหนดมีดังนี้:
เวอร์ชัน FCM (ระบบ) | เวอร์ชัน FCM เป้าหมาย (ผู้ขาย) | ความต้องการ |
---|---|---|
2 (8.1) | 2 (8.1) | เสียง 2.0 |
3 (9) | 2 (8.1) | เสียง 2.0 หรือ 4.0 |
3 (9) | 3 (9) | เสียง 4.0 |
กำลังอัปเกรดเวอร์ชัน FCM เป้าหมาย
ในระหว่างการอัปเกรดอิมเมจผู้ขาย ผู้ขายยังสามารถเพิ่มเวอร์ชัน FCM เป้าหมายเพื่อระบุเวอร์ชัน FCM เป้าหมายที่อิมเมจของผู้จัดจำหน่ายที่อัปเกรดสามารถทำงานด้วย หากต้องการชนรุ่น Target FCM ของอุปกรณ์ ผู้จำหน่ายต้อง:
- ใช้เวอร์ชัน HAL ใหม่ทั้งหมดที่จำเป็นสำหรับ Target FCM Version
- แก้ไขเวอร์ชัน HAL ในไฟล์รายการอุปกรณ์
- แก้ไข Target FCM Version ในไฟล์รายการอุปกรณ์
- ลบเวอร์ชัน HAL ที่เลิกใช้แล้ว
ตัวอย่างเช่น อุปกรณ์ Google Pixel และ Pixel XL ที่เปิดตัวพร้อมกับ Android 7.0 ดังนั้น Target FCM Version อย่างน้อยต้องเป็นรุ่นดั้งเดิม อย่างไรก็ตาม รายการ อุปกรณ์ ประกาศ Target FCM เวอร์ชัน 2 เนื่องจากอิมเมจผู้ขายได้รับการอัปเดตเพื่อให้สอดคล้องกับ compatibility_matrix.2.xml
:
<manifest version="1.0" type="device" target-level="2">
หากผู้จำหน่ายไม่ได้ใช้เวอร์ชัน HAL ใหม่ที่จำเป็นทั้งหมด หรือไม่ลบเวอร์ชัน HAL ที่เลิกใช้แล้ว เวอร์ชัน Target FCM จะไม่สามารถอัพเกรดได้
ตัวอย่างเช่น อุปกรณ์ Google Pixel 2 และ Pixel 2 XL มี Target FCM เวอร์ชัน 2 แม้ว่าจะใช้ HAL บางอย่างที่จำเป็นสำหรับ compatibility_matrix.3.xml
_matrix.3.xml (เช่น เสียง 4.0, ความสมบูรณ์ 2.0 ฯลฯ) แต่จะไม่ลบ android.hardware.radio.deprecated@1.0
ซึ่งเลิกใช้แล้วใน FCM เวอร์ชัน 3 (Android 9) ดังนั้นอุปกรณ์เหล่านี้จึงไม่สามารถอัพเกรด Target FCM Version เป็น 3 ได้
บังคับข้อกำหนดเคอร์เนลระหว่าง OTA
กำลังอัปเดตอุปกรณ์จาก Android 9 หรือต่ำกว่า
บนอุปกรณ์ที่ใช้ Android 9 หรือต่ำกว่า ตรวจสอบให้แน่ใจว่าได้เลือก CL ต่อไปนี้:
การเปลี่ยนแปลงเหล่านี้แนะนำแฟล็กบิลด์ PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
และปล่อยการตั้งค่าสถานะไว้สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 9 หรือต่ำกว่า
- เมื่ออัปเดตเป็น Android 10 ไคลเอ็นต์ OTA บนอุปกรณ์ที่ใช้ Android 9 หรือต่ำกว่าจะไม่ตรวจสอบข้อกำหนดเคอร์เนลในแพ็คเกจ OTA อย่างถูกต้อง การเปลี่ยนแปลงเหล่านี้จำเป็นต่อการดร็อปข้อกำหนดเคอร์เนลจากแพ็คเกจ OTA ที่สร้างขึ้น
- เมื่ออัปเดตเป็น Android 11 คุณสามารถเลือกตั้งค่าสถานะบิลด์
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
เพื่อตรวจสอบความเข้ากันได้ของ VINTF เมื่อสร้างแพ็คเกจการอัปเดต
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าสถานะนี้ โปรดดูที่การ อัปเดตอุปกรณ์จาก Android 10
กำลังอัปเดตอุปกรณ์จาก Android 10
Android 10 เปิดตัวแฟล็กบิลด์ใหม่ PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 10 แฟล็กนี้จะถูกตั้งค่า true
โดยอัตโนมัติ เมื่อตั้งค่าสถานะเป็น true
สคริปต์จะแยกเวอร์ชันเคอร์เนลและการกำหนดค่าเคอร์เนลออกจากเคอร์เนลอิมเมจที่ติดตั้ง
- เมื่ออัปเดตเป็น Android 10 แพ็คเกจการอัปเดต OTA จะมีเวอร์ชันเคอร์เนลและการกำหนดค่า ไคลเอ็นต์ OTA บนอุปกรณ์ที่ใช้ Android 10 อ่านข้อมูลนี้เพื่อตรวจสอบความเข้ากันได้
- เมื่ออัปเดตเป็น Android 11 การจัดประเภทแพ็คเกจ OTA จะอ่านเวอร์ชันเคอร์เนลและการกำหนดค่าเพื่อตรวจสอบความเข้ากันได้
หากสคริปต์ไม่สามารถดึงข้อมูลนี้สำหรับเคอร์เนลอิมเมจของคุณ ให้เลือกทำ อย่างใดอย่างหนึ่ง ต่อไปนี้:
- แก้ไขสคริปต์เพื่อรองรับรูปแบบเคอร์เนลของคุณและสนับสนุน AOSP
- ตั้งค่า
BOARD_KERNEL_VERSION
เป็นเวอร์ชันเคอร์เนล และBOARD_KERNEL_CONFIG_FILE
เป็นพาธของไฟล์คอนฟิกูเรชันเคอร์เนลที่สร้างขึ้น.config
ตัวแปรทั้งสองต้องได้รับการอัพเดตเมื่อมีการอัพเดตเคอร์เนลอิมเมจ - หรือตั้งค่า
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
false
เพื่อข้ามการตรวจสอบข้อกำหนดของเคอร์เนล ไม่แนะนำเนื่องจากความเข้ากันไม่ได้ถูกซ่อนไว้และจะพบเมื่อเรียกใช้การทดสอบ VTS หลังการอัปเดตเท่านั้น
คุณสามารถดูซอร์สโค้ดของสคริปต์ดึงข้อมูลเคอร์เนล extract_kernel.py