ระดับ API ของผู้ให้บริการ หมายถึงเวอร์ชันของอินเทอร์เฟซที่พาร์ติชันของผู้ให้บริการรองรับ อินเทอร์เฟซนี้เป็นแบบสองทิศทาง โดยจะอธิบาย API ที่พาร์ติชันของผู้ให้บริการมีให้แก่พาร์ติชันของระบบ (ฮาร์ดแวร์แอบสแทร็กชันเลเยอร์หรืออินเทอร์เฟซ HAL) รวมถึง API ที่พาร์ติชันของผู้ให้บริการต้องการจากพาร์ติชันของระบบ (ชุดเครื่องมือสำหรับนักพัฒนาแอปแบบเนทีฟระดับต่ำหรืออินเทอร์เฟซ 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 |
YYYYMM | ระดับ API ของผู้ให้บริการที่ซอฟต์แวร์ของชิปเซ็ตรองรับ พร็อพเพอร์ตี้นี้ตั้งค่าไว้สำหรับชิปเซ็ตทั้งหมด | ระบบบิลด์จะตั้งค่านี้โดยอัตโนมัติ |
ro.board.first_api_level |
YYYYMM | ระดับ 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 ของซอร์สทรีที่ใช้บิลด์พาร์ติชันของผู้ให้บริการ |