วงจรของ FCM

การเปิดตัวเฟรมเวิร์ก Android มีเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM) หลายรายการ โดยมี 1 รายการสำหรับ FCM เวอร์ชันเป้าหมายที่อัปเกรดได้แต่ละเวอร์ชัน ซึ่งจะกำหนดว่า เฟรมเวิร์กอาจใช้ข้อกำหนดของ FCM เวอร์ชันเป้าหมายใด Android จะเลิกใช้งานและนำ HAL ของ HIDL ออก แล้วแก้ไขไฟล์ 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 ในฐานของโค้ด

เอกสารนี้อธิบายวงจรการใช้งาน FCM ในเชิงนามธรรม หากต้องการดูไฟล์ Manifest ที่รองรับ โปรดดู hardware/interfaces/compatibility_matrices/compatibility_matrix.<FCM>.xml ซึ่งคุณจะพบ FCM ได้ใน system/libvintf/include/vintf/Level.h

อุปกรณ์ที่จัดส่ง Android เวอร์ชันที่เกี่ยวข้องควรมี ค่า FCM มากกว่าหรือเท่ากับระดับที่เทียบเท่า ตัวอย่างเช่น อุปกรณ์ที่จัดส่งพร้อม Android 12 โดยทั่วไปจะมี FCM ระดับ 6 แต่ก็อาจใช้ FCM ระดับ 7 ขึ้นไป ซึ่งจะเปลี่ยนลักษณะการทำงานของ Android และบังคับให้ใช้ Vendor API ที่ใหม่กว่าตามที่ระบุไว้ในเมทริกซ์ความเข้ากันได้ ระดับที่รองรับสำหรับ Android 16 มีดังนี้

FCM รุ่นของ Android
6 Android 12/S
7 Android 13/T
8 Android 14/U
202404 Android 15/V
202504 Android 16/B

ระดับ FCM เท่ากับหรือใหม่กว่า ระดับ API ของผู้ให้บริการ

เมื่อ Android เลิกใช้งานระดับ FCM ระบบจะยังคงรองรับอุปกรณ์ที่มีอยู่ อุปกรณ์ที่กำหนดเป้าหมายระดับ FCM ที่ต่ำกว่าจะได้รับอนุญาตโดยนัยให้ใช้ HAL ที่ระบุไว้ในระดับ FCM ที่ใหม่กว่า ตราบใดที่ HAL นั้นพร้อมใช้งานใน Branch

พัฒนาใน 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

เช่น 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 เวอร์ชัน 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 และมีขั้นตอนต่อไปนี้

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

ตัวอย่างเช่น การทดสอบ VTS ช่วยให้มั่นใจได้ว่าอุปกรณ์ที่เปิดตัวด้วย Android 9 มี Target FCM Version >= 3

นอกจากนี้ FCM ของผลิตภัณฑ์และ system_ext อาจแสดงข้อกำหนดสำหรับ FCM แต่ละเวอร์ชันของแพลตฟอร์มด้วย เจ้าของรูปภาพเหล่านี้จะเป็นผู้เผยแพร่ FCM เวอร์ชันต่างๆ ในพาร์ติชันผลิตภัณฑ์และ system_ext ตามลำดับ หมายเลขเวอร์ชัน FCM ในพาร์ติชัน product และ system_ext ต้องสอดคล้องกับหมายเลขในพาร์ติชัน system เมทริกซ์ความเข้ากันได้ที่ FCM เวอร์ชัน F ในพาร์ติชัน product และ system_ext จะแสดงข้อกำหนดในอุปกรณ์ที่มี FCM เวอร์ชัน F เป้าหมาย ซึ่งคล้ายกับ FCM เวอร์ชันในพาร์ติชันระบบ

การเลิกใช้งานเวอร์ชัน 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 ดูไฟล์ Manifest ของเฟรมเวิร์ก Android 12

การสิ้นสุดการสนับสนุน FCM เวอร์ชันเป้าหมาย

เมื่ออุปกรณ์ที่ใช้งานอยู่ของ FCM เวอร์ชันเป้าหมาย V ลดลงต่ำกว่าเกณฑ์ที่กำหนด ระบบจะนำ FCM เวอร์ชันเป้าหมายออกจากชุด SF ของ เฟรมเวิร์กเวอร์ชันถัดไป โดยทำตามขั้นตอนต่อไปนี้

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

  2. นำ HAL ของเฟรมเวิร์กที่มี max-level ต่ำกว่าหรือเท่ากับ V ออกจาก ไฟล์ Manifest ของเฟรมเวิร์ก และลบโค้ดที่ใช้ HAL ของเฟรมเวิร์กที่นำออก

อุปกรณ์ที่มี FCM เวอร์ชันเป้าหมายอยู่นอก SF สำหรับเฟรมเวิร์กที่เผยแพร่ จะไม่สามารถอัปเกรดเป็นรุ่นดังกล่าวได้

การนำ HAL ที่เลิกใช้งานแล้วออก

