وحدة نواة نظام الملفات التزايدية (IncFS) التي تم تقديمها في Android 11 يعمل على تمكين نظام التشغيل Android من استلام ملفات APK التي يتم بثها عبر Android Debug Bridge (ADB).
تعمل وحدة النواة المستقلة هذه على إنشاء نظام ملفات افتراضي جديد ينظم بالإضافة إلى نظام ملفات Android الحالي. يكمل هذا التغييرات في وحزمة تطوير البرامج (SDK) لتمكين مطوّري التطبيقات والألعاب من نشر حِزم APK كبيرة من خلال ADB إلى جهاز يعمل بنظام التشغيل Android 11 أو إصدار أحدث.
يمكّن تغيير النواة نهجًا جديدًا التنسيق 4 لمخطّط توقيع حِزم APK ويتوافق مع تغييرات إطار عمل Android في "مدير حزم Android"، وخدمات النظام الجديدة والتغييرات في ADB.
التنفيذ
لتنفيذ تقنية IncFS، يجب أن يضيف المصنّعون الأصليون والشركة المصنّعة للمنظومة على الرقاقة نواة جديدة السائق إلى إصدارات أجهزة Android الخاصة بهم.
بالنسبة إلى نظام التشغيل Android 11 فقط، إذا كان برنامج تشغيل النواة كوحدة يتم تحميلها عند الطلب. في حال حذف لا توجد أي تطبيقات مثبَّتة من خلال تثبيت تزايدي عبر ADB، الجهاز لا يقوم بتحميل برنامج تشغيل النواة.
أو عندما يتم إنشاؤها كجزء من النواة ، يتم تحميل برنامج التشغيل دائمًا. طريقة التنفيذ هذه صالحة الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث ويمكن استخدامه مع الإصدار 11 من نظام Android. بالنسبة معلومات حول ترقية برنامج تشغيل kernel إلى Android 12، يُرجى الاطّلاع على ترقية برنامج تشغيل النواة:
برنامج تشغيل النواة هو جزء من نظام أكبر لتفعيل ملفات APK التي يتم بثها من عمليات التثبيت. لا يحتاج المصنّعون الأصليون والمورِّدون إلى استخدام رمز IncFS المقدَّم بالضبط. في نموذج عمليات التنفيذ. ومع ذلك، لضمان تجربة متسقة عبر الأجهزة، يجب عليك التأكد من وجود نظام ملفات في تنفيذ واجهة برمجة التطبيقات يحتوي على وظيفة قراءة الملفات ووظيفة قراءة وكتابة الدليل محددة في مستندات واجهة Userspace للخدمات الإضافية الإضافية.
بالإضافة إلى ذلك، يجب أن تتضمّن عمليات التنفيذ خيارات التثبيت. وملفات خاصة تتطابق وظيفيًا مع تنفيذ عينة 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.
- بالنسبة إلى جهاز 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
لمحاكي Android وكذلك Pixel 4 - لنظام التشغيل Android 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_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
":
ترقية برنامج تشغيل Kernel
قد تتضمّن الأجهزة التي تتم ترقيتها إلى Android 12 إصدارًا قديمًا من برنامج IncFS. السائق. بالنسبة إلى هذه الأجهزة، تقترح شركة AOSP تحديث برنامج تشغيل IncFS إلى بالإصدار 2 (في هذه الحالة 2) للأسباب التالية:
- الإصدار الذي تم طرحه مع نظام التشغيل Android 11 هو عملية التنفيذ الأولية. من IncFS، وهو يستهدف فقط دعم تثبيت ADB.
- يستخدم نظام التشغيل Android 12 برنامج تشغيل IncFS لبثّ عمليات تثبيت ألعاب Play. الأمر الذي يتطلب ميزات وتحسينات جديدة من الإصدار 2 من IncFS لتوفير تجربة مستخدم أفضل المستخدم.
- يدعم الإصدار V1 بث الألعاب، ولكن يتم ذلك مع فرض عقوبات على الأداء معدّل استخدام أعلى للبطارية ووحدة المعالجة المركزية (CPU) وذاكرة الوصول العشوائي (RAM) مقارنةً بالإصدار 2
- يوفّر الإصدار V2 تجربة مستخدم محسّنة للبث، مع صور متحركة تقدّم سيرًا سلسًا إعداد تقارير دقيقة حول استخدام مساحة القرص، ومنع بث التطبيقات التابعة لجهات خارجية التداخل.
لترقية برنامج تشغيل IncFS في النواة، قم بتطبيق التصحيحات التالية إما kernel 4.14 أو kernel 4.19:
- تصحيح النواة 4.14
- تصحيح النواة 4.19
بالنسبة لجميع إصدارات النواة المخصصة الأخرى، يُرجى نقل إحدى مجموعات التصحيح. هم
تؤثر فقط في الدليل fs/incfs
ويتم تطبيقها بوضوح في
رمز v1 الحالي.
- إصلاح Kernel 4.14 لبرنامج التشغيل v1
- إصلاح Kernel 4.19 في الإصدار 1 من برنامج التشغيل
- إصلاح Kernel 5.4 لبرنامج التشغيل v1
مواصلة استخدام برنامج تشغيل IncFS بالطريقة ذاتها التي تستخدم بها برنامج التشغيل الأصلي ولكن الآن إصدار Android 11 الذي تمت ترقيته، إما كجزء مضمّن من صورة النواة أو كوحدة منفصلة. عدم تغيير لوحة النظام أو خاصية النظام التكوين.
تحصل الأجهزة الجديدة التي تستخدم صورة نواة GKI على أحدث برنامج تشغيل IncFS. تلقائيًا، كجزء من صورة النواة (النواة). لا يتطلب ذلك خطوات إضافية.
تم إيقاف إعدادات الوحدة القابلة للتحميل نهائيًا في الإصدار 12 من نظام التشغيل Android، ولم يتم ضبطها المتوفرة للأجهزة الجديدة. لا يُسمح به إلا للترقيات أو لأحد المورّدين تتجمّد الصورة عند إنشاء النواة الأصلية كوحدة.
عمليات تنفيذ المراجع
ويمكن اعتبار هذا التطبيق جزءًا من صورة kernel أو ( Android 11 فقط) كوحدة قابلة للتحميل.
الوحدة القابلة للتحميل (جهاز Pixel 4)- إضافة وحدات Kernel المصمَّمة مسبقًا
- إضافة وتفعيل تغيير خصائص نظام وحدة النواة على الجهاز
- تعديل قواعد شريحة العنصر الآمن (SE) على Linux
التحقق من الصحة والاختبار
تحقَّق من صحة التنفيذ باستخدام اختبارات الوحدات المميزة و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 باستخدام حزمة تطوير البرامج (SDK) لنظام التشغيل Android (ADB وapksigner)
- الإعداد بيئة تطوير.
- أكمِل مهام التنفيذ الموضّحة في قسم التنفيذ.
- يمكنك تثبيت وميض الإصدار على جهاز فعلي أو محاكي مستهدَف.
- إنشاء حزمة APK حالية أو الحصول عليها
- أنشئ مفتاح توقيع لتصحيح الأخطاء.
- يمكنك توقيع حزمة APK بتنسيق توقيع الإصدار 4 من مجلد "
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