ระดับ API ของผู้ให้บริการหมายถึงเวอร์ชันของอินเทอร์เฟซที่พาร์ติชันของผู้ให้บริการรองรับ อินเทอร์เฟซเป็นแบบ 2 ทิศทาง โดยจะอธิบาย API ที่พาร์ติชันผู้ให้บริการให้กับพาร์ติชันระบบ (เลเยอร์แอบสแตรกของฮาร์ดแวร์หรืออินเทอร์เฟซ HAL) และ API ที่พาร์ติชันผู้ให้บริการต้องใช้จากพาร์ติชันระบบ (ชุดนักพัฒนาซอฟต์แวร์เนทีฟระดับต่ำหรืออินเทอร์เฟซ LLNDK)
นอกจากนี้ ระบบยังใช้ระดับ API ของผู้ให้บริการเพื่อกำหนดข้อกำหนดซอฟต์แวร์ของผู้ให้บริการ (VSR) ซึ่งเป็นคอลเล็กชันข้อกำหนดด้านฟังก์ชันการทำงานและข้อกำหนดที่ไม่ใช่ฟังก์ชันการทำงานที่ซอฟต์แวร์ในพาร์ติชันของผู้ให้บริการต้องเป็นไปตาม
ส่วนที่เหลือของหน้านี้จะอธิบายวิธีใช้พร็อพเพอร์ตี้ของระบบเพื่อระบุระดับ API ของผู้ให้บริการ โดยขึ้นอยู่กับเวอร์ชัน Android ที่คุณใช้
การระงับผู้ให้บริการ
Android ช่วยให้ผู้ให้บริการตรึงพาร์ติชันผู้ให้บริการไว้ที่ VSR เวอร์ชันที่เจาะจงได้ ชุดฟีเจอร์ที่ Android คาดหวังจากพาร์ติชันของผู้ให้บริการจะกำหนดโดยระดับ API ของผู้ให้บริการที่เชื่อมโยงกับพาร์ติชันของผู้ให้บริการ ขณะรันไทม์ ลักษณะการทํางานของซอฟต์แวร์ที่ทํางานในพาร์ติชันระบบจะปรับให้เหมาะกับระดับ Vendor API ของพาร์ติชันผู้ให้บริการ ตัวอย่างเช่น ซอฟต์แวร์ในพาร์ติชันระบบอาจไม่ใช้ฟีเจอร์ใหม่หากระดับ API ของพาร์ติชันของผู้ให้บริการไม่รองรับ
การระงับผู้ให้บริการจะใช้ได้ก็ต่อเมื่อคุณสร้างอุปกรณ์ที่เข้ากันได้กับ Android เท่านั้น
ระบุระดับ API ของผู้ให้บริการ (Android 14-QPR3 ขึ้นไป)
สำหรับ Android 14-QPR3 ขึ้นไป ระดับ API ของผู้ให้บริการจะเปิดตัวแยกกัน ซึ่งหมายความว่าระดับ API ของ SDK และระดับ API ของผู้ให้บริการจะไม่สอดคล้องกัน
เนื่องจากกำหนดการเผยแพร่แยกกัน สำหรับ Android 14-QPR3 ขึ้นไป ระดับ API ของผู้ให้บริการจะแยกจากระดับ API ของ SDK โดยสมบูรณ์ เพื่อให้มั่นใจว่าการแยกส่วนนี้มีความชัดเจน รูปแบบของระดับ API ผู้ให้บริการคือวันที่ในรูปแบบ YYYYMM (ปีและเดือน) ในขณะที่ระดับ SDK เป็นจำนวนเต็ม
Android 14-QPR3 ขึ้นไปมีพร็อพเพอร์ตี้ของระบบต่อไปนี้ที่เกี่ยวข้องกับระดับ API ของผู้ให้บริการ (ro.vendor.api_level
)
พร็อพเพอร์ตี้ของระบบ | รูปแบบ | คำอธิบาย | การตั้งค่าเริ่มต้น |
---|---|---|---|
ro.board.api_level |
YYYYMM | ระดับ API ของผู้ให้บริการที่ซอฟต์แวร์ของชิปเซ็ตรองรับ พร็อพเพอร์ตี้นี้กำหนดไว้สำหรับชิปเซ็ตทั้งหมด | ระบบบิลด์จะตั้งค่านี้โดยอัตโนมัติ |
ro.board.first_api_level |
ปปปปดด | ระดับ API ของผู้ให้บริการที่ซอฟต์แวร์ของชิปเซ็ตเปิดตัวครั้งแรก พร็อพเพอร์ตี้นี้เกี่ยวข้องกับชิปเซ็ตเท่านั้น และกำหนดโดยผู้ให้บริการ SoC หากชิปเซ็ต SoC มีคุณสมบัติตรงตามเกณฑ์การหยุดให้บริการของผู้ให้บริการ หลังจากการตั้งค่าครั้งแรกแล้ว คุณต้องไม่แก้ไข | ผู้ให้บริการ SoC กำหนดการตั้งค่านี้โดยใช้ BOARD_SHIPPING_API_LEVEL |
ro.product.first_api_level |
จำนวนเต็ม | ระดับ API ของ SDK ที่อุปกรณ์เปิดใช้งานครั้งแรก | พร็อพเพอร์ตี้นี้กําหนดโดย OEM ซึ่งจะไม่ได้รับการอัปเดต แม้ว่าจะอัปเกรดระบบปฏิบัติการแล้วก็ตาม |
ro.vendor.api_level |
YYYYMM | ระดับ API ของผู้ให้บริการที่อุปกรณ์โดยรวมต้องเป็นไปตามข้อกำหนด | อธิบายหลังจากตารางนี้ |
ro.board.api_frozen |
บูลีน | ระบบจะตั้งค่าพร็อพเพอร์ตี้นี้เป็น true หากระดับ API ของผู้ให้บริการที่ ro.board.api_level แสดงถึงได้รับการสรุปแล้ว |
หากไม่ได้ตั้งค่าพร็อพเพอร์ตี้นี้ ระบบจะใช้ false เป็นค่าเริ่มต้น |
ro.llndk.api_level |
YYYYMM | ระดับ API ของผู้ให้บริการในรูปแบบ YYYYMM ที่ LLNDK ปัจจุบันในพาร์ติชันระบบระบุ LLNDK สามารถใช้ร่วมกับอิมเมจระบบย้อนหลังได้ ดังนั้นอิมเมจผู้ให้บริการที่น้อยกว่าหรือเท่ากับระดับ API นี้สามารถแฟลชด้วยอิมเมจของระบบนี้ได้ | พร็อพเพอร์ตี้นี้กำหนดโดยพาร์ติชันระบบ |
พร็อพเพอร์ตี้ ro.vendor.api_level
มาจากวิธีใดวิธีหนึ่งต่อไปนี้
หากชิปเซ็ตมีคุณสมบัติสำหรับการหยุดทำงานของผู้ให้บริการ:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
หากชิปเซ็ตไม่ได้อยู่ภายใต้การหยุดให้บริการของผู้ให้บริการ ให้ทำดังนี้
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
เมธอด AVendorSupport_getVendorApiLevelOf()
จะกำหนดระดับ API ผู้ให้บริการที่เกี่ยวข้องจากระดับ SDK API ตัวอย่างเช่น AVendorSupport_getVendorApiLevelOf(35)
โดยที่ 35
คือระดับ SDK API ของ Android รุ่นหลักในปี 2024 จะแสดงผลเป็น 202404
ซึ่งเป็นวันที่โดยประมาณของ Android 14-QPR3 เมื่อตั้งค่าระดับ Vendor API ปัจจุบัน
กำหนดระดับ API ของผู้ให้บริการ (Android 13)
ระดับ API ของผู้ให้บริการจะเป็นไปตามระดับ SDK API สำหรับอินเทอร์เฟซ App-OS และจะอัปเดตปีละครั้งเมื่อแพลตฟอร์ม Android ใหม่เปิดตัวใน AOSP
Android 13 มีพร็อพเพอร์ตี้ของระบบต่อไปนี้ที่เกี่ยวข้องกับระดับ API ของผู้ให้บริการ (ro.vendor.api_level
)
พร็อพเพอร์ตี้ของระบบ | รูปแบบ | คำอธิบาย | การตั้งค่าเริ่มต้น |
---|---|---|---|
ro.board.first_api_level |
จำนวนเต็ม | ระดับ API ของผู้ให้บริการที่ซอฟต์แวร์ของชิปเซ็ตเปิดตัวครั้งแรก ข้อมูลนี้เป็นเพียงฟังก์ชันของชิปเซ็ตเท่านั้น และผู้จำหน่าย SoC หรือ OEM จะแก้ไขไม่ได้ พร็อพเพอร์ตี้นี้จะกำหนดไว้สำหรับชิปเซ็ตที่มีคุณสมบัติในการหยุดทำงานของผู้ให้บริการเท่านั้น | ค่าจะสร้างขึ้นโดยการตั้งค่า BOARD_SHIPPING_API_LEVEL ในไฟล์ device.mk |
ro.board.api_level |
จำนวนเต็ม | ระดับ API ของผู้ให้บริการที่ซอฟต์แวร์ของชิปเซ็ตรองรับ พร็อพเพอร์ตี้นี้กำหนดไว้สำหรับชิปเซ็ตที่มีสิทธิ์ได้รับการหยุดให้บริการของผู้ให้บริการเท่านั้น พร็อพเพอร์ตี้นี้ตั้งค่าไว้สำหรับชิปเซ็ตทั้งหมด | ในตอนแรก ระบบบิลด์จะตั้งค่าพร็อพเพอร์ตี้นี้เป็นค่าเดียวกับ ro.board.first_api_level แต่อัปเดตได้หากมีการอัปเกรดพาร์ติชันของผู้ให้บริการ |
ro.product.first_api_level |
จำนวนเต็ม | ระดับ API ของ SDK ที่อุปกรณ์เปิดใช้งานครั้งแรก | OEM จะเป็นผู้ตั้งค่าพร็อพเพอร์ตี้นี้และจะไม่อัปเดตอีกต่อไป แม้ว่าจะอัปเกรดระบบปฏิบัติการแล้วก็ตาม |
ro.vendor.api_level |
จำนวนเต็ม | ระดับ API ของผู้ให้บริการที่อุปกรณ์ทั้งหมดต้องปฏิบัติตาม | อธิบายไว้หลังตารางนี้ |
ro.vndk.version |
จำนวนเต็ม | เวอร์ชันของ VNDK ที่ใช้สร้างพาร์ติชันผู้ให้บริการ | พร็อพเพอร์ตี้นี้กำหนดโดยพาร์ติชันระบบ |
ro.vendor.build.version.sdk |
จำนวนเต็ม | ระดับ SDK API ของซอร์สทรีที่สร้างพาร์ติชันของผู้ให้บริการ | |
ro.vendor.build.version.release |
จำนวนเต็ม | เวอร์ชันแพลตฟอร์มของแผนผังต้นทางที่สร้างพาร์ติชันผู้ให้บริการ | |
ro.vendor.build.version.release_or_codename |
จำนวนเต็ม | ชื่อโค้ดของต้นไม้ซอร์สโค้ดที่สร้างพาร์ติชันของผู้ให้บริการ |
ระบบจะตั้งค่าพร็อพเพอร์ตี้ ro.vendor.api_level
เป็นค่าต่ำสุดของ ro.board.api_level
(หรือ ro.board.first_api_level
หากไม่ได้กำหนด ro.board.api_level
) และ ro.product.first_api_level
โดยอัตโนมัติ