วงจรของ FCM

เฟรมเวิร์ก 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 ใหม่

  1. คัดลอก compatibility_matrix.<F-1>.xml ล่าสุดไปยัง compatibility_matrix.F.xml
  2. อัปเดตแอตทริบิวต์ level ในไฟล์เป็น F
  3. เพิ่มกฎบิลด์ที่เกี่ยวข้องเพื่อติดตั้งเมทริกซ์ความเข้ากันได้นี้ลงในอุปกรณ์

แนะนำ 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 และมีขั้นตอนต่อไปนี้

  1. ตรวจสอบว่า compatibility_matrix.F.xml มีแอตทริบิวต์ level="F"
  2. ตรวจสอบว่าอุปกรณ์ทั้งหมดสร้างและบูตได้
  3. อัปเดตการทดสอบ VTS เพื่อให้มั่นใจว่าอุปกรณ์ที่เปิดตัวด้วยเฟรมเวิร์กล่าสุด (ตามระดับ API การจัดส่ง) มี FCM เป้าหมายเวอร์ชัน V >= F
  4. เผยแพร่ไฟล์ไปยัง 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 ขั้นตอนต่อไปนี้

  1. นำ compatibility_matrix.V.xml ออกจากกฎการสร้าง (เพื่อไม่ให้ติดตั้งในอิมเมจระบบ) และลบโค้ดที่ใช้หรือขึ้นอยู่กับความสามารถที่ถูกนำออก

  2. นำ 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 สูงสุด
  • โดยอยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและหยุดการทำงานที่เฟรมเวิร์กนี้ยังคงรองรับ

ตัวอย่าง

ดังนั้น 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