ส่วนขยาย SDK ใช้ประโยชน์จากระบบโมดูล คอมโพเนนต์เพื่อเพิ่ม API SDK สาธารณะสำหรับ API บางระดับที่เปิดตัวไปก่อนหน้านี้ API เหล่านี้ ที่ส่งไปยังอุปกรณ์เมื่อผู้ใช้ปลายทางได้รับการอัปเดตโมดูลผ่าน Google Play ระบบ อัปเดต แอป นักพัฒนาซอฟต์แวร์สามารถใช้ API เหล่านี้ในแอปของตน ฟังก์ชันที่ก่อนหน้านี้ไม่มีให้ใน SDK สำหรับ เวอร์ชัน Android
การกำหนดเวอร์ชัน API
ตั้งแต่ Android 11 (API ระดับ 30) เป็นต้นไป อุปกรณ์ Android จะมีชุด SDK
ส่วนขยาย เมื่อมีการเพิ่ม API ใหม่ API เหล่านั้นจะรวมอยู่ในระดับ API แต่อาจ
รวมอยู่ในส่วนขยาย SDK ของเวอร์ชันที่เจาะจงได้ด้วย ตัวอย่างเช่น พารามิเตอร์
ACTION_PICK_IMAGES
เพิ่ม API สำหรับเครื่องมือเลือกรูปภาพไปยัง SDK สาธารณะใน Android 13 (API ระดับ 33) แล้ว
แต่ยังมีให้ใช้งานผ่านส่วนขยาย SDK ในส่วนขยาย R เวอร์ชัน 2 ด้วย
ชื่อส่วนขยาย SDK จะสอดคล้องกับจำนวนเต็มคงที่ ไม่ว่าจะเป็นค่าใด
ค่าคงที่จาก
Build.VERSION_CODES
หรือ 1
ที่กำหนดไว้ในคลาส SdkExtensions
(เช่น
SdkExtensions.AD_SERVICES
)
เลือกว่าจะใช้ส่วนขยาย SDK ใด
ก่อนที่คุณจะใช้ SDK ส่วนขยาย API ได้ คุณต้องพิจารณาก่อนว่า SDK ใด มี API ที่รองรับกรณีการใช้งานของแอป
หน้าอ้างอิง API สำหรับ API ส่วนขยาย SDK ระบุ SDK ที่เร็วที่สุด เวอร์ชันส่วนขยายที่แอปของคุณสามารถใช้เพื่อเข้าถึง API หากเอกสารประกอบ ระบุเวอร์ชันแพลตฟอร์ม Android ด้วย (อ้างอิงตามระดับ API) จากนั้น นอกจากนี้ API ยังใช้ได้กับอุปกรณ์ทั้งหมดที่ใช้ Android เวอร์ชันดังกล่าวหรือสูงกว่า
เช่น ACTION_PICK_IMAGES
พร้อมให้บริการแก่ผู้ใช้ทั่วไปใน SDK สาธารณะ
เริ่มตั้งแต่ Android 13 (API ระดับ 33) แต่พร้อมใช้งานบนอุปกรณ์
กลับไปเป็น Android 11 (API ระดับ 30) ตราบใดที่อุปกรณ์มี R
ส่วนขยายเวอร์ชัน 2:
หากต้องการใช้ API นี้ คุณต้องคอมไพล์กับ SDK ที่มีระดับ API เป็นอย่างต่ำ 33 หรือระดับส่วนขยายอย่างน้อย 2
หากต้องการใช้ SDK ส่วนขยาย ให้ทำตามขั้นตอนต่อไปนี้
- ค้นหาเวอร์ชันส่วนขยายขั้นต่ำที่คุณต้องการโดยตรวจสอบฟีเจอร์ และการอ้างอิง API สำหรับ API ที่คุณต้องการใช้
- หลังจากที่คุณระบุเวอร์ชันส่วนขยายที่จำเป็นสำหรับชุดฟีเจอร์แล้ว ให้เปิด SDK Manager ใน Android Studio
- เลือกรายการ Android SDK Platform ที่มีส่วนขยายที่เกี่ยวข้อง เวอร์ชัน (หรือเวอร์ชันสูงกว่าเนื่องจาก API เป็นส่วนเสริม) ดังตัวอย่างต่อไปนี้ แพลตฟอร์ม Android SDK 33, ส่วนขยายระดับ 4
ประกาศค่าเหล่านี้ใน
build.gradle.kts
หรือbuild.gradle
ของแอป ไฟล์:ดึงดูด
android { compileSdk 33 compileSdkExtension 4 ... }
Kotlin
android { compileSdk = 33 compileSdkExtension = 4 ... }
ตรวจสอบว่าส่วนขยาย SDK พร้อมให้บริการหรือไม่
แอปของคุณสามารถตรวจสอบเวอร์ชันส่วนขยาย SDK ที่พร้อมใช้งานขณะรันไทม์ และ ในขณะที่พัฒนา คุณสามารถค้นหาเวอร์ชันส่วนขยายโดยใช้ Android Debug คำสั่ง Bridge (adb) ตามที่อธิบายไว้ในส่วนต่อไปนี้
ตรวจสอบขณะรันไทม์
แอปสามารถตรวจสอบขณะรันไทม์ว่าส่วนขยาย SDK พร้อมใช้งานสำหรับ
เวอร์ชันแพลตฟอร์มโดยใช้
getExtensionVersion()
ตัวอย่างเช่น โค้ดต่อไปนี้จะตรวจสอบว่าส่วนขยายเวอร์ชัน 2 หรือไม่
ขึ้นไปสำหรับส่วนขยาย SDK ของ Android 11 (API ระดับ 30) ที่พร้อมใช้งาน ดังนี้
Kotlin
fun isPhotoPickerAvailable(): Boolean { return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2 // Safely use extension APIs that are available with Android 11 (API level 30) Extensions Version 2, such as Photo Picker. }
Java
public static final boolean isPhotoPickerAvailable() { return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2; }
ซึ่งคล้ายกับการตรวจสอบตาม
Build.VERSION.SDK_INT
:
Kotlin
fun isPhotoPickerAvailable(): Boolean { return Build.VERSION.SDK_INT >= 33 }
Java
public static final boolean isPhotoPickerAvailable() { return Build.VERSION.SDK_INT >= 33; }
การตรวจสอบ SDK_INT
นี้ยังคงปลอดภัยและถูกต้อง แต่ isPhotoPickerAvailable
จะ
แสดงผล false ในอุปกรณ์บางเครื่อง แม้ว่าจะมี API ส่วนขยายให้ใช้งานก็ตาม เพื่อ
แสดงว่าการตรวจสอบ SDK_INT
จึงไม่เหมาะสม และการตรวจสอบเวอร์ชันของส่วนขยาย
วิธีตรวจสอบความพร้อมใช้งาน API ที่ดียิ่งขึ้น อุปกรณ์ทั้งหมดที่มี SDK_INT
ขึ้นไป
มากกว่าหรือเท่ากับ 33
(Android 13 ขึ้นไป) มี API ของเครื่องมือเลือกรูปภาพใน
SDK สาธารณะ แต่มีอุปกรณ์ที่มี SDK_INT
ต่ำกว่า 33 (เช่น Android)
11, 12 และ 12L) ที่เข้าถึง API ได้ด้วยหากมีส่วนขยาย R
เวอร์ชันของอย่างน้อย 2
ในกรณีนี้ การใช้การตรวจสอบเวอร์ชันส่วนขยายจะช่วยให้แอปแสดง ฟังก์ชันเพิ่มเติมให้กับผู้ใช้จำนวนมากขึ้น ดูชื่อส่วนขยาย SDK และ ค่าคงที่สำหรับรายการค่าคงที่ที่คุณสามารถใช้เพื่อ ตรวจหาส่วนขยาย SDK บางรายการในอุปกรณ์
ส่วนขยายบริการโฆษณา
เอกสารอ้างอิง API AdServices
คล้ายกับชุดส่วนขยาย SDK ทั่วไป
บางครั้งระบุว่า API เป็นส่วนหนึ่งของ "ส่วนขยายโฆษณาบริการโฆษณา" เวอร์ชัน
ส่วนขยายบริการโฆษณาจะใช้ส่วนขยาย SDK ทั่วไป ซึ่งแตกต่างจากส่วนขยาย SDK ทั่วไป
SdkExtensions.AD_SERVICES
อย่างต่อเนื่องเพื่อระบุเวอร์ชันที่อยู่ในอุปกรณ์:
Kotlin
fun isAdServicesAvailable(): Boolean { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4 }
Java
public static final boolean isAdServicesAvailable() { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4; }
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฟีเจอร์ต่างๆ ในส่วนขยายบริการโฆษณาและวิธีรับ โปรดดูที่ส่วนขยายบริการโฆษณา เอกสารประกอบ
วิธียูทิลิตี
ในบางกรณี ส่วนขยาย SDK จะมีวิธียูทิลิตีของ Jetpack เพื่อตรวจสอบ ของ SDK ส่วนขยาย API กัน ตัวอย่างเช่น คุณสามารถใช้ Jetpack ฟังก์ชัน Library สำหรับตรวจสอบ Photo Picker ความพร้อมจำหน่ายสินค้า [availability] ซึ่งจะลบการตรวจสอบเวอร์ชันแบบมีเงื่อนไขออกไป
การสนับสนุนเครื่องมือ
ใน Android Studio Flamingo | 2022.2.1 ขึ้นไป เครื่องมือ Lint สามารถสแกนหา ปัญหาที่เกิดกับเวอร์ชันส่วนขยาย SDK ที่เป็นส่วนหนึ่งของการตรวจสอบ NewAPI นอกจากนี้ Android Studio สามารถสร้างการตรวจสอบเวอร์ชันที่ถูกต้องโดยอัตโนมัติสำหรับ API ที่ เปิดตัวโดยใช้ส่วนขยาย SDK
ชื่อและค่าของส่วนขยาย SDK
ตารางต่อไปนี้จะอธิบายว่าส่วนขยาย SDK ชุดต่างๆ ที่
ที่แสดงในเอกสารประกอบอ้างอิง API จะแมปกับค่าคงที่ที่แอปของคุณสามารถใช้เพื่อ
ตรวจสอบความพร้อมใช้งานของ API ขณะรันไทม์ ชุดส่วนขยาย SDK ทั่วไปสำหรับ
SDK สาธารณะแต่ละรายการแมปกับค่าของ
Build.VERSION_CODES
ชื่อส่วนขยาย SDK | ค่าคงที่ | อุปกรณ์ที่มีสิทธิ์ |
---|---|---|
ส่วนขยาย R | VERSION_CODES.R |
Android 11 (API ระดับ 30) ขึ้นไป |
ส่วนขยาย S | VERSION_CODES.S |
Android 12 (API ระดับ 31) ขึ้นไป |
ส่วนขยาย T | VERSION_CODES.TIRAMISU |
Android 13 (API ระดับ 33) ขึ้นไป |
ส่วนขยายบริการโฆษณา | SdkExtensions.AD_SERVICES |
Android 13 (API ระดับ 33) ขึ้นไป |
ตรวจสอบโดยใช้ adb
หากต้องการตรวจสอบว่าส่วนขยาย SDK ใดพร้อมใช้งานในอุปกรณ์ที่ใช้ adb ให้เรียกใช้ คำสั่งต่อไปนี้
adb shell getprop | grep build.version.extensions
หลังจากเรียกใช้คำสั่ง คุณจะเห็นเอาต์พุตที่มีลักษณะดังนี้
[build.version.extensions.r]: [3] # Android 11 (API level 30) and higher
[build.version.extensions.s]: [3] # Android 12 (API level 31) and higher
[build.version.extensions.t]: [3] # Android 13 (API level 33) and higher
แต่ละบรรทัดแสดงส่วนขยาย SDK ที่มีอยู่ในอุปกรณ์ พร้อมกับส่วนขยาย เวอร์ชันส่วนขยายที่เกี่ยวข้อง (ในกรณีนี้คือ 3)