วงจรของ FCM

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

หากต้องการเปิดใช้ OTA เฉพาะเฟรมเวิร์กในระบบนิเวศของตนเอง พาร์ทเนอร์ที่ขยายอินเทอร์เฟซของผู้ให้บริการควรเลิกใช้งานและนำ HAL ของ HIDL ออกด้วยวิธีการเดียวกัน

คำศัพท์

ตารางความเข้ากันได้ของเฟรมเวิร์ก (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

เช่น 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

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

รอเปิดตัว

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

  • ในระหว่างการพัฒนา Android 9 นั้น health@2.0 HAL ถือว่ายังไม่เปิดตัวและอยู่ใน compatibility_matrix.3.xml เท่านั้น
  • teleportation@1.0 HAL ไม่ได้อยู่ในตารางความเข้ากันได้ที่เผยแพร่ และยังถือว่าเป็น 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