เมื่อนำ FCM เวอร์ชันหนึ่งออก อินเทอร์เฟซ HAL หรือเวอร์ชันของอินเทอร์เฟซ HAL บางรายการ จะไม่อยู่ใน FCM ใดๆ อีกต่อไป ซึ่งหมายความว่า Android ไม่รองรับ อุปกรณ์ดังกล่าวอีกต่อไป แม้แต่สำหรับการอัปเกรดอุปกรณ์

หลังจากที่ระบบไม่รองรับ HAL แล้ว นักพัฒนาแอปจะนำการอ้างอิงถึงอินเทอร์เฟซ HAL นั้นออกจาก Android ซึ่งรวมถึงในโค้ดไคลเอ็นต์ในเฟรมเวิร์ก การติดตั้งใช้งานเริ่มต้น และกรอบการทดสอบ VTS

หากไม่มี HAL ที่รองรับซึ่งสืบทอดมาจาก HAL ที่จะนำออก คุณจะนำ คำจำกัดความของ HAL เองออกได้โดยทำตามขั้นตอนเพิ่มเติมเพียงไม่กี่ขั้นตอน

  1. นำคำจำกัดความของอินเทอร์เฟซ HAL ออกจากซอร์สโค้ด ซึ่งรวมถึงไฟล์ *.aidl และโมดูล Android.bp aidl_interface
  2. หากเป็น HIDL ให้นำ HASH ออกจาก hardware/interfaces/current.txt
  3. หากเป็น AIDL ให้นำไดเรกทอรี aidl_api ที่มีไฟล์ AIDL ที่ตรึงไว้ออก
  4. นำอินเทอร์เฟซออกจาก hardware/interfaces/compatibility_matrices/exclude/fcm_exclude.cpp

สถานะเวอร์ชัน HAL

ส่วนต่อไปนี้จะอธิบายสถานะที่เป็นไปได้ของเวอร์ชัน HAL (ตามลำดับเวลา)

รอเปิดตัว

สำหรับ HAL ของอุปกรณ์ หาก HAL เวอร์ชันไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบที่ตรึงไว้ ใดๆ ระบบจะถือว่ายังไม่ได้เผยแพร่และอาจอยู่ระหว่างการพัฒนา ซึ่งรวมถึง HAL เวอร์ชันที่อยู่ใน compatibility_matrix.F.xml เท่านั้น ตัวอย่าง

  • ในระหว่างการพัฒนา Android 9 ระบบถือว่า HAL health@2.0 เป็น HAL ที่ยังไม่เปิดตัวและมีเฉพาะใน compatibility_matrix.3.xml
  • HAL teleportation@1.0 ไม่อยู่ในเมทริกซ์ความเข้ากันได้ที่เผยแพร่ และ ยังถือเป็น HAL ที่ยังไม่ได้เผยแพร่ด้วย

สำหรับ HAL ของเฟรมเวิร์ก หากเวอร์ชัน HAL อยู่ในไฟล์ Manifest ของเฟรมเวิร์ก ของ Branch การพัฒนาที่ไม่เกี่ยวข้องเท่านั้น ระบบจะถือว่ายังไม่ได้เผยแพร่

เผยแพร่แล้วและปัจจุบัน

สำหรับ 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 ที่เผยแพร่ ใน Branch นี้ ระบบจะถือว่าเป็นเวอร์ชัน HAL ที่เผยแพร่แล้วแต่เลิกใช้งานแล้ว ตัวอย่างเช่น HAL schedulerservice ได้รับการเผยแพร่แต่เลิกใช้งานใน Android 12 ตามที่ระบุไว้ใน ไฟล์ Manifest ของเฟรมเวิร์ก Android 12

นำออกแล้ว

สำหรับ HAL ของอุปกรณ์ ระบบจะนำ HAL เวอร์ชันออกก็ต่อเมื่อเงื่อนไขต่อไปนี้เป็นจริงเท่านั้น

  • ซึ่งก่อนหน้านี้ได้มีการเผยแพร่ไปแล้ว
  • ไม่ได้อยู่ในเมทริกซ์ความเข้ากันได้แบบสาธารณะและแบบที่ตรึงไว้ที่เฟรมเวิร์กรองรับ

เราจะเก็บเมทริกซ์ความเข้ากันได้ที่เผยแพร่ต่อสาธารณะ ที่ตรึงไว้ แต่เฟรมเวิร์กไม่รองรับไว้ในโค้ดเบสเพื่อกำหนดชุดเวอร์ชัน HAL ที่นำออก เพื่อให้เขียนการทดสอบ VTS ได้เพื่อตรวจสอบว่า HAL ที่นำออกไม่ได้อยู่ในอุปกรณ์ใหม่

สำหรับ HAL ของเฟรมเวิร์ก ระบบจะนำ HAL เวอร์ชันออกก็ต่อเมื่อมีคุณสมบัติต่อไปนี้

  • ซึ่งก่อนหน้านี้ได้มีการเผยแพร่ไปแล้ว
  • และไม่ได้อยู่ในไฟล์ Manifest ของเฟรมเวิร์กของ Branch ที่เผยแพร่ล่าสุด

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