ระดับ API ของผู้ให้บริการ

ระดับ API ของผู้จัดจำหน่ายหมายถึงเวอร์ชันของอินเทอร์เฟซที่พาร์ติชันของผู้จัดจำหน่ายรองรับ อินเทอร์เฟซนี้เป็นแบบ 2 ทาง โดยจะอธิบาย API ที่พาร์ติชันของผู้ให้บริการมีให้แก่พาร์ติชันของระบบ (เลเยอร์การแยกฮาร์ดแวร์หรืออินเทอร์เฟซ HAL) และ API ที่พาร์ติชันของผู้ให้บริการ ต้องการจากพาร์ติชันของระบบ (ชุดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์แบบเนทีฟระดับต่ำหรือ อินเทอร์เฟซ LLNDK)

นอกจากนี้ ยังใช้ระดับ API ของผู้ให้บริการเพื่อกำหนดข้อกำหนดของซอฟต์แวร์ของผู้ให้บริการ (Vendor Software Requirements หรือ VSR) ซึ่งเป็นชุดข้อกำหนดด้านฟังก์ชันการทำงานและข้อกำหนดที่ไม่ใช่ฟังก์ชันการทำงานที่ซอฟต์แวร์ในพาร์ติชันของผู้ให้บริการต้องเป็นไปตามนั้น

ส่วนที่เหลือของหน้านี้จะอธิบายวิธีใช้พร็อพเพอร์ตี้ของระบบ เพื่อกำหนดระดับ Vendor 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.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 ปปปปดด ระดับ 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 ปปปปดด ระดับ 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 ซึ่งมีไว้สำหรับอินเทอร์เฟซแอป-OS และจะได้รับการอัปเดตปีละครั้งเมื่อแพลตฟอร์ม 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 ของโครงสร้างแหล่งที่มาที่สร้างพาร์ติชันของผู้ให้บริการ