صور النظام العامة

صورة النظام العامة (GSI) هي صورة نظام تم ضبط إعداداتها لأجهزة Android. ويُعدّ هذا الإصدار من Android خالصًا مع رمز "المشروع المفتوح المصدر لنظام Android" (AOSP) غير المعدَّل الذي يمكن لأي جهاز Android يعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث تشغيله بنجاح.

يتم استخدام شهادات GSI لإجراء اختبارات VTS وCTS على GSI. يتم استبدال صورة النظام لجهاز Android بـ "صورة نظام Android العام"، ثم يتم اختبارها باستخدام مجموعة اختبار المورّد (VTS) ومجموعة أدوات اختبار التوافق (CTS) للتأكّد من أنّ الجهاز ينفّذ واجهات المورّد بشكل صحيح مع أحدث إصدار من Android.

للبدء في استخدام فهارس البحث العام، راجِع الأقسام التالية للحصول على تفاصيل عن إعدادات فهارس البحث العام (والمتغيرات المسموح بها) وأنواعها. عندما تكون مستعدًا لاستخدام صورة نظام التشغيل العام (GSI)، يمكنك تنزيل صورة GSI وإنشاءها لجهازك المستهدف، ثم فلاشة صورة GSI على جهاز Android.

إعدادات GSI واختلافاتها

يتضمّن الإصدار الحالي من Android GSI الإعدادات التالية:

تتضمّن أداة Android GSI الحالية الاختلافات الرئيسية التالية:

  • بنية وحدة المعالجة المركزية (CPU) إتاحة تعليمات مختلفة لوحدة المعالجة المركزية (ARM وx86 وما إلى ذلك) وعدد بتات وحدة المعالجة المركزية (32 بت أو 64 بت)

استهدافات GSI لاختبارات الامتثال لمعايير Treble

يتم تحديد حزمة GSI المستخدَمة لاختبار الامتثال حسب إصدار Android الذي يتم تشغيل الجهاز به.

نوع الجهاز إنشاء استهداف
الأجهزة التي تعمل بالإصدار 15 من نظام التشغيل Android gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بنظام Android 14 gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بنظام Android 13 gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بالإصدار Android 12L gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بالإصدار 12 من نظام التشغيل Android gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بنظام التشغيل Android 11 gsi_$arch-user (موقَّع)

يتم إنشاء جميع مجموعات أدوات تطوير البرامج (GSI) من قاعدة بيانات Android 12، ويحتوي كل ملف ثنائي من مجموعات أدوات تطوير البرامج (GSI) على بنية وحدة معالجة مركزية (CPU) مقابلة (اطّلِع على قائمة أهداف الإنشاء في إنشاء مجموعات أدوات تطوير البرامج (GSI)).

التغييرات في صورة النظام العام (GSI) لنظام التشغيل Android 12

يجب أن تستخدم الأجهزة التي تعمل بنظام التشغيل Android 12 أو التي تم تحديثها إليه حِزم GSI لنظام التشغيل Android 12 لاختبار الامتثال. ويشمل ذلك التغييرات الرئيسية التالية عن نطاقات GSI السابقة:

  • اسم الهدف: تم تغيير اسم استهداف GSI لاختبارات الامتثال إلى gsi_$arch. يتم الاحتفاظ بـ GSI الذي يحمل الاسم المستهدَف aosp_$arch لمطوّري تطبيقات Android. تم أيضًا تقليل خطة الاختبار CTS-on-GSI لاختبار واجهة المورّد.
  • إيقاف صورة النظام العام (GSI) القديمة نهائيًا: يزيل الإصدار 12 من GSI الحلول البديلة التي تتيح استخدام أجهزة Android 8.0 أو 8.1 التي لم يتم تثبيت حزمة Treble عليها بالكامل.
  • Userdebug SEPolicy: تحتوي صورة النظام العام (GSI) gsi_$arch على userdebug_plat_sepolicy.cil. عند فلاش vendor_boot-debug.img أو boot-debug.img الخاصَين بالمصنّع الأصلي للجهاز، سيحمِّل /system/bin/init userdebug_plat_sepolicy.cil من system.img GSI. يُرجى الرجوع إلى مقالة اختبار VTS باستخدام Debug Ramdisk للاطّلاع على التفاصيل.

التغييرات في مبادرة "نظام التشغيل الأساسي القابل للتثبيت" (GSI) لنظام التشغيل Android 11

