تتيح وحدة نواة نظام الملفات التزايدي (IncFS) التي تم طرحها في Android 11 لنظام التشغيل Android تلقّي حِزم APK التي يتم بثّها عبر Android Debug Bridge (ADB).
تُنشئ وحدة النواة المستقلة هذه نظام ملفات افتراضيًا جديدًا يرتكز على نظام ملفات Android الحالي. ويكمّل ذلك التغييرات في إطار العمل وحزمة SDK لتمكين مطوّري التطبيقات والألعاب من نشر حِزم APK كبيرة من خلال ADB على جهاز يعمل بنظام التشغيل Android 11 أو إصدار أحدث.
التنفيذ
لتنفيذ IncFS، يجب على الشركات المصنّعة للمعدات الأصلية ومصنّعي أنظمة SoC إضافة برنامج تشغيل جديد للنواة إلى إصدارات أجهزة Android.
بالنسبة إلى Android 11 فقط، إذا تم إنشاء برنامج تشغيل النواة كوحدة، يتم تحميله عند الطلب. إذا لم يتم تثبيت أي تطبيقات من خلال عملية تثبيت تزايدي عبر ADB، لن يحمّل الجهاز برنامج تشغيل النواة.
بخلاف ذلك، يتم تحميل برنامج التشغيل دائمًا عند إنشائه كجزء من صورة النواة. هذا التنفيذ صالح لنظام التشغيل Android 12 والإصدارات الأحدث، ويمكن استخدامه مع Android 11. للحصول على معلومات حول ترقية برنامج تشغيل النواة إلى Android 12، يُرجى الاطّلاع على ترقية برنامج تشغيل النواة.
يُعدّ برنامج تشغيل النواة جزءًا من نظام أكبر يتيح تثبيت حِزم APK التي يتم بثّها. ليس على الشركات المصنّعة للمعدات الأصلية والمورّدين استخدام رمز IncFS نفسه المقدَّم في عمليات التنفيذ النموذجية. ومع ذلك، لضمان تجربة متّسقة على جميع الأجهزة، يجب التأكّد من أنّ تنفيذ واجهة برمجة التطبيقات يتضمّن نظام ملفات يتضمّن وظيفة قراءة الملفات ووظيفة القراءة والكتابة في الدليل كما هو محدّد في مستند واجهة مساحة المستخدم لنظام الملفات التزايدي.
بالإضافة إلى ذلك، يجب أن تتضمّن عمليات التنفيذ خيارات التحميل والملفات الخاصة التي تتطابق وظيفيًا مع عملية التنفيذ النموذجية لنظام الملفات التزايدي.
في ما يلي قائمة بالتغييرات اللازمة للتنفيذ:
- إعداد جهاز التطوير لإنشاء النواة.
- استهداف النواة الشائعة من فرع
common-android-mainlinerepo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainlinerepo sync - التأكّد من أنّ التغييرات التالية اللازمة لنظام الملفات التزايدي موجودة في الـ فرع الذي تم سحبه:
- 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
- بالنسبة إلى جهاز Android المستهدَف، ألحِق أحد أسطر خصائص النظام الخاصة بالمورّد
بملف
device.mk(اختياري في الأجهزة التي تم طرحها باستخدام Android 12 والإصدارات الأحدث): PRODUCT_PROPERTY_OVERRIDES += \ro.incremental.enable=yesPRODUCT_PROPERTY_OVERRIDES += \ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko- يمكنك الاطّلاع على ملفات
device.mkالنموذجية لمحاكي Android و Pixel 4. - لنظام التشغيل Android 11 فقط: إذا كنت تستخدم
CONFIG_INCREMENTAL_FS=m، أضِف قواعد SE Linux. vold.teallow 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_contentsهذا. # Incremental file system driver/vendor/lib/modules/incrementalfs\.kou: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:
ترقية برنامج تشغيل النواة
قد تتضمّن الأجهزة التي تتم ترقيتها إلى Android 12 إصدارًا أقدم من برنامج تشغيل نظام الملفات التزايدي. بالنسبة إلى هذه الأجهزة، تنصح AOSP بترقية برنامج تشغيل نظام الملفات التزايدي إلى الإصدار الحالي (الإصدار 2 في هذه الحالة) للأسباب التالية:
- الإصدار الذي تم إصداره مع Android 11 هو عملية التنفيذ الأولية لنظام الملفات التزايدي، وهو مخصّص فقط لدعم التثبيت عبر ADB.
- يستخدم Android 12 برنامج تشغيل نظام الملفات التزايدي لعمليات التثبيت التي يتم بثّها لألعاب Play، ما يتطلّب الميزات الجديدة والتحسينات في الإصدار 2 من نظام الملفات التزايدي لتحسين تجربة المستخدم.
- يتيح الإصدار 1 بث الألعاب، ولكن مع انخفاض مستوى الأداء وزيادة استهلاك البطارية ووحدة المعالجة المركزية وذاكرة الوصول العشوائي مقارنةً بالإصدار 2.
- يوفّر الإصدار 2 تجربة مستخدم محسّنة للبث، مع رسوم متحركة سلسة للتقدّم، تقارير دقيقة عن استخدام مساحة القرص ومنع تداخل بث التطبيقات الخارجية.
لترقية برنامج تشغيل نظام الملفات التزايدي في النواة، طبِّق التصحيحات التالية لـ إما للنواة 4.14 أو النواة 4.19:
- تصحيح النواة 4.14
- تصحيح النواة 4.19
بالنسبة إلى جميع إصدارات النواة المخصّصة الأخرى، يُرجى نقل إحدى مجموعات التصحيحات. لا تؤثر هذه التصحيحات إلا في دليل fs/incfs ويتم تطبيقها بشكل سليم على رمز الإصدار 1 الحالي.
- إصلاح النواة 4.14 لبرنامج تشغيل الإصدار 1
- إصلاح النواة 4.19 لبرنامج تشغيل الإصدار 1
- إصلاح النواة 5.4 لبرنامج تشغيل الإصدار 1
واصِل استخدام برنامج تشغيل نظام الملفات التزايدي بالطريقة نفسها كما في Android 11 الأصلي الذي تمت ترقيته الآن ، إما كجزء مضمّن من صورة النواة أو كوحدة منفصلة. لا تغيِّر لوحة النظام أو إعدادات خصائص النظام.
تحصل الأجهزة الجديدة التي تستخدم صورة نواة GKI على أحدث إصدار (الإصدار 2) من برنامج تشغيل نظام الملفات التزايدي تلقائيًا، ويتم إعداده كجزء من صورة النواة. لا يتطلّب ذلك خطوات إضافية.
تم إيقاف إعداد الوحدة القابلة للتحميل نهائيًا في Android 12، ولا يتوافق مع الأجهزة الجديدة. يُسمح به فقط للترقيات أو لتجميد صورة المورّد عندما تكون النواة الأصلية قد تم إنشاؤها كوحدة.
عمليات التنفيذ المرجعية
يمكن اعتبار عملية التنفيذ هذه إما كجزء من صورة النواة أو (for Android 11 only) كوحدة قابلة للتحميل.
الوحدة القابلة للتحميل (جهاز Pixel 4)- إضافة الوحدات النمطية للنواة المُنشأة مسبقًا
- إضافة وتفعيل تغيير خصائص نظام الوحدة النمطية للنواة على الجهاز
- تعديل قواعد SE Linux
التحقق من صحة الإجراءات واختبارها
تحقَّق من صحة عملية التنفيذ باستخدام اختبارات الوحدات الوظيفية واختبار التوافق (CTS) واختبار التوافق من Google (GTS).
مجموعة أدوات اختبار التوافق (CTS)
استخدِم
CtsIncrementalInstallHostTestCases.
اختبار التوافق من Google (GTS)
atest GtsIncrementalInstallTestCases:
/gts-tests/tests/packageinstaller/incremental/src/com/google/android/packageinstaller/incremental/gts/IncrementalInstallerTest.javaاختبار نظام الملفات التزايدي
- إعداد بيئة تطوير
- إكمال مهام التنفيذ الموضّحة في قسم التنفيذ
- إجراء الاختبارات اليدوية التالية:
mmma system/incremental_delivery/incfs/tests
atest libincfs-test
atest IncrementalServiceTest
atest PackageManagerShellCommandTest
PackageManagerShellCommandIncrementalTest
اختبار نظام الملفات التزايدي باستخدام حزمة SDK لنظام التشغيل Android (ADB وapksigner)
- إعداد بيئة تطوير
- إكمال مهام التنفيذ الموضّحة في قسم التنفيذ
- تثبيت الإصدار على جهاز فعلي أو محاكي مستهدَف
- إنشاء حزمة 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