การพัฒนาไฟล์ Manifest ในอุปกรณ์

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

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

เมื่อกำหนดเวอร์ชัน FCM ของเป้าหมายอุปกรณ์สำหรับอุปกรณ์ใหม่ ให้ทำดังนี้

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

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