เฟรมเวิร์ก Android แต่ละรุ่นจะมีตารางความเข้ากันได้ของเฟรมเวิร์ก (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, system_ext และรูปภาพผลิตภัณฑ์ ระบบจะปิดใช้ HAL ในไฟล์ Manifest ของเฟรมเวิร์กแบบไดนามิกตามเวอร์ชัน FCM เป้าหมายของอุปกรณ์
- HAL ของเฟรมเวิร์ก
- HAL ที่แสดงเป็น "มีให้" ในไฟล์ Manifest ของเฟรมเวิร์ก และแสดงเป็น "ต้องระบุ" หรือ "ไม่บังคับ" ในตารางความเข้ากันได้ของอุปกรณ์ (DCM)
วงจร FCM ในฐานของโค้ด
เอกสารนี้อธิบายวงจรชีวิตของ 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/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
ด้วยการตั้งค่า 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
เป็นเวอร์ชันย่อยที่อัปเกรดจาก 1.0 HAL "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
เป็นการอัปเกรดเวอร์ชันหลักของ HAL 1.0 และเลิกใช้งาน HAL 1.0 health@1.0
เป็นเวอร์ชันเก่าซึ่งไม่บังคับสำหรับอุปกรณ์ที่เปิดตัวด้วย Android 8.0 และ Android 8.1 อุปกรณ์ที่เปิดตัวด้วย Android 9
ต้องมีเวอร์ชัน 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 มีอยู่ใน
legacy/1/2.xml
(FCM เวอร์ชันเก่าที่ Android 9 ใช้งานได้) เป็น HAL ที่ไม่บังคับ เฟรมเวิร์ก Android 9 จึงยังคงทำงานร่วมกับ HAL 1.0 ได้ (ซึ่งไม่ถือว่าเป็น 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 ในพาร์ติชัน product และ system_ext ตามลำดับ หมายเลขเวอร์ชัน FCM ในพาร์ติชัน product และ system_ext ต้องตรงกับหมายเลขในพาร์ติชัน system เช่นเดียวกับเวอร์ชัน FCM ในพาร์ติชันระบบ ตารางความเข้ากันได้ที่ FCM เวอร์ชัน F ในพาร์ติชัน product และ system_ext จะแสดงข้อกำหนดในอุปกรณ์ที่มี FCM เวอร์ชันเป้าหมาย F
การเลิกใช้งานเวอร์ชัน HAL
การเลิกใช้งานเวอร์ชัน HAL ขึ้นอยู่กับการตัดสินใจของนักพัฒนาแอป (เช่น Google จะเป็นผู้ตัดสินใจสำหรับ HAL ของ AOSP) ซึ่งอาจเกิดขึ้นเมื่อมีการเผยแพร่ 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
ของ FCM ได้รับการตั้งค่าเป็น 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 ถือว่ายังไม่เปิดตัวและอยู่ในcompatibility_matrix.3.xml
เท่านั้น - HAL ของ
teleportation@1.0
ไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้ที่เผยแพร่ไปแล้ว และถือว่าเป็น HAL ที่ยังไม่ได้เผยแพร่ด้วย
สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์กจากสาขาการพัฒนาที่ไม่เกี่ยวข้องเท่านั้น ระบบจะถือว่า HAL นั้นยังไม่ได้เผยแพร่
เผยแพร่แล้วและปัจจุบัน
สำหรับ 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 ของเฟรมเวิร์กในสาขาที่เผยแพร่ล่าสุดซึ่งมีแอตทริบิวต์ max-level
ต่ำกว่าเวอร์ชัน FCM ที่เผยแพร่ในสาขานี้ ระบบจะถือว่า HAL เวอร์ชันดังกล่าวเป็นเวอร์ชันที่เผยแพร่แล้วแต่เลิกใช้งานแล้ว ตัวอย่างเช่น schedulerservice
HAL เผยแพร่แล้ว แต่เลิกใช้งานใน Android 12 ตามที่ระบุไว้ในไฟล์ Manifest ของเฟรมเวิร์ก Android 12
นำออกแล้ว
สําหรับ HAL ของอุปกรณ์ ระบบจะนำเวอร์ชัน HAL ออกก็ต่อเมื่อเงื่อนไขต่อไปนี้เป็นจริงเท่านั้น
- เนื้อหาดังกล่าวเคยเผยแพร่ไปแล้ว
- ไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบตรึงไว้ใดๆ ที่เฟรมเวิร์กรองรับ
เมทริกซ์ความเข้ากันได้ที่เป็นแบบสาธารณะ หยุดทำงานแล้ว แต่เฟรมเวิร์กไม่รองรับจะเก็บไว้ในโค้ดเบสเพื่อกำหนดชุดเวอร์ชัน HAL ที่นําออกเพื่อให้สามารถเขียนการทดสอบ VTS เพื่อให้แน่ใจว่า HAL ที่นําออกจะไม่อยู่ในอุปกรณ์ใหม่
สำหรับ HAL ของเฟรมเวิร์ก ระบบจะนำเวอร์ชัน HAL ออกก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้เท่านั้น
- เนื้อหาดังกล่าวเคยเผยแพร่ไปแล้ว
- ไม่ได้อยู่ในไฟล์ Manifest ของเฟรมเวิร์กใดๆ ของสาขาที่เผยแพร่ล่าสุด
FCM เดิม
เวอร์ชัน FCM เป้าหมายเดิมเป็นค่าพิเศษสำหรับอุปกรณ์ที่ไม่ใช่ Treble ทั้งหมด 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