วงจรของ FCM

เฟรมเวิร์ก 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 ใหม่ ให้ทำดังนี้

  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 ซึ่งเป็นการอัปเกรดเวอร์ชันย่อยของ 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 และมีขั้นตอนต่อไปนี้

  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 บนพาร์ติชันผลิตภัณฑ์และ 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 ขั้นตอนต่อไปนี้

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

ตัวอย่าง

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