ระดับ API ของผู้จัดจำหน่ายหมายถึงเวอร์ชันของอินเทอร์เฟซที่พาร์ติชันของผู้จัดจำหน่ายรองรับ อินเทอร์เฟซเป็นแบบ 2 ทาง โดยจะอธิบาย API ที่พาร์ติชันของผู้ให้บริการมีให้แก่พาร์ติชันของระบบ (Hardware Abstraction Layer หรืออินเทอร์เฟซ HAL) และ API ที่พาร์ติชันของผู้ให้บริการ ต้องการจากพาร์ติชันของระบบ (Low-Level Native Developers Kit หรือ อินเทอร์เฟซ LLNDK)
นอกจากนี้ ยังใช้ระดับ API ของผู้ให้บริการเพื่อกำหนดข้อกำหนดของซอฟต์แวร์ของผู้ให้บริการ (VSR) ซึ่งเป็นชุดข้อกำหนดด้านฟังก์ชันการทำงานและข้อกำหนดที่ไม่ใช่ด้านฟังก์ชันการทำงานที่ซอฟต์แวร์ในพาร์ติชันของผู้ให้บริการต้องเป็นไปตามนั้น
ส่วนที่เหลือของหน้านี้จะอธิบายวิธีใช้พร็อพเพอร์ตี้ของระบบ เพื่อกำหนดระดับ API ของผู้ให้บริการ โดยขึ้นอยู่กับเวอร์ชัน Android
การระงับการใช้งานของผู้ให้บริการ
Android อนุญาตให้ผู้ให้บริการหยุดการทำงานของพาร์ติชันผู้ให้บริการที่ VSR เวอร์ชันหนึ่งๆ ได้ ชุดฟีเจอร์ที่ Android คาดหวังจากพาร์ติชันของผู้ให้บริการจะกำหนดโดยระดับ API ของผู้ให้บริการที่เชื่อมโยงกับพาร์ติชันของผู้ให้บริการ ในขณะรันไทม์ ลักษณะการทำงานของซอฟต์แวร์ที่ทำงานในพาร์ติชันระบบจะปรับให้สอดคล้องกับระดับ 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.board.api_level |
ปปปปดด | ระดับ 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.product.first_api_level เราตั้งค่า ro.vendor.api_level เป็นค่า ro.board.api_level เมื่อ ro.board.api_level น้อยกว่าระดับ API ของผู้ให้บริการที่ ro.product.first_api_level เฉพาะในกรณีที่ชิปเซ็ต SoC มีคุณสมบัติสำหรับการหยุดการอัปเดตของผู้ให้บริการ |
อธิบายหลังจากตารางนี้ |
ro.board.api_frozen |
บูลีน | พร็อพเพอร์ตี้นี้จะตั้งค่าเป็น true หากระดับ API ของผู้ให้บริการที่ ro.board.api_level แสดงได้รับการสรุปแล้ว |
หากไม่ได้ตั้งค่าพร็อพเพอร์ตี้นี้ ค่าเริ่มต้นจะเป็น false |
ro.llndk.api_level |
YYYYMM | ระดับ API ของผู้ให้บริการในรูปแบบ YYYYMM ที่ LLNDK ปัจจุบันในพาร์ติชันระบบมีให้ LLNDK มีความเข้ากันได้แบบย้อนหลัง ดังนั้นจึงสามารถแฟลชอิมเมจของผู้ให้บริการที่มีระดับ API น้อยกว่าหรือเท่ากับระดับ 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 ของผู้ให้บริการที่เกี่ยวข้องจากระดับ API ของ SDK เช่น
AVendorSupport_getVendorApiLevelOf(35) โดยที่ 35 คือระดับ API ของ SDK ของ
การเปิดตัว Android เวอร์ชันหลักในปี 2024 จะแสดงผล 202404 ซึ่งเป็นวันที่โดยประมาณของ
Android 14 QPR3 เมื่อตั้งค่าระดับ API ของผู้ให้บริการปัจจุบัน
กำหนดระดับ API ของผู้ให้บริการ (Android 13)
ระดับ API ของผู้ให้บริการจะเป็นไปตามระดับ API ของ SDK ซึ่งมีไว้สำหรับอินเทอร์เฟซแอป-ระบบปฏิบัติการ และจะอัปเดตปีละครั้งเมื่อมีการเปิดตัวแพลตฟอร์ม Android ใหม่ใน AOSP
Android 13 มีพร็อพเพอร์ตี้ของระบบต่อไปนี้ที่เกี่ยวข้องกับระดับ API ของผู้ให้บริการ
| พร็อพเพอร์ตี้ของระบบ | รูปแบบ | คำอธิบาย | การตั้งค่าเริ่มต้น |
|---|---|---|---|
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 |
จำนวนเต็ม | ระดับ API ของ SDK ของโครงสร้างแหล่งที่มาที่สร้างพาร์ติชันของผู้ให้บริการ |