วงจรของ FCM

เฟรมเวิร์ก Android แต่ละรุ่นจะมีตารางความเข้ากันได้ของเฟรมเวิร์ก (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, 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 ขึ้นไป ซึ่งมาพร้อมกับข้อกําหนดเพิ่มเติมต่างๆ ที่ระบุไว้ในตารางความเข้ากันได้ ระดับที่รองรับสำหรับ 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 ดังกล่าวพร้อมใช้งานในสาขา

พัฒนาใน 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เวอร์ชันใหม่ใช้สำหรับอุปกรณ์ที่กำหนดเป้าหมายเป็น FCM ของ Android 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 ต้องใช้ HAL เวอร์ชัน 2.0 ใหม่หากมี ในตัวอย่างนี้ 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 มีเวอร์ชัน FCM เป้าหมาย >= 3

นอกจากนี้ FCM ของ product และ 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 ของอุปกรณ์ตั้งค่าเป็น 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 ที่เลิกใช้งานแล้วออกอย่างสมบูรณ์

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

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

หากไม่มี HAL ที่รองรับซึ่งรับค่ามาจาก HAL ที่ถูกนำออก คุณจะนําคําจํากัดความ HAL ออกได้โดยใช้ขั้นตอนเพิ่มเติม 2-3 ขั้นตอน

  1. นำคําจํากัดความอินเทอร์เฟซ HAL ออกจากซอร์สโค้ด ซึ่งรวมถึงไฟล์ *.aidl และโมดูล Android.bp aidl_interface
  2. หากเป็น HIDL ให้นำแฮชออกจาก 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 นั้น health@2.0 HAL ถือว่ายังไม่เปิดตัวและอยู่ใน compatibility_matrix.3.xml เท่านั้น
  • HAL ของ teleportation@1.0 ไม่ได้อยู่ในตารางความเข้ากันได้ที่เผยแพร่ และยังถือว่าเป็น HAL ที่ยังไม่เผยแพร่ด้วย

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

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

สำหรับ HAL ของอุปกรณ์ หากเวอร์ชัน HAL อยู่ในตารางความเข้ากันได้แบบสาธารณะและแบบหยุดพัฒนาแล้ว แสดงว่าเวอร์ชันดังกล่าวได้รับการเผยแพร่แล้ว ตัวอย่างเช่น หลังจากที่ FCM เวอร์ชัน 3 หยุดพัฒนาและเผยแพร่ไปยัง AOSP แล้ว ระบบจะถือว่า health@2.0 HAL เป็น HAL เวอร์ชันปัจจุบันที่เผยแพร่แล้ว

หากเวอร์ชัน HAL อยู่ในตารางความเข้ากันได้แบบสาธารณะและแบบคงที่ซึ่งมีเวอร์ชัน FCM สูงสุด แสดงว่าเวอร์ชัน HAL เป็นเวอร์ชันปัจจุบัน (กล่าวคือ ไม่ได้เลิกใช้งาน) ตัวอย่างเช่น HAL เวอร์ชันที่มีอยู่ (เช่น nfc@1.0 ที่เปิดตัวใน compatibility_matrix.legacy.xml) ซึ่งยังคงอยู่ใน compatibility_matrix.3.xml จะถือว่าเปิดตัวแล้วและเป็น HAL เวอร์ชันปัจจุบันด้วย

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