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

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

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

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

إعدادات صورة النظام العامّة (GSI) والاختلافات

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

تتضمّن حزمة GSI الحالية لنظام التشغيل Android الاختلافات الرئيسية التالية:

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

استهدافات صورة النظام العام (GSI) لاختبارات التوافق مع Treble

يتم تحديد صورة نظام التشغيل العام (GSI) المستخدَمة لاختبار التوافق حسب إصدار Android الذي يتم تشغيل الجهاز به.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

التغييرات في الإصدار 9 من Android Keymaster

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

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

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

يمكنك تنزيل حِزم GSI مُنشأة مسبقًا من الموقع الإلكتروني الخاص بالتكامل المستمر (CI) في مشروع AOSP على ci.android.com. وإذا كان نوع حزمة GSI لمنصة الأجهزة غير متاح للتنزيل، يُرجى الرجوع إلى القسم التالي للحصول على تفاصيل حول إنشاء حِزم 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

استهدافات إصدار صورة نظام عامة (GSI) في Android

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

اسم GSI بنية وحدة المعالجة المركزية عدد البتات لواجهة وحدة التجميع System-as-root إنشاء هدف
gsi_arm تفعيل جهاز الإنذار 32 نعم gsi_arm-user
gsi_arm-userdebug
gsi_arm64 ARM64 64 نعم gsi_arm64-user
gsi_arm64-userdebug
gsi_x86 x86 32 نعم gsi_x86-user
gsi_x86-userdebug
gsi_x86_64 x86-64 64 نعم gsi_x86_64-user
gsi_x86_64-userdebug

متطلبات تثبيت صور نظام عامة

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

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

على سبيل المثال، لتثبيت صورة نظام عام (GSI) على أي جهاز Pixel، اتّبِع الخطوات التالية:

  1. الإقلاع في وضع fastboot وفتح قفل برنامج الإقلاع
  2. يجب أيضًا أن يتم تشغيل الأجهزة المتوافقة مع fastbootd في وضع fastbootd من خلال:
    $ fastboot reboot fastboot
  3. محو GSI وتثبيته في قسم النظام:
    $ fastboot erase system
    $ fastboot flash system system.img
  4. إذا كان جهازك يتيح استخدام إطار عمل Android للأجهزة الافتراضية، عليك تثبيت "برامج ثابتة للأجهزة الافتراضية المحمية" باتّباع الخطوات التالية:
    $ fastboot flash pvmfw pvmfw.img
    
  5. امحُ بيانات المستخدم وامحُ البيانات من الأقسام الأخرى اللازمة (على سبيل المثال، بيانات المستخدم وأقسام النظام):
    $ fastboot -w
  6. أعِد تشغيل الجهاز للدخول إلى برنامج الإقلاع:
    $ fastboot reboot-bootloader
  7. أوقِف عملية التحقّق من "التشغيل المتحقَّق منه" أثناء نقل بيانات vbmeta المقدَّمة:
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  8. Reboot:
    $ fastboot reboot
على أجهزة Android 10 أو الإصدارات الأحدث التي تحتوي على أقسام نظام أصغر، قد تظهر رسالة الخطأ التالية عند تنزيل صورة نظام GSI:
    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 في هذا المثال.

المساهمة في صور نظام عامة (GSI)

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

  • إنشاء حزمة تصحيح GSIDESSERT-gsi ليس فرعًا تطويريًا ولا يقبل سوى عمليات اختيار من أحدث فرع إصدار من AOSP (android17-release)، لذا لإرسال حزمة إصلاح GSI، عليك اتّباع الخطوات التالية:
    1. أرسِل تصحيح الرمز إلى فرع AOSP android17-release.
    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 أو غير ذلك.