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

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

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

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

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

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