โมดูลส่วนขยาย SDK จะกำหนดระดับ SDK ส่วนขยายของอุปกรณ์และ จัดเตรียม API ให้แอปค้นหาระดับ SDK ส่วนขยาย โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าสามารถรับการอัปเดตฟังก์ชันการทำงานนอกรอบการเผยแพร่ Android ปกติได้
ส่วนขยาย SDK มีหน้าที่รับผิดชอบในเรื่องต่อไปนี้
- การกำหนดระดับ SDK ของส่วนขยายของอุปกรณ์
- จัดเตรียม API ให้แอปค้นหาระดับ SDK ของส่วนขยาย
- (เริ่มตั้งแต่ Android 12) การกำหนดค่าสำหรับตัวแปรสภาพแวดล้อม
BOOTCLASSPATH,DEX2OATBOOTCLASSPATHและSYSTEMSERVERCLASSPATH
รูปแบบโมดูล
โมดูลส่วนขยาย SDK (com.android.sdkext) อยู่ในรูปแบบ
APEX และพร้อมใช้งานสำหรับอุปกรณ์
ที่ใช้ Android 11 ขึ้นไป
รูปแบบแพ็กเกจ
โมดูลส่วนขยาย SDK (com.google.android.sdkext) อยู่ในรูปแบบ APEX และมีคอมโพเนนต์ต่อไปนี้
(เริ่มตั้งแต่ Android 12)
bin/derive_classpath: ไบนารีเนทีฟที่ทำงานในช่วงต้นของกระบวนการ การบูตอุปกรณ์ โดยจะอ่านไฟล์การกำหนดค่า classpath แต่ละไฟล์จากระบบและโมดูลอื่นๆ ผสานรวมไฟล์เหล่านั้น และกำหนดคำจำกัดความของCLASSPATHตัวแปรสภาพแวดล้อมbin/derive_sdk: ไบนารีเนทีฟที่ทํางานในช่วงต้นของกระบวนการบูตอุปกรณ์ และอ่านข้อมูลเมตาของโมดูลอื่นๆ เพื่อตั้งค่าพร็อพเพอร์ตี้ของระบบที่เกี่ยวข้องกับ Extension SDK (เช่นbuild.version.extensions.r)javalib/framework-sdkextension.jar: ไฟล์นี้อยู่ใน Bootclasspath ที่ แสดง API ให้แอปใช้เพื่อค้นหาระดับ SDK ของส่วนขยาย
กำหนดระดับ SDK ของส่วนขยาย
derive_sdk โปรแกรมจะอ่านข้อมูลเมตาที่จัดเก็บเป็นไฟล์ Protobuf แบบไบนารีในเส้นทางย่อย
etc/sdkinfo.binarypbภายในแต่ละโมดูล APEX โปรดดูรายละเอียดเกี่ยวกับโครงสร้าง protobuf
ในไฟล์
protobuf
อ่านระดับ SDK ของส่วนขยาย
โมดูลส่วนขยาย SDK จะแสดงคลาส
SdkExtensions
Java ในแพ็กเกจ android.os.ext ใช้เมธอด getExtensionVersion(int)
เพื่ออ่านเวอร์ชันของส่วนขยาย SDK (เช่น
getExtensionVersion(Build.VERSION_CODES.R))
สร้างเส้นทางคลาส
derive_classpath บริการจะอ่านและผสานไฟล์การกำหนดค่าแต่ละไฟล์ใน
/system/etc/classpaths/ และ /apex/*/etc/classpaths/ การกำหนดค่าแต่ละรายการจะจัดเก็บข้อความ protobuf จาก classpaths.proto
ในรูปแบบไบนารีของ Proto อัลกอริทึมการผสานที่แน่นอนซึ่งกำหนดลำดับ
ของรายการในเส้นทางคลาสอธิบายไว้ใน
derive_classpath.cpp
และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไป