โมดูลส่วนขยาย SDK จะเลือกระดับ SDK ส่วนขยายของอุปกรณ์และ มี API ให้แอปเพื่อค้นหาระดับ SDK ของส่วนขยาย โมดูลนี้ สามารถอัปเดตได้ หมายความว่าสามารถรับการอัปเดตฟังก์ชันการทำงานที่นอกเหนือจากฟังก์ชัน รอบการเผยแพร่ของ Android
ส่วนขยาย SDK มีหน้าที่ดังนี้
- เลือกระดับ 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
: A ไบนารีแบบเนทีฟที่ทำงานตั้งแต่แรกเมื่อเปิดอุปกรณ์ ขั้นตอนได้ โดยจะอ่านไฟล์การกำหนดค่า classpath แต่ละไฟล์จากระบบและ โมดูลอื่นๆ ผสานรวม และกำหนดคำจำกัดความของCLASSPATH
ตัวแปรสภาพแวดล้อมbin/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 จะแสดง
SdkExtensions
คลาส Java ในแพ็กเกจ android.os.ext
ใช้ getExtensionVersion(int)
ในการอ่านเวอร์ชันของส่วนขยาย SDK (เช่น
getExtensionVersion(Build.VERSION_CODES.R)
)
สร้างคลาสพาธ
บริการ derive_classpath
จะอ่านและรวมไฟล์การกำหนดค่าแต่ละรายการใน
/system/etc/classpaths/
และ /apex/*/etc/classpaths/
ที่จัดเก็บการกำหนดค่าแต่ละรายการ
ข้อความ Protobuf จาก classpaths.proto
ในรูปแบบไบนารี Pro อัลกอริทึมการผสานที่แน่นอนซึ่งกำหนดลำดับ
ของรายการ Classpath มีการอธิบายไว้ใน
derive_classpath.cpp
และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไป