המודול של תוספי 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
: A קוד בינארי מקורי שרץ בשלב מוקדם באתחול המכשיר תהליך האימות. הוא קורא קובצי תצורה של classpath בודדים מהמערכת, וגם יחידות אחרות, ממזגות אותם ומגדירות את ההגדרה שלCLASSPATH
במשתני סביבה.bin/derive_sdk
: קובץ בינארי מקורי שפועל בשלב מוקדם בתהליך ההפעלה של המכשיר וקורא את המטא-נתונים של מודולים אחרים כדי להגדיר מאפייני מערכת שקשורים SDK של תוסף (לדוגמה,build.version.extensions.r
).javalib/framework-sdkextension.jar
: הקובץ נמצא בנתיב האתחול ש חושף ממשקי API לאפליקציות כדי לשלוח שאילתות לגבי רמת ה-SDK של התוסף.
גזירה של רמת ה-SDK של התוסף
התוכנה derive_sdk
קוראת מטא-נתונים שמאוחסנים כקובצי Protobuf בינאריים בקובץ
נתיב משנה etc/sdkinfo.binarypb
בתוך כל מודול APEX. לפרטים על Protobuf
את המבנה שלו,
protobuf
חדש.
רמת ה-SDK של התוסף לקריאת
המודול 'תוספי SDK' חושף
SdkExtensions
מחלקה של Java בחבילה android.os.ext
. שימוש בgetExtensionVersion(int)
לקריאת הגרסה של תוסף SDK (לדוגמה,
getExtensionVersion(Build.VERSION_CODES.R)
).
גזירה של נתיבי כיתה
השירות derive_classpath
קורא וממזג קובצי תצורה נפרדים ב-
/system/etc/classpaths/
וגם /apex/*/etc/classpaths/
כל מערך הגדרות אישיות
הודעת Protobuf מאת classpaths.proto
בפורמט בינארי פרוטו. אלגוריתם המיזוג המדויק שקובע את הסדר
של רשומות ה-classpath
derive_classpath.cpp
ועשוי להשתנות עם הזמן.