ส่วนขยาย SDK

โมดูล 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 แต่ละไฟล์จากระบบและโมดูลอื่นๆ ผสานไฟล์เหล่านั้น และกำหนดคำจำกัดความของตัวแปรสภาพแวดล้อม 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 จะแสดงคลาส 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 และอาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไป