เฟรมเวิร์ก Android รุ่นหนึ่งมีเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM) หลายรายการ โดย 1 รายการสำหรับเวอร์ชัน FCM เป้าหมายแต่ละเวอร์ชันที่อัปเกรดได้ ซึ่งระบุสิ่งที่เฟรมเวิร์กอาจใช้และข้อกำหนดเวอร์ชัน FCM เป้าหมาย Android จะเลิกใช้งานและนำ HIDL HAL ออก จากนั้นจะแก้ไขไฟล์ FCM เพื่อแสดงสถานะของเวอร์ชัน HAL ซึ่งเป็นส่วนหนึ่งของวงจรการใช้งาน FCM
หากต้องการเปิดใช้ 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_ext และรูปภาพผลิตภัณฑ์ HAL ในไฟล์ Manifest ของเฟรมเวิร์กจะถูกปิดใช้แบบไดนามิกตามเวอร์ชัน FCM เป้าหมายของอุปกรณ์
- HAL ของเฟรมเวิร์ก
- HAL ที่ระบุไว้ตามที่ระบุไว้ในไฟล์ Manifest ของเฟรมเวิร์กและแสดงเป็น "จำเป็น" หรือ "ไม่บังคับ" ในเมทริกซ์ความเข้ากันได้ของอุปกรณ์ (DCM)
วงจร FCM ใน Codebase
เอกสารนี้อธิบายวงจรของ FCM ในบทคัดย่อ หากต้องการดูไฟล์ Manifest ที่รองรับในปัจจุบัน โปรดดู hardware/interfaces/compatibility_matrix.<FCM>.xml
ซึ่งคุณจะพบ FCM ได้ใน system/libvintf/include/vintf/Level.h
อุปกรณ์ที่ส่ง Android เวอร์ชันที่เกี่ยวข้องควรมีค่า FCM มากกว่าหรือเท่ากับระดับที่เทียบเท่า เช่น โดยทั่วไปการจัดส่งอุปกรณ์ที่ใช้ Android 11 จะมี FCM ระดับ 5 แต่ใช้ FCM ระดับ 6 ขึ้นไป ซึ่งจะมีข้อกำหนดเพิ่มเติมมากมายที่ระบุไว้ในเมทริกซ์ความเข้ากันได้ ระดับที่รองรับมีดังนี้
FCM | รุ่นของ Android |
---|---|
4 | Android 10/Q |
5 | Android 11/R |
6 | Android 12/วินาที |
7 | Android 13/T |
8 | Android 14/U |
202404 | Android 15/V |
เมื่อ Android เลิกใช้งานระดับ FCM แล้ว อุปกรณ์ที่มีอยู่จะยังคงรองรับระดับดังกล่าว
กำลังพัฒนาใน 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
ด้วยการตั้งค่า optional
ดังต่อไปนี้
optional="false"
หากอุปกรณ์ที่จัดส่งด้วยV = F
ต้องเปิดด้วย HAL นี้optional="true"
หากอุปกรณ์ที่จัดส่งด้วยV = F
เปิดใช้งานได้โดยไม่มี HAL นี้
เช่น Android 8.1 แนะนำ cas@1.0
เป็น HAL ที่ไม่บังคับ อุปกรณ์ที่เปิดตัวด้วย Android 8.1 ไม่จำเป็นต้องใช้ HAL นี้ ดังนั้นรายการต่อไปนี้จึงเพิ่มลงใน compatibility_matrix.F.xml
(ซึ่งเคยใช้ชื่อว่า compatibility_matrix.current.xml
ชั่วคราวระหว่างการพัฒนารุ่นดังกล่าว)
<hal format="hidl" optional="true">
<name>android.hardware.cas</name>
<version>1.0</version>
<interface>
<name>IMediaCasService</name>
<instance>default</instance>
</interface>
</hal>
อัปเกรด HAL (ย่อย)
ระหว่างการพัฒนา เมื่อ HAL มีการอัปเกรดเวอร์ชันย่อยจาก x.z
เป็น x.(z+1)
ที่เวอร์ชัน FCM ปัจจุบัน F
หากเวอร์ชันดังกล่าวเป็น
- ต้องระบุในอุปกรณ์ที่เปิดด้วย
V = F
โดยcompatibility_matrix.F.xml
จะต้องระบุx.(z+1)
และoptional="false"
- ไม่จำเป็นสำหรับอุปกรณ์ที่เปิดตัวด้วย
V = F
เนื่องจากcompatibility_matrix.F.xml
ต้องคัดลอกx.y-z
และตัวเลือกที่เป็นตัวเลือกจากcompatibility_matrix.<F-1>.xml
และเปลี่ยนเวอร์ชันเป็นx.w-(z+1)
(ที่w >= y
)
ตัวอย่างเช่น Android 8.1 เปิดตัว broadcastradio@1.1
ซึ่งเป็นการอัปเกรดเวอร์ชันย่อยของ HAL 1.0 เวอร์ชันเก่า (broadcastradio@1.0
) เป็นตัวเลือกสำหรับอุปกรณ์ที่เปิดตัวด้วย Android 8.0 ส่วน broadcastradio@1.1
เวอร์ชันใหม่กว่านั้นเป็นตัวเลือกสำหรับอุปกรณ์ที่เปิดตัวด้วย Android 8.1 ใน compatibility_matrix.1.xml
<hal format="hidl" optional="true">
<name>android.hardware.broadcastradio</name>
<version>1.0</version>
<interface>
<name>IBroadcastRadioFactory</name>
<instance>default</instance>
</interface>
</hal>
ระบบคัดลอกรายการนี้ไปยัง compatibility_matrix.F.xml
และแก้ไขดังนี้
<hal format="hidl" optional="true">
<name>android.hardware.broadcastradio</name>
<version>1.0-1</version>
<interface>
<name>IBroadcastRadioFactory</name>
<instance>default</instance>
</interface>
</hal>
อัปเกรด HAL (หลัก)
ในระหว่างการพัฒนา เมื่อ HAL มีการอัปเกรดเวอร์ชันหลักในเวอร์ชัน FCM ปัจจุบัน F
ระบบจะเพิ่มเวอร์ชันหลักใหม่ x.0
ลงใน compatibility_matrix.F.xml
พร้อมการตั้งค่า optional
ต่อไปนี้
optional="false"
เฉพาะเวอร์ชันx.0
หากอุปกรณ์ที่จัดส่งด้วยV = F
ต้องเปิดใช้ด้วยx.0
optional="false"
แต่ในกรณีที่ใช้ร่วมกับเวอร์ชันหลักที่เก่ากว่าในแท็ก<hal>
เดียวกัน หากอุปกรณ์ที่จัดส่งด้วยV = F
ต้องเปิดด้วย HAL นี้ แต่จะเปิดด้วยเวอร์ชันหลักที่เก่ากว่าได้optional="true"
หากอุปกรณ์ที่จัดส่งด้วยV = F
ไม่จำเป็นต้องเปิด HAL
เช่น Android 9 เปิดตัว health@2.0
เป็นการอัปเกรดเวอร์ชันหลักของ 1.0 HAL และเลิกใช้งาน 1.0 HAL เวอร์ชันเก่า health@1.0
เป็นตัวเลือกสำหรับอุปกรณ์ที่เปิดตัวด้วย Android 8.0 และ Android 8.1
อุปกรณ์ที่เปิดตัวด้วย Android 9 ต้องไม่มี HAL 1.0 ที่เลิกใช้งานและต้องมีเวอร์ชัน 2.0 เวอร์ชันใหม่แทน ฉัน
compatibility_matrix.legacy.xml
,
compatibility_matrix.1.xml
และ
compatibility_matrix.2.xml
<hal format="hidl" optional="true">
<name>android.hardware.health</name>
<version>1.0</version>;
<interface>
<name>IHealth</name>
<instance>default</instance>
</interface>
</hal>
ระบบคัดลอกรายการนี้ไปยัง compatibility_matrix.F.xml
และแก้ไขดังนี้
<hal format="hidl" optional="false">
<name>android.hardware.health</name>
<version>2.0</version>
<interface>
<name>IHealth</name>
<instance>default</instance>
</interface>
</hal>
ข้อจำกัด:
- เนื่องจาก HAL 2.0 อยู่ใน
compatibility_matrix.3.xml
ที่มีoptional="false"
อุปกรณ์ที่เปิดตัวด้วย Android 9 จึงต้องจัดส่งโดยมี HAL 2.0 - เนื่องจาก HAL 1.0 ไม่ได้อยู่ใน
compatibility_matrix.3.xml
อุปกรณ์ที่เปิดตัวด้วย Android 9 จึงต้องไม่มี HAL 1.0 (เนื่องจาก HAL นี้ถือว่าเป็นการเลิกใช้งาน) - เนื่องจาก HAL 1.0 มีอยู่ใน 1.0 HAL เวอร์ชันเก่า (1/2.xml) (FCM เวอร์ชันเก่าที่ Android 9 ใช้งานได้) เป็น HAL ที่ไม่บังคับ เฟรมเวิร์ก Android 9 จึงยังคงทำงานร่วมกับ 1.0 HAL ได้ (ซึ่งไม่ถือว่าเป็นเวอร์ชัน HAL ที่ถูกนำออก)
FCM เวอร์ชันใหม่
กระบวนการเผยแพร่เวอร์ชัน FCM บนพาร์ติชันระบบดำเนินการโดย Google แต่เพียงผู้เดียว โดยเป็นส่วนหนึ่งของรุ่น AOSP และมีขั้นตอนต่อไปนี้
- ตรวจสอบว่า
compatibility_matrix.F.xml
มีแอตทริบิวต์level="F"
- ตรวจสอบว่าอุปกรณ์ทุกเครื่องสร้างและเปิดเครื่อง
- อัปเดตการทดสอบ VTS เพื่อให้อุปกรณ์ที่เปิดตัวด้วยเฟรมเวิร์กล่าสุด (ตามระดับ API การจัดส่ง) มี FCM เป้าหมายเวอร์ชัน
V >= F
- เผยแพร่ไฟล์ไปที่ AOSP
ตัวอย่างเช่น การทดสอบ VTS ช่วยให้มั่นใจว่าอุปกรณ์ที่เปิดตัวด้วย Android 9 มีเวอร์ชัน FCM เป้าหมาย >= 3
นอกจากนี้ FCM ของผลิตภัณฑ์และ system_ext ยังอาจแสดงข้อกำหนดสำหรับ FCM แต่ละเวอร์ชันของแต่ละแพลตฟอร์มด้วย เจ้าของอิมเมจเหล่านี้จะเป็นผู้ปล่อยเวอร์ชัน FCM บนพาร์ติชันผลิตภัณฑ์และ System_ext หมายเลขเวอร์ชัน FCM บนพาร์ติชันผลิตภัณฑ์และพาร์ติชัน system_ext ต้องสอดคล้องกับหมายเลขในพาร์ติชันระบบ เช่นเดียวกับเวอร์ชัน FCM ในพาร์ติชันระบบ เมทริกซ์ความเข้ากันได้ที่ FCM เวอร์ชัน F ในผลิตภัณฑ์และพาร์ติชัน system_ext จะแสดงข้อกำหนดในอุปกรณ์ที่มี FCM เวอร์ชันเป้าหมาย F
การเลิกใช้งานเวอร์ชัน HAL
การเลิกใช้งานเวอร์ชัน HAL เป็นการตัดสินใจของนักพัฒนาแอป (สำหรับ AOSP HAL นั้น 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
เป็นการอัปเกรดเวอร์ชันหลัก 1.0 HAL 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 ดูไฟล์ Manifest ของเฟรมเวิร์ก Android 12
การยกเลิกการรองรับเวอร์ชัน FCM เป้าหมาย
เมื่ออุปกรณ์ที่ใช้งานอยู่ของเวอร์ชัน FCM เป้าหมายบางรุ่น V
ลดลงต่ำกว่าเกณฑ์ที่กำหนด ระบบจะนำเวอร์ชัน FCM เป้าหมายออกจาก SF ที่กำหนดไว้ของการเผยแพร่เฟรมเวิร์กถัดไป ซึ่งทำได้ด้วยทั้ง 2 ขั้นตอนต่อไปนี้
นำ
compatibility_matrix.V.xml
ออกจากกฎของบิลด์ (เพื่อไม่ให้ติดตั้งในอิมเมจของระบบ) และลบโค้ดที่ใช้งานหรือเกี่ยวข้องกับฟังก์ชันที่นำออกไปแล้วนำ HAL ของเฟรมเวิร์กที่มี
max-level
ต่ำกว่าหรือเท่ากับV
ออกจากไฟล์ Manifest ของเฟรมเวิร์ก และลบโค้ดที่ใช้ HAL ของเฟรมเวิร์กที่นำออก
อุปกรณ์ที่มีเวอร์ชัน FCM เป้าหมายอยู่นอก SF สำหรับรุ่นเฟรมเวิร์กที่กำหนดจะอัปเกรดเป็นรุ่นดังกล่าวไม่ได้
สถานะเวอร์ชัน HAL
ส่วนต่อไปนี้จะอธิบายสถานะที่เป็นไปได้ของเวอร์ชัน HAL (ตามลำดับเวลา)
รอเปิดตัว
สำหรับ HAL ของอุปกรณ์ หากเวอร์ชัน HAL ไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแช่แข็ง ระบบจะถือว่ายังไม่ได้เปิดตัวและอาจอยู่ระหว่างการพัฒนา
ซึ่งรวมถึงเวอร์ชัน HAL ที่อยู่ใน compatibility_matrix.F.xml
เท่านั้น
ตัวอย่าง
- ในระหว่างการพัฒนา Android 9
health@2.0
HAL ถือเป็น HAL ที่ยังไม่ได้เผยแพร่ และปรากฏเฉพาะในcompatibility_matrix.3.xml
- HAL ของ
teleportation@1.0
ไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้ที่เผยแพร่ไปแล้ว และถือว่าเป็น HAL ที่ยังไม่ได้เผยแพร่ด้วย
สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์กของสาขาการพัฒนาที่ไม่เกี่ยวข้องเท่านั้น ระบบจะถือว่าเวอร์ชันดังกล่าวยังไม่เผยแพร่
เผยแพร่แล้วและเป็นปัจจุบัน
สำหรับ HAL ของอุปกรณ์ หากเวอร์ชัน HAL อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและตรึงไว้ ระบบจะเผยแพร่เวอร์ชันดังกล่าว ตัวอย่างเช่น หลังจาก FCM เวอร์ชัน 3 ถูกระงับและเผยแพร่ไปยัง AOSP แล้ว HAL ของ health@2.0
จะถือว่าเป็นเวอร์ชัน HAL ที่เผยแพร่และเวอร์ชันปัจจุบัน
หากเวอร์ชัน HAL อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและหยุดการทำงานที่มีเวอร์ชัน FCM สูงสุด เวอร์ชัน HAL จะเป็นเวอร์ชันปัจจุบัน (ไม่เลิกใช้งานแล้ว) ตัวอย่างเช่น เวอร์ชัน HAL ที่มีอยู่ (เช่น nfc@1.0
ที่เปิดตัวใน compatibility_matrix.legacy.xml
แต่ยังคงอยู่ใน compatibility_matrix.3.xml
จะถือว่าเป็นเวอร์ชันที่เผยแพร่แล้วและเวอร์ชัน HAL ปัจจุบันด้วย
สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์กของ Branch ที่นำออกล่าสุดโดยไม่มีแอตทริบิวต์ max-level
หรือ (ผิดปกติ) max-level
เท่ากับหรือสูงกว่าเวอร์ชัน FCM ที่เปิดตัวใน Branch นี้ จะถือว่าเป็นเวอร์ชัน HAL ที่เผยแพร่แล้วในปัจจุบัน ตัวอย่างเช่น มีการเผยแพร่ HAL ของ displayservice
และเป็นข้อมูลล่าสุดใน 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 ขั้นสูงมีการอัปเกรดเวอร์ชันย่อยใน 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
จึงเป็นเวอร์ชันปัจจุบัน แต่ไม่ได้เลิกใช้งานใน Android
9
สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์กของ Branch ที่เผยแพร่ล่าสุดที่มีแอตทริบิวต์ max-level
ต่ำกว่าการเผยแพร่เวอร์ชัน FCM ใน Branch นี้ ระบบจะถือว่าเป็นเวอร์ชัน HAL ที่เผยแพร่แล้ว แต่เลิกใช้งานแล้ว เช่น มีการเผยแพร่ HAL ของ schedulerservice
แต่เลิกใช้งานใน Android 12 ตามที่ระบุโดยไฟล์ Manifest ของเฟรมเวิร์ก Android 12
นำออกแล้ว
สำหรับ HAL ของอุปกรณ์ ระบบจะนำเวอร์ชัน HAL ออกในกรณีต่อไปนี้เท่านั้น
- ซึ่งก่อนหน้านี้ได้เปิดตัวแล้ว
- ไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบตรึงไว้ใดๆ ที่เฟรมเวิร์กรองรับ
เมทริกซ์ความเข้ากันได้ที่เผยแพร่ต่อสาธารณะ ถูกหยุดการทำงาน แต่เฟรมเวิร์กไม่รองรับจะยังคงอยู่ในฐานของโค้ดเพื่อกำหนดเวอร์ชัน HAL ที่นำออกไปแล้วเพื่อให้เขียนการทดสอบ VTS เพื่อให้แน่ใจว่า HAL ที่นำออกไปแล้วไม่ได้อยู่ในอุปกรณ์ใหม่
สำหรับ HAL ของเฟรมเวิร์ก ระบบจะนำเวอร์ชัน HAL ออกหากเป็นไปตามข้อกำหนดต่อไปนี้
- ซึ่งก่อนหน้านี้ได้เปิดตัวแล้ว
- ที่ไม่ได้อยู่ในไฟล์ Manifest ของเฟรมเวิร์กของ Branch ที่เผยแพร่ล่าสุด
FCM เดิม
เวอร์ชัน FCM เป้าหมายเดิมเป็นค่าพิเศษสำหรับอุปกรณ์ที่เปิดเสียงไม่ได้ทั้งหมด FCM เดิม compatibility_matrix.legacy.xml
แสดงข้อกำหนดของเฟรมเวิร์กบนอุปกรณ์เดิม (อุปกรณ์ที่เปิดตัวก่อน Android 8.0)
หากไฟล์นี้สำหรับ FCM เวอร์ชัน F
อยู่ คุณจะอัปเกรดเป็นอุปกรณ์ที่ไม่มี Treble เป็น F
ได้ หากไฟล์ Manifest ของอุปกรณ์เข้ากันได้กับไฟล์นี้ การนำออกจะทำตามขั้นตอนเดียวกับ FCM สำหรับเวอร์ชัน FCM เป้าหมายอื่นๆ (ถูกนำออกหลังจากจำนวนอุปกรณ์ก่อนเวอร์ชัน 8.0 ที่ใช้งานอยู่ลดลงต่ำกว่าเกณฑ์ที่กำหนด)
เวอร์ชัน FCM ที่เผยแพร่
ดูรายการเวอร์ชัน FCM ที่เผยแพร่ได้ใน hardware/interfaces/compatibility_matrices
หากต้องการดูเวอร์ชัน FCM ที่เปิดตัวพร้อมกับ Android รุ่นที่เจาะจง โปรดดู Level.h