מודול הליבה של מערכת הקבצים המצטברת (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.
להלן מפורטים השינויים הדרושים ליישום:
- הגדר את מכונת הפיתוח כדי לבנות את הליבה.
- כוון את הליבה המשותפת מהענף
common-android-mainline
.repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
repo sync
- ודא שהשינויים הבאים הדרושים עבור IncFS נמצאים בקופה בסניף:
- https://android-review.googlesource.com/c/kernel/common/+/1222869/
- https://android-review.googlesource.com/c/kernel/common/+/1222870
- https://android-review.googlesource.com/c/kernel/common/+/1222871
- https://android-review.googlesource.com/q/%2522ANDROID:+Incremental+fs:%2522+branch:android-mainline+status:merg
- הוסף
CONFIG_INCREMENTAL_FS=y
או עבור Android 11 בלבד ,CONFIG_INCREMENTAL_FS=m
בתחתית קובץdefconfig
. כדי לראות דוגמה, לחץ על אחד מהקישורים למטה: - בנה את הקרנל
- הטמע את הליבה בבניית התמונה של מכשיר אנדרואיד .
- עבור מכשיר ה-Android היעד שלך, הוסף את אחת משורות המאפיינים הבאות של מערכת ספציפיות לספק לקובץ
device.mk
שלך ( אופציונלי במכשירים שהושקו עם Android 12 ומעלה ): -
PRODUCT_PROPERTY_OVERRIDES += \
-
ro.incremental.enable=yes
-
PRODUCT_PROPERTY_OVERRIDES += \
-
ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
- עיין בקובצי
device.mk
לדוגמה עבור אמולטור אנדרואיד ו- Pixel 4 . - עבור אנדרואיד 11 בלבד : אם אתה משתמש
CONFIG_INCREMENTAL_FS=m
, הוסף את כללי SE Linux . -
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;
- קובץ
file.te
- לדוגמא ראה קובץfile.te
זה.) - מנהל התקן מצטבר של מערכת קבצים
-
type vendor_incremental_module, vendor_file_type, file_type;
-
file_contents
file - לדוגמא, ראה קובץfile_contents
זה. -
# Incremental file system driver
-
/vendor/lib/modules/incrementalfs\.ko
-
u:object_r:vendor_incremental_module:s0
כאשר אתה משתמש CONFIG_INCREMENTAL_FS=y
, הוסף את הקובץ עם אחד מאלה:
כאשר אתה משתמש CONFIG_INCREMENTAL_FS=m
(עבור Android 11 בלבד ), הוסף את הקובץ עם אחד מאלה:
צור והוסף קובץ vold.te
למכשיר שלך /system/sepolicy/vendor
עם התוכן הבא:
אפשר לו לטעון את מנהל ההתקן המצטבר של מערכת הקבצים:
הוסף את כללי SE Linux הבאים לקובץ file.te
הקיים שנמצא בתיקייה /system/sepolicy/vendor
שלך:
הוסף את כללי SE Linux הבאים לקובץ file_contents
הקיים שנמצא בתיקיית /system/sepolicy/vendor
שלך:
שדרוג מנהל התקן ליבה
התקנים המשדרגים לאנדרואיד 12 עשויים לכלול גרסה ישנה יותר של מנהל ההתקן של IncFS. עבור מכשירים אלה, AOSP ממליצה לעדכן את מנהל ההתקן של IncFS לגרסה הנוכחית (במקרה זה v2) מהסיבות הבאות:
- הגרסה שפורסמה עם אנדרואיד 11 היא היישום הראשוני של IncFS, המיועד רק לתמיכה בהתקנת ADB.
- אנדרואיד 12 משתמש במנהל ההתקן של IncFS עבור התקנות סטרימינג של משחקי Play, מה שדורש את התכונות והאופטימיזציות החדשות של IncFS v2 לחוויית משתמש טובה יותר.
- V1 תומך בהזרמת משחקים, אך עושה זאת עם קנסות ביצועים ושימוש גבוה יותר בסוללה, במעבד וב-RAM מאשר ב-v2.
- V2 מספק UX משופר לסטרימינג, עם אנימציות התקדמות חלקות, דיווח מדויק על שימוש בשטח דיסק ומניעת הפרעות של אפליקציות צד שלישי.
כדי לשדרג את מנהל ההתקן של IncFS בקרנל שלך, החל את התיקונים הבאים עבור קרנל 4.14 או ליבה 4.19:
- תיקון Kernel 4.14
- תיקון Kernel 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
- הגדר סביבת פיתוח.
- השלם את משימות היישום המתוארות בסעיף היישום.
- הפעל את הבדיקות הידניות הבאות:
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

אתר את הבדיקות הללו
- /android/kernel/common/tools/testing/selftests/filesystems/incfs/
- /android/system/incremental_delivery/incfs/tests/incfs_test.cpp
- /android/cts/tests/tests/content/src/android/content/pm/cts/PackageManagerShellCommandIncrementalTest.java