يجب أن تستخدم الأجهزة التي تعمل بنظام التشغيل Android 11 أو تم تحديثها إليه حِزم GSI لنظام التشغيل Android 11 لاختبار الامتثال. ويشمل ذلك التغييرات الرئيسية التالية عن نطاقات GSI السابقة:

  • محتويات system_ext يحدِّد الإصدار 11 من نظام التشغيل Android system_ext قسمًا جديدًا. تضع أداة GSI محتوى إضافة النظام ضمن المجلد system/system_ext.
  • APEXes يحتوي GSI على كلّ من ملفّات APEX المسطّحة والمضغوطة. يتم تحديد أيّ منها سيتم استخدامه من خلال سمة النظام ro.apex.updatable في قسم المورّد أثناء التشغيل. يُرجى الرجوع إلى مقالة ضبط النظام لتتوافق مع تحديثات APEX للاطّلاع على التفاصيل.

التغييرات في صورة النظام العام (GSI) لنظام التشغيل Android 10

يجب أن تستخدم الأجهزة التي تعمل بالإصدار 10 من Android أو تم تحديثها إليه مجموعات حزمات البرامج الأساسية لنظام التشغيل Android 10 من أجل اختبار الامتثال. ويشمل ذلك التغييرات الرئيسية التالية عن نطاقات GSI السابقة:

  • إصدار المستخدم: تتضمّن صورة النظام العام (GSI) إصدارًا من المستخدم من Android 10. في Android 10، يمكن استخدام إصدار المستخدم من GSI في اختبار الامتثال لـ CTS على GSI/VTS. يُرجى الرجوع إلى مقالة اختبار VTS باستخدام Debug Ramdisk للحصول على التفاصيل.
  • تنسيق غير مفسَّر: GSI مع الاستهدافات aosp_$arch تم إنشاؤها بتنسيق غير مفسَّر. يمكنك استخدام img2simg لتحويل ملف GSI غير المفسَّر إلى تنسيق متفرق إذا كان ذلك ضروريًا.
  • النظام بصفتها الجذر: تم إيقاف هدف الإصدار القديم لبرنامج GSI الذي يحمل الاسم aosp_$arch_a نهائيًا. بالنسبة إلى الأجهزة التي تمت ترقيتها من Android 8 أو 8.1 إلى Android 10 باستخدام ملف ramdisk و غير نظام التشغيل كجذر، استخدِم ملف GSI القديم aosp_$arch_ab. يتوافق init الذي تمت ترقيته في ذاكرة الوصول العشوائي (RAM) مع ملف system.img الذي يخصّ المصنّع الأصلي للجهاز بتنسيق نظام التشغيل كجذر.
  • التحقّق من عملية التشغيل باستخدام GSI، ما عليك سوى فتح قفل الجهاز. ليس من الضروري إيقاف ميزة "التحقّق من التشغيل".

التغييرات في مبادرة "نظام التشغيل الأساسي المتعدّد الأجهزة" (GSI) لنظام التشغيل Android 9

يجب أن تستخدم الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android أو تم تحديثها إليه مجموعات حزمات البرامج الأساسية (GSI) لنظام التشغيل Android 9 من أجل اختبار الامتثال. ويشمل ذلك التغييرات الرئيسية التالية عن نطاقات GSI السابقة:

  • دمج صورة النظام العام (GSI) والمحاكي يتم إنشاء GSI من ملف تعريف برمجي لنظام منتجات المحاكي، مثل aosp_arm64 و aosp_x86.
  • النظام بصفتها الجذر: في الإصدارات السابقة من Android، كانت الأجهزة التي لا تتوافق مع تحديثات A/B يمكنها تركيب صورة النظام ضمن الدليل /system. في Android 9، يتم تركيب ملف ‎"ملف تهيئة الجهاز" لصورة النظام كملف تهيئة الجهاز.
  • واجهة رابط 64 بت في الإصدار 8.x من Android، كانت أدوات GSI ذات الـ 32 بت تستخدِم واجهة الربط ذات الـ 32 بت. لا يتوافق الإصدار 9 من Android مع واجهة الربط بنظام التشغيل 32 بت، لذا تستخدم كل من واجهة GSI بنظام التشغيل 32 بت واجهة الربط بنظام التشغيل 64 بت.
  • فرض مجموعة تطوير البرامج الأصلية للمورّدين (VNDK) في الإصدار 8.1 من نظام التشغيل Android، كان حزمة VNDK اختيارية. اعتبارًا من Android 9، أصبح استخدام حزمة VNDK إلزاميًا، لذا BOARD_VNDK_VERSION يجب ضبطها.
  • خاصية النظام المتوافقة: يتيح نظام التشغيل Android 9 التحقّق من إمكانية الوصول إلى سمة نظام متوافقة (PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true).

