מערכת קבצים מצטברת

מודול הליבה של מערכת הקבצים המצטברת (IncFS) שהוצג באנדרואיד 11 מאפשר למערכת ההפעלה אנדרואיד לקבל חבילות APK זרומות דרך גשר אנדרואיד באגים (ADB).

מודול הליבה העצמאי הזה יוצר מערכת קבצים וירטואלית חדשה שיושבת על מערכת הקבצים הקיימת של אנדרואיד. זה משלים שינויים במסגרת וב-SDK כדי לאפשר למפתחי אפליקציות ומשחקים לפרוס חבילות APK גדולות דרך ה-ADB למכשיר הפועל על אנדרואיד 11 ומעלה.

שינוי הליבה מאפשר פורמט חדש של APK Signature Scheme v4 ותומך בשינויי מסגרת אנדרואיד במנהל החבילות של Android, שירותי מערכת חדשים ושינויים ב-ADB.

יישום

כדי ליישם את IncFS, יצרני OEM ויצרני SoC חייבים להוסיף מנהל התקן ליבה חדש לבניית מכשירי האנדרואיד שלהם.

עבור אנדרואיד 11 בלבד , אם מנהל ההתקן של הליבה בנוי כמודול הוא נטען לפי דרישה. אם אין אפליקציות מותקנות באמצעות התקנה מצטברת של ADB, ההתקן לא טוען את מנהל ההתקן של הליבה.

אחרת, כאשר הוא נבנה כחלק מתמונת הקרנל, מנהל ההתקן תמיד נטען. יישום זה תקף עבור Android 12 ומעלה, וניתן להשתמש בו עם Android 11 . למידע על שדרוג מנהל ההתקן של הליבה ל-Android 12, ראה שדרוג מנהל התקן ליבה .

מנהל ההתקן של הליבה הוא חלק ממערכת גדולה יותר כדי לאפשר התקנות APK בזרימה. יצרני OEM וספקים אינם צריכים להשתמש בקוד IncFS המדויק שסופק בהטמעות לדוגמה. עם זאת, כדי להבטיח חוויה עקבית בין המכשירים, עליך לוודא שלמימוש ה-API יש מערכת קבצים עם פונקציונליות של קריאת קבצים ופונקציונליות של קריאה-כתיבה של ספריות כפי שהוגדרו בממשק Userspace עבור תיעוד FS אינקרמנטלי .

בנוסף, להטמעות חייבות להיות אפשרויות הרכבה וקבצים מיוחדים התואמים פונקציונלית למימוש לדוגמה של IncFS.

להלן מפורטים השינויים הדרושים ליישום:

  1. הגדר את מכונת הפיתוח כדי לבנות את הליבה.
  2. כוון את הליבה המשותפת מהענף common-android-mainline .
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    repo sync
  3. ודא שהשינויים הבאים הדרושים עבור IncFS נמצאים בקופה בסניף:
  4. הוסף CONFIG_INCREMENTAL_FS=y או עבור Android 11 בלבד , CONFIG_INCREMENTAL_FS=m בתחתית קובץ defconfig . כדי לראות דוגמה, לחץ על אחד מהקישורים למטה:
  5. בנה את הקרנל
  6. הטמע את הליבה בבניית התמונה של מכשיר אנדרואיד .
  7. עבור מכשיר ה-Android היעד שלך, הוסף את אחת משורות המאפיינים הבאות של מערכת ספציפיות לספק לקובץ device.mk שלך ( אופציונלי ב-Android 12 ומעלה ):
  8. כאשר אתה משתמש ב- CONFIG_INCREMENTAL_FS=y , הוסף את הקובץ עם אחד מאלה:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=yes

    כאשר אתה משתמש ב- CONFIG_INCREMENTAL_FS=m (עבור Android 11 בלבד ), הוסף את הקובץ עם אחד מאלה:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
  9. עיין בקובצי device.mk לדוגמה עבור אמולטור אנדרואיד ו- Pixel 4 .
  10. עבור אנדרואיד 11 בלבד : אם אתה משתמש ב- CONFIG_INCREMENTAL_FS=m , הוסף את כללי SE Linux .
  11. צור והוסף קובץ vold.te למכשיר שלך /system/sepolicy/vendor עם התוכן הבא:

    • vold.te

    אפשר לו לטעון את מנהל ההתקן המצטבר של מערכת הקבצים:

    • allow vold self:capability sys_module;
    • allow vold vendor_incremental_module:file r_file_perms;
    • allow vold vendor_incremental_module:system module_load;

    הוסף את כללי SE Linux הבאים לקובץ file.te הקיים שנמצא בתיקייה /system/sepolicy/vendor שלך:

    • קובץ file.te - לדוגמא ראה קובץ file.te זה.)
    • מנהל התקן מצטבר של מערכת קבצים
    • type vendor_incremental_module, vendor_file_type, file_type;

    הוסף את כללי SE Linux הבאים לקובץ file_contents הקיים שנמצא בתיקיית /system/sepolicy/vendor שלך:

    • file_contents file - לדוגמא, ראה קובץ file_contents זה.
    • # Incremental file system driver
    • /vendor/lib/modules/incrementalfs\.ko
    • u:object_r:vendor_incremental_module:s0

