הרחבות SDK

מודול הרחבות SDK מחליט על רמת ה-SDK של ההרחבה של המכשיר ומספק ממשקי API לאפליקציות לשאילתה על רמת ה-SDK של ההרחבה. מודול זה ניתן לעדכון, כלומר הוא יכול לקבל עדכונים לפונקציונליות מחוץ למחזור השחרור הרגיל של אנדרואיד.

SDK Extensions אחראי על:

  • החלטה על רמת ה-SDK של ההרחבה של המכשיר.
  • אספקת ממשקי API לאפליקציות לשאילתה ברמת ה-SDK של התוסף.
  • (החל מ-Android 12) קביעת הערכים עבור משתני הסביבה BOOTCLASSPATH , DEX2OATBOOTCLASSPATH ו- SYSTEMSERVERCLASSPATH .

פורמט מודול

מודול הרחבות SDK ( com.android.sdkext ) הוא בפורמט APEX וזמין עבור מכשירים עם אנדרואיד 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 Extensions חושף מחלקת java SdkExtensions בחבילת 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 ועשוי להשתנות עם הזמן.