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