Android 9 تغييرات Keymaster

في الإصدارات السابقة من Android، كان على الأجهزة التي تستخدم Keymaster 3 أو إصدارًا أقدم التحقّق من تطابق معلومات الإصدار (ro.build.version.release و ro.build.version.security_patch) التي يعرضها النظام الجاري مع معلومات الإصدار التي يعرضها برنامج الإقلاع. كانت تتم عادةً الحصول على هذه المعلومات من عنوان صورة التمهيد.

في Android 9 والإصدارات الأحدث، تم تغيير هذا الشرط لتفعيل إمكانية تشغيل مورّدي البرامج لنظام التشغيل GSI. على وجه التحديد، يجب ألا يُجري Keymaster عملية التحقّق لأنّ معلومات الإصدار التي يُبلغ عنها ملف GSI قد لا تتطابق مع معلومات الإصدار التي يُبلغ عنها مشغّل الإقلاع الخاص بالمورّد. بالنسبة إلى الأجهزة التي تستخدم Keymaster 3 أو إصدارًا أقل، على المورّدين تعديل عملية تنفيذ Keymaster لتخطّي عملية التحقّق (أو الترقية إلى Keymaster 4). لمعرفة تفاصيل عن Keymaster، يُرجى الرجوع إلى متجر مفاتيح مستند إلى الأجهزة.

تنزيل صور النظام العام (GSI)

يمكنك تنزيل مجموعات GSI المُنشأة مسبقًا من الموقع الإلكتروني لميزة الدمج المستمر (CI) في AOSP على الرابط ci.android.com. إذا لم يكن نوع مجموعة GSI لنظام التشغيل على الجهاز متاحًا للتنزيل، يمكنك الرجوع إلى القسم التالي للحصول على تفاصيل عن إنشاء مجموعات GSI لاستهدافات محدّدة.

إنشاء صور نظام عامة

بدءًا من الإصدار 9 من Android، يتضمّن كل إصدار من Android فرع GSI باسم DESSERT-gsi على AOSP (على سبيل المثال، android12-gsi هو فرع GSI على Android 12). تتضمّن فروع GSI محتوى Android مع جميع تصحيحات الأمان و تصحيحات GSI المطبَّقة.

لإنشاء صورة نظام عامة (GSI)، عليك إعداد شجرة مصدر Android من خلال تنزيل من فرع GSI و اختيار هدف ملف GSI المُنشئ. استخدِم جداول أهداف الإنشاء أدناه لتحديد الإصدار الصحيح من GSI لجهازك. بعد اكتمال عملية الإنشاء، تصبح GSI هي ملف تصوُّر النظام (أي system.img) ويظهر في مجلد الإخراج out/target/product/generic_arm64.

على سبيل المثال، لإنشاء هدف الإنشاء GSI gsi_arm64-userdebug على فرع GSI android12-gsi، شغِّل الأوامر التالية.

$ repo init -u https://android.googlesource.com/platform/manifest -b android12-gsi
$ repo sync -cq
$ source build/envsetup.sh
$ lunch gsi_arm64-userdebug
$ make -j4

أهداف إنشاء صور نظام Android العام (GSI)

إنّ استهدافات إنشاء GSI التالية مخصّصة للأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android أو الإصدارات الأحدث.

اسم صورة النظام العام (GSI) بنية وحدة المعالجة المركزية عدد بتات واجهة Binder النظام بصفتها الجذر إنشاء استهداف
gsi_arm تفعيل جهاز الإنذار 32 Y gsi_arm-user
gsi_arm-userdebug
gsi_arm64 ARM64 64 Y gsi_arm64-user
gsi_arm64-userdebug
gsi_x86 x86 32 Y gsi_x86-user
gsi_x86-userdebug
gsi_x86_64 x86-64 64 Y gsi_x86_64-user
gsi_x86_64-userdebug

متطلبات فلاش أنظمة التشغيل الأساسية العامة