שדרוג מנהל התקן ליבה

התקנים המשדרגים לאנדרואיד 12 עשויים לכלול גרסה ישנה יותר של מנהל ההתקן של IncFS. עבור מכשירים אלה, AOSP ממליצה לעדכן את מנהל ההתקן של IncFS לגרסה הנוכחית (במקרה זה v2) מהסיבות הבאות:

  • הגרסה שפורסמה עם אנדרואיד 11 היא היישום הראשוני של IncFS, המיועד רק לתמיכה בהתקנת ADB.
  • אנדרואיד 12 משתמש במנהל ההתקן של IncFS עבור התקנות סטרימינג של משחקי Play, מה שדורש את התכונות והאופטימיזציות החדשות של IncFS v2 לחוויית משתמש טובה יותר.
  • V1 תומך בהזרמת משחקים, אך עושה זאת עם קנסות ביצועים ושימוש גבוה יותר בסוללה, במעבד וב-RAM מאשר ב-v2.
  • V2 מספק UX משופר לסטרימינג, עם אנימציות התקדמות חלקות, דיווח מדויק על שימוש בשטח דיסק ומניעת הפרעות של אפליקציות צד שלישי.

כדי לשדרג את מנהל ההתקן של IncFS בקרנל שלך, החל את התיקונים הבאים עבור קרנל 4.14 או ליבה 4.19:

עבור כל שאר גרסאות הליבה המותאמות אישית אנא העבר את אחת מערכי התיקון. הם משפיעים רק על ספריית fs/incfs וחלים בצורה נקייה על קוד v1 הקיים.

המשך להשתמש במנהל ההתקן של IncFS באותו אופן כמו עבור Android 11 המקורי אך המשודרג כעת, כחלק מובנה מתמונת הליבה או כמודול נפרד. אל תשנה את תצורת לוח המערכת או מאפייני המערכת.

מכשירים חדשים המשתמשים בתמונת ליבה של GKI מקבלים את מנהל ההתקן העדכני ביותר (v2) IncFS באופן אוטומטי, המוגדר כחלק מתמונת הקרנל. זה לא מצריך שלבים נוספים.

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

יישומי התייחסות

יישום זה יכול להיחשב כחלק מתמונת ליבה, או ( עבור אנדרואיד 11 בלבד ) כמודול הניתן לטעינה.

מודול ניתן לטעינה (מכשיר Pixel 4) אמולטור אנדרואיד (כחלק מתמונת הליבה)

אימות ובדיקה

אמת את היישום באמצעות בדיקות יחידת תכונות, CTS ו-GTS.

CTS

השתמש CtsIncrementalInstallHostTestCases .

GTS

atest GtsIncrementalInstallTestCases :

/gts-tests/tests/packageinstaller/incremental/src/com/google/android/packageinstaller/incremental/gts/IncrementalInstallerTest.java

בדוק את IncFS

  1. הגדר סביבת פיתוח.
  2. השלם את משימות היישום המתוארות בסעיף היישום.
  3. הפעל את הבדיקות הידניות הבאות:
    mmma system/incremental_delivery/incfs/tests
    atest libincfs-test
    atest IncrementalServiceTest
    atest PackageManagerShellCommandTest
    PackageManagerShellCommandIncrementalTest

כיצד לבדוק IncFS עם Android SDK (ADB ו-apksigner)

  • הגדר סביבת פיתוח.
  • השלם את משימות היישום המתוארות בסעיף היישום.
  • הבזק את ה-build על מכשיר פיזי או אמולטור יעד.
  • צור או השג APK קיים.
  • צור מפתח חתימת באגים .
  • חתום על ה-APK עם פורמט חתימת v4 מתיקיית build-tools .
    ./apksigner sign --ks debug.keystore game.apk
  • התקן את ה-APK במכשיר מתיקיית platform-tools .
    ./adb install game.apk
דוגמה להתקנה
איור 1 : דוגמה להתקנה

אתר את הבדיקות הללו