המודול של התוספים ל-SDK קובע את רמת ה-SDK של התוסף במכשיר ומספק ממשקי API לאפליקציות כדי לשלוח שאילתות לגבי רמת ה-SDK של התוסף. אפשר לעדכן את המודול הזה, כלומר הוא יכול לקבל עדכונים לפונקציונליות מחוץ למחזור הגרסאות הרגיל של Android.
התוספים ל-SDK אחראים על:
- קביעת רמת ה-SDK של התוסף במכשיר.
- מתן ממשקי API לאפליקציות כדי לשלוח שאילתות לגבי רמת ה-SDK של התוסף.
- (החל מ-Android 12) קביעת הערכים של משתני הסביבה
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
ו-SYSTEMSERVERCLASSPATH
.
פורמט המודול
המודול של התוספים ל-SDK (com.android.sdkext
) נמצא בפורמט APEX וניתן להתקנה במכשירים עם Android מגרסה 11 ואילך.
פורמט החבילה
המודול של התוספים ל-SDK (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 חושף את הכיתה SdkExtensions
ב-Java בחבילה android.os.ext
. משתמשים ב-method 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
, והוא עשוי להשתנות עם הזמן.