يمكن أن تتضمّن أجهزة Android تصميمات مختلفة، لذلك لا تتوفّر أي أوامر عامة أو مجموعة من التعليمات لفلاش رمز نظام التشغيل الأساسي العام (GSI) ليسري على جميع الأجهزة. يُرجى التواصل مع الشركة المصنّعة لجهاز Android للحصول على تعليمات واضحة حول عملية الفلاش. يمكنك اتّباع الخطوات التالية كإرشادات عامة:

  1. تأكَّد من توفُّر ما يلي في الجهاز:
    • Treblized
    • طريقة لفتح قفل الأجهزة (حتى يمكن إعادة تحميلها باستخدام fastboot)
    • حالة غير مقفلة لكي يمكن فلاشها من خلال fastboot (لضمان توفُّر أحدث إصدار من fastboot، عليك برمجته من شجرة مصدر Android).
  2. امسح قسم النظام الحالي، ثم شغِّل رمز النظام الأساسي المُعدَّ للأجهزة المتعددة على قسم النظام.
  3. امسح بيانات المستخدم وامحُ البيانات من الأقسام الأخرى اللازمة (مثل بيانات المستخدم وأقسام النظام).
  4. أعد تشغيل الجهاز.

على سبيل المثال، لفلاش ملف GSI على أي جهاز Pixel:

  1. ابدأ تشغيل الجهاز في وضع fastboot و افتح قفل برنامج الإقلاع.
  2. يجب أيضًا أن يتم تشغيل الأجهزة المتوافقة مع fastbootd في نظام التشغيل fastbootd من خلال:
    $ fastboot reboot fastboot
  3. امسح رمز النظام الأساسي المُعدَّ للأجهزة المتعددة (GSI) وفلِشه على قسم النظام:
    $ fastboot erase system
    $ fastboot flash system system.img
  4. امسح بيانات المستخدم وامحُ البيانات من الأقسام الأخرى الضرورية (مثل بيانات المستخدم وأقسام النظام):
    $ fastboot -w
  5. إعادة التشغيل للدخول إلى أداة تحميل التشغيل:
    $ fastboot reboot-bootloader
  6. أوقِف عملية التحقّق من ميزة "التشغيل المتحقَّق منه" أثناء فلاش ملف vbmeta الذي تم توفيره:
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  7. Reboot:
    $ fastboot reboot
على أجهزة Android 10 أو الإصدارات الأحدث التي تحتوي على أقسام نظام أصغر حجمًا، قد تظهر رسالة الخطأ التالية عند فلاش صورة نظام التشغيل العام:
    Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
    fastboot: error: Command failed
استخدِم الأمر التالي لحذف قسم المنتج وإخلاء مساحة لقسم النظام. يوفر ذلك مساحة إضافية لفلاش GSI:
$ fastboot delete-logical-partition product_a
يجب أن يتطابق اللاحقة _a مع معرّف الفتحة في قسم النظام، مثل system_a في هذا المثال.

المساهمة في صور الأنظمة العامة

نرحب في Android بمساهماتك في تطوير مبادرة GSI. يمكنك المشاركة والمساعدة في تحسين مبادرة GSI من خلال:

  • إنشاء تصحيح لنظام التشغيل GSI: DESSERT-gsi ليس فرع تطوير، ولا يقبل سوى اختيار أجزاء من الفرع الرئيسي لنظام التشغيل AOSP، لذا لإرسال تصحيح GSI، عليك إجراء ما يلي:
    1. أرسِل الإصلاح إلى الفرع AOSP main.
    2. اختَر التصحيح الذي تريده وطبِّقه على الإصدار DESSERT-gsi.
    3. يُرجى الإبلاغ عن خطأ لمراجعة عملية اختيار المحتوى.
  • الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى راجِع التعليمات الواردة في الإبلاغ عن الأخطاء، ثم انتقِل إلى أخطاء GSIأو أبلِغ عنها.

نصائح

تغيير وضع شريط التنقّل باستخدام adb

عند التمهيد باستخدام واجهة GSI، يتم ضبط وضع شريط التنقّل من خلال إلغاء إعدادات المورّد. يمكنك تغيير وضع شريط التنقّل من خلال تنفيذ الأمر adb التالي في وقت التشغيل.

adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode

حيث يمكن أن يكون mode هو threebutton أو twobutton gestural أو غير ذلك.