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