תוספי SDK משתמשים במערכת מודולרית רכיבים כדי להוסיף ממשקי API ל-SDK הציבורי ברמות API מסוימות שהושקו בעבר. ממשקי ה-API האלה נשלחים למכשירים כשמשתמשי הקצה מקבלים עדכוני מודולים דרך Google Play מערכת עדכונים. אפליקציה מפתחים יכולים להשתמש בממשקי ה-API האלה באפליקציות שלהם כדי לספק שלא היו זמינות במקור ב-SDK גרסאות Android.
ניהול גרסאות API
החל מ-Android 11 (רמת API 30), מכשירי Android כוללים קבוצה של SDK
תוספים. כשמוסיפים ממשקי API חדשים, הם נכללים ברמת ה-API, אבל ייתכן
ייכללו גם הם בתוסף SDK של גרסה מסוימת. לדוגמה,
ACTION_PICK_IMAGES
ה-API של הכלי לבחירת תמונות נוסף ל-SDK הציבורי ב-Android 13 (רמת API 33),
אך היא זמינה גם דרך תוספי SDK החל מגרסה 2 של תוספי R.
שמות תוספים ל-SDK תואמים קבוע של מספר שלם –
קבוע מ-
Build.VERSION_CODES
, או אחד
מוגדר במחלקה SdkExtensions
(למשל
SdkExtensions.AD_SERVICES
).
איך לקבוע באילו תוספי SDK להשתמש
כדי להשתמש בממשקי API של תוספים ל-SDK, צריך תחילה לקבוע אילו ערכות 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 הזה, עליך לבצע הידור (compile) לערכת SDK ברמת API לפחות 33, או רמת תוסף לפחות 2.
כדי להשתמש ב-SDK של תוסף, יש לפעול לפי השלבים הבאים:
- כדי לבדוק מהי גרסת התוספים המינימלית הנדרשת, יש לבדוק את התכונה ומסמכי עזר של API עבור ממשקי ה-API שבהם רוצים להשתמש.
- אחרי שקובעים את גרסת התוסף הנדרשת לקבוצת התכונות שלכם, פותחים את SDK Manager ב-Android Studio.
- צריך לבחור את הרשומה של Android SDK Platform עם התוסף המתאים. (או גרסה חדשה יותר, כי ממשקי ה-API הם נוספים). מוצרים לדוגמה: Android SDK Platform 33, רמת תוסף 4.
צריך להצהיר על הערכים האלה ב
build.gradle.kts
או בbuild.gradle
של האפליקציה file:מגניב
android { compileSdk 33 compileSdkExtension 4 ... }
Kotlin
android { compileSdk = 33 compileSdkExtension = 4 ... }
איך בודקים אם תוספי SDK זמינים
האפליקציה יכולה לבדוק אילו גרסאות של תוסף SDK זמינות בזמן הריצה. במהלך הפיתוח, תוכלו לחפש את גרסאות התוסף באמצעות ניפוי באגים ב-Android. פקודות ברידג' (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 של Photo Picker
SDK ציבורי, אבל יש מכשירים עם SDK_INT
פחות מ-33 (כמו Android
11, 12 ו-12L) שיכולים גם לגשת לממשקי ה-API אם יש להם סיומת R
גרסאות של 2
לפחות.
במקרה כזה, שימוש בבדיקת גרסאות של תוספים יכול לעזור לשפר את ביצועי האפליקציה. פונקציונליות נוספת למשתמשים רבים יותר. מידע נוסף זמין בקטע שמות של תוספים ל-SDK ו קבועים לרשימה של כל הקבועים שאפשר להשתמש בהם לחפש תוספי SDK מסוימים במכשיר.
תוספים לשירותי מודעות
בדומה לקבוצה הכללית של תוספי SDK, ההפניה ל-API AdServices
מציין לפעמים ש-API הוא חלק מ'תוספים של שירותי מודעות' .
בניגוד לתוספי ה-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 לבדיקה של הזמינות של ממשקי ה-API של תוספי SDK. לדוגמה, אפשר להשתמש ב-Jetpack את הפונקציה של 'ספרייה' שצריך לבדוק כדי להשתמש ב-PhotoPhotoer availability [זמינות], שמפשט את בדיקות הגרסה המותנית.
תמיכה בכלים
ב-Android Studio Flamingo | מגרסה 2022.2.1 ואילך, הכלי לאיתור שגיאות בקוד יכול לבצע סריקה לאיתור בגרסאות של תוסף SDK כחלק מבדיקת NewAPI. In addition, מערכת Android Studio יכולה ליצור באופן אוטומטי את בדיקות הגרסה הנכונות של ממשקי API הושק באמצעות תוספי SDK.
![](https://developer.android.google.cn/static/images/guide/sdk-extensions/extensions-lint-check.png?authuser=7&hl=he)
שמות וקבועים של תוספים ל-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 במקרה זה).