วงจรของ FCM

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

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

คำศัพท์

เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM)
ไฟล์ XML ที่ระบุข้อกำหนดของเฟรมเวิร์กสำหรับผู้ให้บริการที่สอดคล้องกัน การนำไปใช้งานจริง เมทริกซ์ความเข้ากันได้จะมีเวอร์ชันต่างๆ และเป็นเวอร์ชันใหม่ สำหรับการเผยแพร่เฟรมเวิร์กแต่ละรายการ การเผยแพร่เฟรมเวิร์กแต่ละรายการประกอบด้วย FCM หลายรายการ
เวอร์ชัน FCM ของแพลตฟอร์ม (SF)
ชุดของ FCM ทุกเวอร์ชันในการเผยแพร่เฟรมเวิร์ก เฟรมเวิร์กนี้ มีประโยชน์ ด้วยการใช้งานของผู้ให้บริการที่เป็นไปตาม FCM รายการใดรายการหนึ่งเหล่านี้
เวอร์ชัน FCM (F)
เวอร์ชันสูงสุดในบรรดา FCM ทั้งหมดในเวอร์ชันเฟรมเวิร์ก
เวอร์ชัน FCM เป้าหมาย (V)
เวอร์ชัน FCM เป้าหมาย (จาก SF) โดยประกาศอย่างชัดเจนในอุปกรณ์ ที่การดำเนินการของผู้ให้บริการพึงพอใจ การใช้งานของผู้ให้บริการจะต้อง ที่สร้างขึ้นกับ 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 ด้านเฟรมเวิร์กของผู้ให้บริการ ของ Google รวมถึง 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/วินาที
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 ต้อง ขอทราบเวอร์ชัน 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 ต้องจัดส่งโดยมี 2.0 HAL"
  • เนื่องจาก HAL 1.0 ไม่ได้อยู่ใน compatibility_matrix.3.xml อุปกรณ์ที่เปิดตัวด้วย Android 9 ต้องไม่มี HAL 1.0 (เนื่องจาก HAL นี้ถือว่าเลิกใช้งานแล้ว)
  • เนื่องจากมี HAL 1.0 ใน legacy/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) เพื่อประกอบการตัดสินใจ) กรณีนี้อาจเกิดขึ้นเมื่อเวอร์ชัน 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 โปรดดู เฟรมเวิร์ก Android 12 ไฟล์ Manifest

การยกเลิกการรองรับเวอร์ชัน FCM เป้าหมาย

เมื่ออุปกรณ์ที่ใช้งานอยู่ของเวอร์ชัน FCM เป้าหมายบางเวอร์ชัน V ลดลงต่ำกว่าบางเวอร์ชัน ระบบจะนำเวอร์ชัน FCM เป้าหมายออกจาก F ที่กำหนด เฟรมเวิร์กฉบับถัดไป ซึ่งทำได้ด้วยทั้ง 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 ของเฟรมเวิร์กเท่านั้น ของ 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 ตามที่ระบุโดย เฟรมเวิร์ก Android 12 Manifest

เผยแพร่แล้วแต่เลิกใช้งานแล้ว

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

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

ตัวอย่าง

ดังนั้น power@1.0 จึงเป็นเวอร์ชันปัจจุบัน แต่ไม่ได้เลิกใช้งานใน Android 10.

สำหรับ 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 เป้าหมายเดิมเป็นค่าพิเศษสำหรับอุปกรณ์ที่เปิดเสียงไม่ได้ทั้งหมด FCM เดิม compatibility_matrix.legacy.xml แสดงข้อกำหนด ของเฟรมเวิร์กบนอุปกรณ์รุ่นเก่า (เช่น อุปกรณ์ที่เปิดตัวก่อน Android 8.0)

ถ้ามีไฟล์นี้สำหรับ FCM เวอร์ชัน F อุปกรณ์ที่ไม่มีเสียงแหลมสามารถ อัปเกรดเป็น F หากไฟล์ Manifest ของอุปกรณ์สามารถทำงานร่วมกับไฟล์นี้ได้ คือ การนำออกนั้นทำตามขั้นตอนเดียวกับ FCM สำหรับ FCM เวอร์ชันเป้าหมายอื่นๆ (ลบออกหลังจากจำนวนอุปกรณ์ก่อนรุ่น 8.0 ที่มีการใช้งานลดลงต่ำกว่า )

เวอร์ชัน FCM ที่เผยแพร่

ดูรายการเวอร์ชัน FCM ที่เผยแพร่ได้ใน hardware/interfaces/compatibility_matrices

หากต้องการดูเวอร์ชัน FCM ที่เผยแพร่พร้อมกับ Android รุ่นที่เจาะจง โปรดดู Level.h