การพัฒนา Manifest อุปกรณ์

เมื่อพัฒนาและเผยแพร่อุปกรณ์ใหม่ ผู้จำหน่ายสามารถกำหนดและประกาศ Target FCM Version ในรายการอุปกรณ์ (DM) เมื่ออัปเกรดอิมเมจผู้ขายสำหรับอุปกรณ์เก่า ผู้จำหน่ายสามารถเลือกที่จะใช้เวอร์ชัน HAL ใหม่และเพิ่มเวอร์ชัน Target FCM

การพัฒนาอุปกรณ์ใหม่

เมื่อกำหนดอุปกรณ์ Target FCM Version สำหรับอุปกรณ์ใหม่:

  1. ไม่ต้องกำหนด DEVICE_MANIFEST_FILE และ PRODUCT_ENFORCE_VINTF_MANIFEST
  2. ใช้ HAL สำหรับเวอร์ชัน FCM เป้าหมาย
  3. เขียนไฟล์รายการอุปกรณ์ที่ถูกต้อง
  4. เขียน Target FCM Version ไปยังไฟล์รายการอุปกรณ์
  5. ตั้งค่า DEVICE_MANIFEST_FILE
  6. ตั้งค่า 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 ของอุปกรณ์ ผู้จำหน่ายต้อง:

  1. ใช้เวอร์ชัน HAL ใหม่ทั้งหมดที่จำเป็นสำหรับ Target FCM Version
  2. แก้ไขเวอร์ชัน HAL ในไฟล์รายการอุปกรณ์
  3. แก้ไข Target FCM Version ในไฟล์รายการอุปกรณ์
  4. ลบเวอร์ชัน 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