วงจรของ FCM

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

หากต้องการเปิดใช้ 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 และ product มีให้ ระบบจะปิดใช้ 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 11 โดยทั่วไปจะมี FCM ระดับ 5 แต่จะใช้ FCM ระดับ 6 ขึ้นไป ซึ่งมาพร้อมกับข้อกำหนดเพิ่มเติมต่างๆ ที่ระบุไว้ในเมทริกซ์ความเข้ากันได้ ระดับที่รองรับสำหรับ Android 15 มีดังนี้

FCM รุ่นของ Android
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 นั้นพร้อมใช้งานใน 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 เวอร์ชันในพาร์ติชันระบบ เมทริกซ์ความเข้ากันได้ที่ FCM เวอร์ชัน F ในพาร์ติชันผลิตภัณฑ์และ system_ext จะแสดงข้อกำหนดในอุปกรณ์ที่มี FCM เวอร์ชัน F เป้าหมาย

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

การสิ้นสุดการสนับสนุน 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