نظام الملفات التزايدي

وحدة نواة نظام الملفات التزايدية (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.

في ما يلي التغييرات اللازمة للتنفيذ:

  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. يمكنك تضمين النواة في إصدار صورة جهاز Android.
  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 لمحاكي Android وكذلك Pixel 4
  10. لنظام التشغيل Android 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_contents هذا.
    • # Incremental file system driver
    • /vendor/lib/modules/incrementalfs\.ko
    • u:object_r:vendor_incremental_module:s0

ترقية برنامج تشغيل 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:

بالنسبة لجميع إصدارات النواة المخصصة الأخرى، يُرجى نقل إحدى مجموعات التصحيح. هم تؤثر فقط في الدليل fs/incfs ويتم تطبيقها بوضوح في رمز v1 الحالي.

مواصلة استخدام برنامج تشغيل IncFS بالطريقة ذاتها التي تستخدم بها برنامج التشغيل الأصلي ولكن الآن إصدار Android 11 الذي تمت ترقيته، إما كجزء مضمّن من صورة النواة أو كوحدة منفصلة. عدم تغيير لوحة النظام أو خاصية النظام التكوين.

تحصل الأجهزة الجديدة التي تستخدم صورة نواة GKI على أحدث برنامج تشغيل IncFS. تلقائيًا، كجزء من صورة النواة (النواة). لا يتطلب ذلك خطوات إضافية.

تم إيقاف إعدادات الوحدة القابلة للتحميل نهائيًا في الإصدار 12 من نظام التشغيل Android، ولم يتم ضبطها المتوفرة للأجهزة الجديدة. لا يُسمح به إلا للترقيات أو لأحد المورّدين تتجمّد الصورة عند إنشاء النواة الأصلية كوحدة.

عمليات تنفيذ المراجع

ويمكن اعتبار هذا التطبيق جزءًا من صورة kernel أو ( Android 11 فقط) كوحدة قابلة للتحميل.

الوحدة القابلة للتحميل (جهاز Pixel 4) محاكي Android (كجزء من صورة النواة)

التحقق من الصحة والاختبار

تحقَّق من صحة التنفيذ باستخدام اختبارات الوحدات المميزة و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 باستخدام حزمة تطوير البرامج (SDK) لنظام التشغيل Android (ADB وapksigner)

  • الإعداد بيئة تطوير.
  • أكمِل مهام التنفيذ الموضّحة في قسم التنفيذ.
  • يمكنك تثبيت وميض الإصدار على جهاز فعلي أو محاكي مستهدَف.
  • إنشاء حزمة APK حالية أو الحصول عليها
  • أنشئ مفتاح توقيع لتصحيح الأخطاء.
  • يمكنك توقيع حزمة APK بتنسيق توقيع الإصدار 4 من مجلد "build-tools".
    ./apksigner sign --ks debug.keystore game.apk
  • تثبيت حزمة APK على الجهاز من platform-tools المجلد.
    ./adb install game.apk
مثال على التثبيت
الشكل 1: مثال على التثبيت

تحديد موقع هذه الاختبارات