เมื่อพัฒนาและเปิดตัวอุปกรณ์ใหม่ ผู้จำหน่ายสามารถกำหนดและประกาศเวอร์ชัน FCM เป้าหมายใน Device Manifest (DM) เมื่ออัปเกรดอิมเมจของผู้จำหน่ายสำหรับอุปกรณ์เก่า ผู้จำหน่ายสามารถเลือกใช้เวอร์ชัน HAL ใหม่และเพิ่มเวอร์ชัน FCM เป้าหมายได้
การพัฒนาอุปกรณ์ใหม่ๆ
เมื่อกำหนดอุปกรณ์ Target FCM Version สำหรับอุปกรณ์ใหม่:
- ปล่อยให้
DEVICE_MANIFEST_FILE
และPRODUCT_ENFORCE_VINTF_MANIFEST
ไม่ได้กำหนดไว้ - ใช้ HAL สำหรับเวอร์ชัน FCM เป้าหมาย
- เขียนไฟล์รายการอุปกรณ์ที่ถูกต้อง
- เขียนเวอร์ชัน Target FCM ไปยังไฟล์รายการอุปกรณ์
- ตั้งค่า
DEVICE_MANIFEST_FILE
- ตั้งค่า
PRODUCT_ENFORCE_VINTF_MANIFEST
เป็นtrue
การเปิดตัวอุปกรณ์ใหม่
เมื่อมีการเปิดตัวอุปกรณ์ใหม่ จะต้องกำหนดเวอร์ชัน Target FCM เริ่มต้นและประกาศในรายการอุปกรณ์เป็นแอตทริบิวต์ " target-level
" ในองค์ประกอบ <manifest>
ระดับบนสุด
เช่น อุปกรณ์ที่เปิดตัวด้วย Android 9 จะต้องมี Target FCM Version เท่ากับ 3 (เวอร์ชันที่สูงกว่าที่มีให้บริการในขณะนี้) หากต้องการประกาศสิ่งนี้ในรายการอุปกรณ์:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
กำลังอัปเกรดภาพลักษณ์ผู้ขาย
เมื่ออัปเกรดอิมเมจของผู้จำหน่ายสำหรับอุปกรณ์เก่า ผู้จำหน่ายสามารถเลือกใช้เวอร์ชัน HAL ใหม่และเพิ่มเวอร์ชัน FCM เป้าหมายได้
การอัพเกรด HAL
ในระหว่างการอัพเกรดอิมเมจของผู้จำหน่าย ผู้จำหน่ายสามารถใช้ 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
ต้องใช้เสียง 2.0 และ compatibility_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 ใหม่ที่จำเป็นทั้งหมดสำหรับเวอร์ชัน FCM เป้าหมาย
- แก้ไขเวอร์ชัน HAL ในไฟล์รายการอุปกรณ์
- แก้ไขเวอร์ชัน Target FCM ในไฟล์รายการอุปกรณ์
- ลบเวอร์ชัน HAL ที่เลิกใช้แล้ว
ตัวอย่างเช่น อุปกรณ์ Google Pixel และ Pixel XL เปิดตัวพร้อมกับ Android 7.0 ดังนั้นเวอร์ชัน Target FCM จะต้องเป็นแบบเดิมเป็นอย่างน้อย อย่างไรก็ตาม รายการอุปกรณ์ ประกาศ 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
(เช่น audio 4.0, health 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