مشروع رئيسي في أندرويد 10

بالأمس ، تم إصدار تحديث نظام التشغيل التالي للأجهزة المحمولة من Google. كان أحد أهم الابتكارات في Android 10 هو "Project Mainline". سأحاول معرفة ما هو عليه ولماذا وكيف يعمل.

لسنوات عديدة ، تحاول Google حل مشكلة تحديثات الأمان على Android. يتم تثبيت Android حاليًا على عدة مليارات من الأجهزة ، لكن معظم الشركات المصنعة مترددة للغاية في دعم الأجهزة بعد الإصدار. هذا يؤدي إلى حقيقة أن هناك العديد من الأجهزة في العملية التي يتم تثبيت إصدار به نقاط الضعف المعروفة.

كانت أول خطوة كبيرة لتبسيط تحديث Android هي "Project Treble" ، الذي قسم "Android" إلى جزأين: يعتمد على الأجهزة ومستقل. مما سهل إصدار تحديثات للإصدارات الجديدة من Android. كانت الخطوة الكبيرة التالية هي مشروع Mainline. يتيح لك تحديث المكونات الفردية لنظام التشغيل دون تحديث النظام بأكمله ، على غرار تحديث التطبيقات.

لماذا هذا مطلوب؟


في بنية Android ، يتم فصل نظام التشغيل (الذي يشار إليه عادةً باسم البرامج الثابتة) بإحكام من بيانات المستخدم والتطبيقات. إنه موجود في قسم منفصل من ذاكرة الفلاش ، وهو للقراءة فقط ، وفي أحدث إصدارات Android يتم توقيعه رقميًا من أجل التحكم في النزاهة. بالنسبة لتطبيقات Android التي تعد جزءًا من نظام التشغيل ، يمكن إجراء تحديث من خلال وضع إصدارات جديدة من التطبيقات في قسم ذاكرة المستخدم. كان من المستحيل تحديث أجزاء أخرى من نظام التشغيل (الخدمات ، المكتبات ، إلخ) ، على سبيل المثال باستخدام مدير الحزم ، كما هو الحال في توزيعات Linux. لمثل هذه التصحيحات ، اضطر الصانع إلى إصدار تحديث للنظام بأكمله. في الوقت نفسه ، عند استخدام خدمات Google Mobile Services (الغالبية العظمى من الأجهزة التي تستخدمها) ، يتطلب كل تحديث اعتمادًا من Google. و "Project Mainline" يحل هذه المشكلة ، والآن يمكن تحديث مكونات النظام بشكل فردي ، على غرار تطبيقات Android. بالإضافة إلى تحديثات الأمان ، يعمل أيضًا على تبسيط تحديث إعدادات النظام وبياناته ، مثل المناطق الزمنية (tzdata).

كيف يعمل؟


جوهر Project Mainline هو الحاوية الجديدة لتطبيقات نظام APEX (اختصار لنظام Android Pony EXpress).

في Android 10 ، حددت Google 13 حزمة APEX في النظام يمكن تحديثها بشكل مستقل:

  • الأمان: برامج ترميز الوسائط ، مكونات إطار عمل الوسائط ، محلل DNS ، تشفير
  • الخصوصية: وثائق واجهة المستخدم ، المراقب إذن ، ExtServices
  • الاتساق: بيانات المنطقة الزمنية ، ANGLE (تمكين المطورين) ، بيانات تعريف الوحدة ، مكونات الشبكة ، تسجيل الدخول إلى البوابة الأسيرة ، تكوين إذن الشبكة

يمكن تثبيت حزم APEX بشكل مشابه لـ APKs باستخدام "مثبّت الحزمة" أو adb أو Google Play.

APEX


يشبه ملف APEX الملف المستخدم في تطبيقات Andoird APK.

APEX هو أرشيف مضغوط يحتوي على 4 ملفات رئيسية:

  • apex_manifest.json - يحتوي على اسم الحزمة وإصدارها ؛
  • AndroidManifest.xml - بيانات تعريف الحزمة (مشابه لـ APK) ؛
  • apex_payload.img - صورة لنظام الملفات ext4 ؛
  • apex_pubkey - المفتاح العمومي للتحقق من توقيع الصورة.

تعمل خدمة نظام مدير APEX (apexd) مع حزم APEX.

مدير أبيكس


  • بعد أن قرر مثبت الحزمة أنه حزمة APEX ، يقوم بتمريرها إلى مدير APEX.
  • يتحقق مدير APEX من الحزمة وإصدارها.
  • إذا مرت الاختبارات ، فقم بفكها في قسم المستخدم بالذاكرة ، وتحديث السجل في قاعدة بياناتها وإعادة تشغيل الأجهزة.
  • عندما يقوم APEX بالتمهيد ، يقوم المدير بفحص جميع الحزم من قاعدة البيانات ، ويقوم بإنشاء جهاز حلقة لصورة ext4 ويقوم بتثبيتها على طول المسار / apex / name @ ver.

داخل صورة من حزمة APEX ، قد يكون هناك:

  • الملفات القابلة للتنفيذ
  • المكتبات (.so) المشتركة
  • مكتبات JAR ،
  • ملفات البيانات
  • ملفات التكوين.

توقيع حزمة APEX


يتم توقيع حزمة APEX مرتين ، مع مفتاحين مختلفين. يتم توقيع صورة ext4 باستخدام مفتاح واحد (يتم استخدام dm-verity ، كما هو الحال في التمهيد الذي تم التحقق منه على نظام Android) ، ويتم توقيع حزمة APEX (ملف مضغوط) مع المفتاح الثاني ، على غرار حزمة APK.

نواة لينكس


يستخدم APEX عددًا من آليات Linux kernel ، مثل جهاز loop ، DM-verity.
يتم دعم APEX على إصدار kernel 4.4 والإصدارات الأحدث. بالنسبة إلى الأجهزة التي تعمل على الإصدارات القديمة من kernel ، يتم دعم العمل فقط في الوضع "المسطح" ، والذي لا يدعم التحديث.

المراجع:
android.googlesource.com/platform/system/apex/+/refs/heads/master/docs/README.md
android-developers.googleblog.com/2019/05/fresher-os-with-projects-treble-and-mainline.html

Source: https://habr.com/ru/post/ar466211/


All Articles