การเปิดตัวเฟรมเวิร์ก Android มีเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM) หลายรายการ โดยมี 1 รายการสำหรับ FCM เวอร์ชันเป้าหมายที่อัปเกรดได้แต่ละเวอร์ชัน ซึ่งจะกำหนดว่า เฟรมเวิร์กอาจใช้ข้อกำหนดของ FCM เวอร์ชันเป้าหมายใด Android จะเลิกใช้งานและนำ HIDL HAL ออก ซึ่งเป็นส่วนหนึ่งของวงจรการใช้งาน FCM จากนั้นจะแก้ไขไฟล์ FCM เพื่อ แสดงสถานะของเวอร์ชัน HAL
หากต้องการเปิดใช้ OTA ที่มีเฉพาะเฟรมเวิร์กในระบบนิเวศของตนเอง พาร์ทเนอร์ที่ขยายอินเทอร์เฟซของผู้ให้บริการควรเลิกใช้งานและนำ HIDL HAL ออกโดยใช้วิธีการเดียวกัน
คำศัพท์
- เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM)
- ไฟล์ XML ที่ระบุข้อกำหนดของเฟรมเวิร์กในการติดตั้งใช้งานของผู้ให้บริการที่สอดคล้องกัน เมทริกซ์ความเข้ากันได้จะมีการควบคุมเวอร์ชัน และจะมีการตรึงเวอร์ชันใหม่ สำหรับการเปิดตัวเฟรมเวิร์กแต่ละรายการ การเปิดตัวเฟรมเวิร์กแต่ละครั้งจะมี FCM หลายรายการ
- เวอร์ชัน FCM ของแพลตฟอร์ม (SF)
- ชุดของ FCM ทุกเวอร์ชันในการเผยแพร่เฟรมเวิร์ก เฟรมเวิร์กสามารถทำงาน ร่วมกับการติดตั้งใช้งานของผู้ให้บริการรายใดก็ได้ที่ตรงตามข้อกำหนดของ FCM อย่างใดอย่างหนึ่ง
- เวอร์ชัน FCM (F)
- เวอร์ชันสูงสุดในบรรดา FCM ทั้งหมดในรุ่นของเฟรมเวิร์ก
- เวอร์ชัน FCM เป้าหมาย (V)
- เวอร์ชัน FCM เป้าหมาย (จาก SF) ที่ประกาศอย่างชัดเจนในไฟล์ Manifest ของอุปกรณ์ ซึ่งการติดตั้งใช้งานของผู้ให้บริการเป็นไปตามข้อกำหนด การติดตั้งใช้งานของผู้ให้บริการต้องสร้างขึ้นเทียบกับ FCM ที่เผยแพร่แล้ว แม้ว่าจะประกาศ HAL เวอร์ชันใหม่กว่าในไฟล์ Manifest ของอุปกรณ์ได้ก็ตาม
- เวอร์ชัน HAL
- HAL เวอร์ชันมีรูปแบบ
foo@x.y
โดยที่foo
คือชื่อ HAL และx.y
คือเวอร์ชันที่เฉพาะเจาะจง เช่นnfc@1.0
,keymaster@3.0
(คำนำหน้าหลัก เช่นandroid.hardware
จะไม่มีในเอกสารนี้) - ไฟล์ Manifest ของอุปกรณ์
- ไฟล์ XML ที่ระบุเวอร์ชัน HAL ที่ฝั่งอุปกรณ์ของอินเทอร์เฟซของผู้ให้บริการ รวมถึงรูปภาพของผู้ให้บริการและ ODM เนื้อหาของไฟล์ Manifest ของอุปกรณ์จะถูกจำกัดโดยเวอร์ชัน FCM เป้าหมายของอุปกรณ์ แต่สามารถแสดงรายการ HAL ที่ใหม่กว่าอย่างเคร่งครัดเมื่อเทียบกับ FC ที่สอดคล้องกับ V
- HAL ของอุปกรณ์
- HAL ที่แสดง (ระบุ) ในไฟล์ Manifest ของอุปกรณ์และแสดง ในเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM)
- เมตริกความเข้ากันได้ของอุปกรณ์ (DCM)
- ไฟล์ XML ที่ระบุข้อกำหนดของผู้ให้บริการเกี่ยวกับเฟรมเวิร์กที่สอดคล้องกัน การติดตั้งใช้งาน อุปกรณ์แต่ละเครื่องจะมี DCM 1 เครื่อง
- ไฟล์ Manifest ของเฟรมเวิร์ก
- ไฟล์ XML ที่ระบุเวอร์ชัน HAL ที่ฝั่งเฟรมเวิร์กของผู้จำหน่าย อินเทอร์เฟซ รวมถึงอิมเมจระบบ system, system_ext และ product มีให้ ระบบจะปิดใช้ HAL ใน ไฟล์ Manifest ของเฟรมเวิร์กแบบไดนามิกตามเวอร์ชัน FCM เป้าหมายของอุปกรณ์
- HAL ของเฟรมเวิร์ก
- HAL ที่ระบุว่ามีอยู่ในไฟล์ Manifest ของเฟรมเวิร์กและระบุไว้ใน เมทริกซ์ความเข้ากันได้ของอุปกรณ์ (DCM)
วงจรการใช้งาน FCM ในฐานของโค้ด
เอกสารนี้อธิบายวงจรการใช้งาน FCM ในเชิงนามธรรม หากต้องการดูไฟล์ Manifest ที่รองรับ โปรดดูhardware/interfaces/compatibility_matrices/compatibility_matrix.<FCM>.xml
ซึ่งคุณจะพบ FCM ได้ในsystem/libvintf/include/vintf/Level.h
อุปกรณ์ที่จัดส่ง Android เวอร์ชันที่เกี่ยวข้องควรมี ค่า FCM มากกว่าหรือเท่ากับระดับที่เทียบเท่า เช่น อุปกรณ์ที่จัดส่งพร้อม Android 11 โดยทั่วไปจะมี FCM ระดับ 5 แต่จะใช้ FCM ระดับ 6 ขึ้นไป ซึ่งมาพร้อมกับข้อกำหนดเพิ่มเติมต่างๆ ที่ระบุไว้ในเมทริกซ์ความเข้ากันได้ ระดับที่รองรับสำหรับ Android 15 มีดังนี้
FCM | รุ่นของ Android |
---|---|
5 | Android 11/R |
6 | Android 12/S |
7 | Android 13/T |
8 | Android 14/U |
202404 | Android 15/V |
ระดับ FCM เท่ากับหรือใหม่กว่า ระดับ API ของผู้ให้บริการ
เมื่อ Android เลิกใช้งานระดับ FCM ระบบจะยังคงรองรับอุปกรณ์ที่มีอยู่ อุปกรณ์ที่กำหนดเป้าหมายระดับ FCM ที่ต่ำกว่าจะได้รับอนุญาตโดยนัยให้ใช้ HAL ที่ระบุไว้ในระดับ FCM ที่ใหม่กว่า ตราบใดที่ HAL นั้นพร้อมใช้งานในสาขา
พัฒนาใน FCM เวอร์ชันใหม่
Android จะเพิ่มเวอร์ชัน FCM สำหรับการเปิดตัวเฟรมเวิร์กแต่ละครั้ง (เช่น Android
8 และ 8.1) ในระหว่างการพัฒนา ระบบจะสร้าง compatibility_matrix.F.xml
ใหม่และจะไม่เปลี่ยนแปลง compatibility_matrix.f.xml
ที่มีอยู่ (เมื่อ f
< F
) อีกต่อไป
วิธีเริ่มพัฒนาใน FCM เวอร์ชันใหม่ F
- คัดลอก
compatibility_matrix.<F-1>.xml
ล่าสุดไปยังcompatibility_matrix.F.xml
- อัปเดตแอตทริบิวต์
level
ในไฟล์เป็นF
- เพิ่มกฎการสร้างที่เกี่ยวข้องเพื่อติดตั้งเมทริกซ์ความเข้ากันได้นี้ลงในอุปกรณ์
แนะนำ HAL ใหม่
ในระหว่างการพัฒนา เมื่อนำ HAL ใหม่ (Wi-Fi, NFC ฯลฯ) มาใช้กับ Android
ใน FCM เวอร์ชันปัจจุบัน F
ให้เพิ่ม HAL ลงใน compatibility_matrix.F.xml
เช่น Android 8.1 ได้เปิดตัว cas@1.0
อุปกรณ์ที่เปิดตัวพร้อม Android
8.1 สามารถใช้ HAL นี้ได้ จึงมีการเพิ่มรายการต่อไปนี้ลงใน
compatibility_matrix.F.xml
(ซึ่งเคยมีชื่อว่า
compatibility_matrix.current.xml
ชั่วคราวในระหว่างการพัฒนา
รุ่นนั้น)
<hal format="hidl">
<name>android.hardware.cas</name>
<version>1.0</version>
<interface>
<name>IMediaCasService</name>
<instance>default</instance>
</interface>
</hal>
อัปเกรด HAL (ย่อย)
เวอร์ชัน AIDL HAL จะนับเป็นเวอร์ชัน HAL ย่อย เวอร์ชันอินเทอร์เฟซ HIDL มี
major.minor
เวอร์ชัน เช่น 1.2
ในระหว่างการพัฒนา เมื่อ AIDL HAL มีการอัปเกรดเวอร์ชันจาก 2
เป็น
3
ใน FCM เวอร์ชัน F
ปัจจุบัน ระบบจะเพิ่มเวอร์ชันใหม่ลงในรายการ HAL
ใน compatibility_matrix.F.xml
ฟิลด์เวอร์ชันของรายการ HAL ยอมรับ
ช่วงต่างๆ เช่น 2-3
ตัวอย่างเช่น Android FCM F
เปิดตัว foo@3
เป็นการอัปเกรด HAL ในเวอร์ชันย่อย
เวอร์ชันเก่ากว่า foo@2
ใช้สำหรับ
อุปกรณ์ที่กำหนดเป้าหมายเป็น FCM รุ่นเก่า ส่วนเวอร์ชันใหม่กว่า
foo@3
ใช้สำหรับอุปกรณ์ที่กำหนดเป้าหมายเป็น Android FCM F
ได้ รายการใน FCM เวอร์ชันเก่ากว่าก่อนเวอร์ชัน 2
จะมีลักษณะดังนี้
<hal format="aidl">
<name>foo</name>
<version>2</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
รายการนี้คัดลอกไปยัง compatibility_matrix.F.xml
และแก้ไขเพื่อรองรับ
เวอร์ชัน 3
ดังนี้
<hal format="aidl">
<name>foo</name>
<version>2-3</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
อัปเกรด HAL (หลัก)
ในระหว่างการพัฒนา เมื่อ HAL มีการอัปเกรดเวอร์ชันหลักใน FCM
Version F
ปัจจุบัน ระบบจะเพิ่มเวอร์ชันหลักใหม่ x.0
ลงใน compatibility_matrix.F.xml
โดยมีการตั้งค่าต่อไปนี้
- เฉพาะเวอร์ชัน
x.0
หากอุปกรณ์ที่จัดส่งพร้อมV = F
ต้องเปิดตัวด้วยx.0
- หากมีเวอร์ชันหลักที่เก่ากว่าในแท็กเดียวกัน
<hal>
แท็ก อุปกรณ์ที่จัดส่งพร้อมV = F
จะเปิดตัวด้วยเวอร์ชันหลักที่เก่ากว่าได้
ตัวอย่างเช่น FCM เวอร์ชัน F
จะเปิดตัว foo@2.0
เป็นการอัปเกรดเวอร์ชันหลักของ HAL 1.0 และเลิกใช้งาน HAL 1.0 ส่วนเวอร์ชันเก่ากว่า
อย่าง foo@1.0
จะใช้สำหรับอุปกรณ์ที่กำหนดเป้าหมายเป็น FCM เวอร์ชันก่อนหน้า อุปกรณ์ที่กำหนดเป้าหมายเป็น FCM เวอร์ชัน F
ต้องระบุเวอร์ชัน 2.0 ใหม่หากมี HAL ในตัวอย่างนี้ FCM เวอร์ชันก่อนหน้ามีรายการต่อไปนี้
<hal format="hidl">
<name>foo</name>
<version>1.0</version>;
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
คัดลอกรายการนี้ไปยัง compatibility_matrix.F.xml
และแก้ไขดังนี้
<hal format="hidl">
<name>foo</name>
<version>2.0</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
ข้อจำกัด:
- เนื่องจาก HAL 1.0 ไม่อยู่ใน
compatibility_matrix.F.xml
อุปกรณ์ที่กำหนดเป้าหมายเป็น FCM เวอร์ชันF
จึงต้องไม่ระบุ HAL 1.0 (เนื่องจาก HAL นี้ถือว่าเลิกใช้งานแล้ว) - เนื่องจาก HAL 1.0 มีอยู่ใน FCM เวอร์ชันเก่ากว่า เฟรมเวิร์กจึงยังคง ทำงานร่วมกับ HAL 1.0 ได้ จึงเข้ากันได้แบบย้อนหลังกับอุปกรณ์รุ่นเก่าที่กำหนดเป้าหมายเป็น FCM เวอร์ชันเก่ากว่า
FCM เวอร์ชันใหม่
กระบวนการเผยแพร่ FCM เวอร์ชันในพาร์ติชันระบบจะดำเนินการโดย Google เท่านั้น ซึ่งเป็นส่วนหนึ่งของการเผยแพร่ AOSP และมีขั้นตอนต่อไปนี้
- ตรวจสอบว่า
compatibility_matrix.F.xml
มีแอตทริบิวต์level="F"
- ตรวจสอบว่าอุปกรณ์ทั้งหมดสร้างและบูตได้
- อัปเดตการทดสอบ VTS
เพื่อให้มั่นใจว่าอุปกรณ์ที่เปิดตัวพร้อมเฟรมเวิร์กล่าสุด (อิงตาม
ระดับ API การจัดส่ง) มี FCM เวอร์ชันเป้าหมายเป็น
V >= F
- เผยแพร่ไฟล์ไปยัง AOSP
ตัวอย่างเช่น การทดสอบ VTS ช่วยให้มั่นใจได้ว่าอุปกรณ์ที่เปิดตัวด้วย Android 9 มี Target FCM Version >= 3
นอกจากนี้ FCM ของผลิตภัณฑ์และ system_ext อาจแสดงข้อกำหนดสำหรับ FCM แต่ละเวอร์ชันของแพลตฟอร์มด้วย เจ้าของรูปภาพเหล่านี้จะเป็นผู้เผยแพร่ FCM เวอร์ชันต่างๆ ในพาร์ติชันผลิตภัณฑ์และ system_ext ตามลำดับ หมายเลขเวอร์ชัน FCM ในพาร์ติชัน product และ system_ext ต้องสอดคล้องกับหมายเลขในพาร์ติชัน system เช่นเดียวกับ FCM เวอร์ชันในพาร์ติชันระบบ เมทริกซ์ความเข้ากันได้ที่ FCM เวอร์ชัน F ในพาร์ติชันผลิตภัณฑ์และ system_ext จะแสดงข้อกำหนดในอุปกรณ์ที่มี FCM เวอร์ชัน F เป้าหมาย
การเลิกใช้งาน HAL เวอร์ชัน
การเลิกใช้งาน HAL เวอร์ชันใดเวอร์ชันหนึ่งเป็นการตัดสินใจของนักพัฒนาซอฟต์แวร์ (เช่น สำหรับ HAL ของ AOSP Google เป็นผู้ตัดสินใจ) ซึ่งอาจเกิดขึ้นเมื่อมีการเปิดตัว HAL เวอร์ชันที่สูงกว่า (ไม่ว่าจะเป็นเวอร์ชันย่อยหรือเวอร์ชันหลัก)
เลิกใช้งาน HAL ของอุปกรณ์
เมื่อ HAL foo@x.y
ของอุปกรณ์ที่ระบุเลิกใช้งานใน FCM เวอร์ชัน F
หมายความว่า
อุปกรณ์ที่เปิดตัวด้วย FCM เวอร์ชันเป้าหมาย V = F
ขึ้นไปต้องไม่
ใช้ foo
ในเวอร์ชัน x.y
หรือเวอร์ชันที่เก่ากว่า x.y
เฟรมเวิร์กยังคงรองรับ HAL เวอร์ชันที่เลิกใช้งานแล้ว
สำหรับการอัปเกรดอุปกรณ์
เมื่อ FCM เวอร์ชัน F
เปิดตัวแล้ว HAL เวอร์ชัน foo@x.y
จะถือว่าเลิกใช้งานแล้ว
หากไม่ได้ระบุ HAL เวอร์ชันที่เฉพาะเจาะจงอย่างชัดเจนใน FCM ล่าสุด
สำหรับ FCM เวอร์ชันเป้าหมาย V = F
สำหรับอุปกรณ์ที่เปิดตัวพร้อม V = F
เงื่อนไขข้อใดข้อหนึ่งต่อไปนี้เป็นจริง
- เฟรมเวิร์กต้องใช้เวอร์ชันที่สูงกว่า (เวอร์ชันหลักหรือเวอร์ชันย่อย)
- เฟรมเวิร์กไม่จำเป็นต้องใช้ HAL อีกต่อไป
ตัวอย่างเช่น ใน Android 9 มีการเปิดตัว health@2.0
เป็นการอัปเกรดเวอร์ชันหลักของ HAL 1.0 health@1.0
ถูกนำออกจาก
compatibility_matrix.3.xml
แต่ยังคงอยู่ใน
compatibility_matrix.legacy.xml
compatibility_matrix.1.xml
และ compatibility_matrix.2.xml
ดังนั้น health@1.0
จึงถือว่าเลิกใช้งานแล้ว
เลิกใช้งาน HAL ของเฟรมเวิร์ก
เมื่อเลิกใช้งาน HAL ของเฟรมเวิร์กที่ระบุ foo@x.y
ใน FCM เวอร์ชัน F
หมายความว่า
อุปกรณ์ที่เปิดตัวด้วย FCM เวอร์ชันเป้าหมาย V = F
ขึ้นไปต้องไม่
คาดหวังให้เฟรมเวิร์กมี foo
ในเวอร์ชัน x.y
หรือเวอร์ชันที่เก่ากว่า x.y
เฟรมเวิร์กจะยังคงมี HAL เวอร์ชันที่เลิกใช้งานแล้วไว้สำหรับ
การอัปเกรดอุปกรณ์
เมื่อ FCM เวอร์ชัน F
เปิดตัวแล้ว HAL เวอร์ชัน foo@x.y
จะถือว่าเลิกใช้งานแล้ว
หากไฟล์ Manifest ของเฟรมเวิร์กระบุ
max-level="F - 1"
สำหรับ foo@x.y
สำหรับอุปกรณ์ที่เปิดตัวพร้อมกับ V = F
เฟรมเวิร์กจะไม่มี HAL foo@x.y
ตารางความเข้ากันได้ของอุปกรณ์ในอุปกรณ์ที่เปิดตัวพร้อมกับ V = F
ต้องไม่แสดง HAL ของเฟรมเวิร์กที่มี max-level < V
เช่น ใน Android 12 schedulerservice@1.0
จะเลิกใช้งาน
แอตทริบิวต์ max-level
ของบริการนี้ตั้งค่าเป็น 5
ซึ่งเป็น FCM เวอร์ชันที่เปิดตัว
ใน Android 11 ดูเฟรมเวิร์ก Android 12
ไฟล์ Manifest
การสิ้นสุดการสนับสนุน FCM เวอร์ชันเป้าหมาย
เมื่ออุปกรณ์ที่ใช้งานอยู่ของ FCM เวอร์ชันเป้าหมายหนึ่งๆ V
ลดลงต่ำกว่าเกณฑ์หนึ่งๆ
ระบบจะนำ FCM เวอร์ชันเป้าหมายออกจากชุด SF ของ
เฟรมเวิร์กเวอร์ชันถัดไป โดยทำตามขั้นตอนต่อไปนี้
การนำ
compatibility_matrix.V.xml
ออกจากกฎการสร้าง (เพื่อไม่ให้มีการติดตั้งในอิมเมจระบบ) และการลบโค้ดที่ใช้หรือขึ้นอยู่กับความสามารถที่นำออกนำ HAL ของเฟรมเวิร์กที่มี
max-level
ต่ำกว่าหรือเท่ากับV
ออกจาก ไฟล์ Manifest ของเฟรมเวิร์ก และลบรหัสที่ใช้ HAL ของเฟรมเวิร์กที่นำออก
อุปกรณ์ที่มีเวอร์ชัน FCM เป้าหมายอยู่นอก SF สำหรับเฟรมเวิร์กที่กำหนด จะอัปเกรดเป็นรุ่นนั้นไม่ได้
การนำ HAL ที่เลิกใช้งานแล้วออก
เมื่อนำ FCM เวอร์ชันหนึ่งออก อินเทอร์เฟซ HAL บางรายการหรือเวอร์ชันของอินเทอร์เฟซ HAL จะไม่อยู่ใน FCM ใดๆ อีกต่อไป ซึ่งหมายความว่า Android ไม่รองรับ อุปกรณ์ดังกล่าวอีกต่อไป แม้แต่สำหรับการอัปเกรดอุปกรณ์
หลังจากที่ระบบไม่รองรับ HAL แล้ว นักพัฒนาแอปจะนำการอ้างอิงถึงอินเทอร์เฟซ HAL นั้นออกจาก Android ซึ่งรวมถึงในโค้ดไคลเอ็นต์ในเฟรมเวิร์ก การติดตั้งใช้งานเริ่มต้น และกรณีทดสอบ VTS
หากไม่มี HAL ที่รองรับซึ่งสืบทอดมาจาก HAL ที่จะนำออก คุณจะนำ คำจำกัดความของ HAL เองออกได้โดยทำตามขั้นตอนเพิ่มเติมเพียงไม่กี่ขั้นตอน
- นำคำจำกัดความของอินเทอร์เฟซ HAL ออกจากซอร์สโค้ด ซึ่งรวมถึง
*.aidl
ไฟล์และAndroid.bp
โมดูลaidl_interface
- หากเป็น HIDL ให้นำ HASH ออกจาก
hardware/interfaces/current.txt
- หากเป็น AIDL ให้นำไดเรกทอรี
aidl_api
ที่มีไฟล์ AIDL ที่ตรึงไว้ออก - นำอินเทอร์เฟซออกจาก
hardware/interfaces/compatibility_matrices/exclude/fcm_exclude.cpp
สถานะเวอร์ชัน HAL
ส่วนต่อไปนี้จะอธิบายสถานะที่เป็นไปได้ของ HAL Version (ตามลำดับเวลา)
รอเปิดตัว
สำหรับ HAL ของอุปกรณ์ หาก HAL เวอร์ชันไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบคงที่
ใดๆ ระบบจะถือว่ายังไม่ได้เผยแพร่และอาจอยู่ระหว่างการพัฒนา
ซึ่งรวมถึง HAL เวอร์ชันที่อยู่ใน compatibility_matrix.F.xml
เท่านั้น
ตัวอย่าง
- ในระหว่างการพัฒนา Android 9 ระบบถือว่า
health@2.0
HAL เป็น HAL ที่ยังไม่เปิดตัวและมีเฉพาะในcompatibility_matrix.3.xml
teleportation@1.0
HAL ไม่อยู่ในเมทริกซ์ความเข้ากันได้ที่เผยแพร่ และ ยังถือเป็น HAL ที่ยังไม่ได้เผยแพร่ด้วย
สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์ก ของกิ่งก้านการพัฒนาที่ไม่เกี่ยวข้องเท่านั้น ระบบจะถือว่ายังไม่ได้เผยแพร่
เผยแพร่แล้วและปัจจุบัน
สำหรับ HAL ของอุปกรณ์ หาก HAL เวอร์ชันอยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบคงที่ จะมีการเผยแพร่ ตัวอย่างเช่น หลังจากที่ FCM เวอร์ชัน 3 ถูกระงับและเผยแพร่
ไปยัง AOSP แล้ว health@2.0
HAL จะถือเป็น HAL เวอร์ชันที่เผยแพร่และเป็นเวอร์ชันปัจจุบัน
หาก HAL เวอร์ชันอยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบคงที่ซึ่งมี FCM เวอร์ชันสูงสุด แสดงว่า HAL เวอร์ชันนั้นเป็นเวอร์ชันปัจจุบัน (กล่าวคือ ไม่เลิกใช้งาน) ตัวอย่างเช่น HAL เวอร์ชันที่มีอยู่ (เช่น nfc@1.0
ที่เปิดตัวใน compatibility_matrix.legacy.xml
)
ซึ่งยังคงมีอยู่ใน compatibility_matrix.3.xml
จะถือว่าเป็น HAL เวอร์ชันที่เผยแพร่และเป็นเวอร์ชันปัจจุบันด้วย
สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์ก
ของสาขาที่เผยแพร่ล่าสุดโดยไม่มีแอตทริบิวต์ max-level
หรือ (โดยปกติ) มี
max-level
เท่ากับหรือสูงกว่าเวอร์ชัน FCM ที่เผยแพร่ในสาขานี้ ระบบจะถือว่าเป็นเวอร์ชัน HAL ที่เผยแพร่และเป็นเวอร์ชันปัจจุบัน เช่น
displayservice
HAL ได้รับการเผยแพร่และเป็นเวอร์ชันปัจจุบันใน Android
12 ตามที่ระบุไว้ใน
ไฟล์ Manifest ของเฟรมเวิร์ก Android 12
เผยแพร่แล้วแต่เลิกใช้
สำหรับ HAL ของอุปกรณ์ ระบบจะเลิกใช้งาน HAL เวอร์ชันหนึ่งๆ ก็ต่อเมื่อมีคุณสมบัติต่อไปนี้ทั้งหมด
- มีการเผยแพร่
- ไม่ได้อยู่ในตารางความเข้ากันได้แบบสาธารณะและแบบคงที่ซึ่งมี FCM เวอร์ชันสูงสุด
- ซึ่งอยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบคงที่ที่เฟรมเวิร์กยังคง รองรับ
ตัวอย่าง
- HAL ของ
health@1.0
อยู่ในcompatibility_matrix.legacy.xml
compatibility_matrix.1.xml
และcompatibility_matrix.2.xml
แต่ไม่อยู่ในcompatibility_matrix.3.xml
จึงถือว่าเลิกใช้งานแล้วใน Android 9 - HAL ของ Power มีการอัปเกรดเวอร์ชันย่อยใน Android
9 แต่
power@1.0
ยังคงอยู่ในcompatibility_matrix.3.xml
power@1.0
compatibility_matrix.legacy.xml
compatibility_matrix.1.xml
และcompatibility_matrix.2.xml
compatibility_matrix.3.xml
มีpower@1.0-1
ดังนั้น power@1.0
จึงเป็นเวอร์ชันปัจจุบัน แต่NOT deprecated ใน Android
9
สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์กของสาขาที่เผยแพร่ล่าสุด
โดยมีแอตทริบิวต์ max-level
ต่ำกว่าเวอร์ชัน FCM ที่เผยแพร่
ในสาขานี้ ระบบจะถือว่าเป็นเวอร์ชัน HAL ที่เผยแพร่แล้วแต่เลิกใช้งานแล้ว ตัวอย่างเช่น schedulerservice
HAL ได้รับการเผยแพร่แต่เลิกใช้งานใน
Android 12 ตามที่ระบุไว้ใน
ไฟล์ Manifest ของเฟรมเวิร์ก Android 12
นำออกแล้ว
สำหรับ HAL ของอุปกรณ์ ระบบจะนำเวอร์ชัน HAL ออกก็ต่อเมื่อเงื่อนไขต่อไปนี้ เป็นจริงเท่านั้น
- ซึ่งก่อนหน้านี้ได้มีการเผยแพร่ไปแล้ว
- ไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบคงที่ที่เฟรมเวิร์กรองรับ
เราจะเก็บเมทริกซ์ความเข้ากันได้ที่เผยแพร่ต่อสาธารณะ หยุดการอัปเดต แต่เฟรมเวิร์กไม่รองรับไว้ในโค้ดเบสเพื่อกำหนดชุดเวอร์ชัน HAL ที่นำออก เพื่อให้เขียนการทดสอบ VTS ได้เพื่อตรวจสอบว่า HAL ที่นำออกไม่ได้อยู่ในอุปกรณ์ใหม่
สำหรับ HAL ของเฟรมเวิร์ก ระบบจะนำเวอร์ชัน HAL ออกก็ต่อเมื่อเป็นไปตามเงื่อนไขต่อไปนี้
- ซึ่งก่อนหน้านี้ได้มีการเผยแพร่ไปแล้ว
- และไม่ได้อยู่ในไฟล์ Manifest ของเฟรมเวิร์กของสาขาที่เผยแพร่ล่าสุด
FCM เดิม
Target FCM Version legacy เป็นค่าพิเศษสำหรับอุปกรณ์ที่ไม่ใช่ Treble ทั้งหมด FCM รุ่นเดิม compatibility_matrix.legacy.xml
จะแสดงข้อกำหนด
ของเฟรมเวิร์กในอุปกรณ์รุ่นเดิม (เช่น อุปกรณ์ที่เปิดตัวก่อน Android 8.0)
หากมีไฟล์นี้สำหรับ FCM เวอร์ชัน F
อุปกรณ์ที่ไม่ใช่ Treble จะ
อัปเกรดเป็น F
ได้หากไฟล์ Manifest ของอุปกรณ์เข้ากันได้กับไฟล์นี้ การนำออกเป็นไปตามขั้นตอนเดียวกับ FCM สำหรับ FCM เวอร์ชันอื่นๆ ของ Target
(นำออกหลังจากจำนวนอุปกรณ์ที่ใช้งานอยู่ซึ่งเป็นเวอร์ชันก่อน 8.0 ลดลงต่ำกว่าเกณฑ์ที่กำหนด)
เวอร์ชัน FCM ที่เผยแพร่
ดูรายการ FCM เวอร์ชันที่เผยแพร่แล้วได้ที่ส่วน
hardware/interfaces/compatibility_matrices
หากต้องการค้นหา FCM เวอร์ชันที่เผยแพร่พร้อมกับ Android เวอร์ชันที่เฉพาะเจาะจง โปรดดู
Level.h