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

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

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

للبدء في استخدام GSIs، راجِع الأقسام التالية للحصول على تفاصيل حول إعدادات 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 لنظام التشغيل Android 12 لإجراء اختبارات التوافق. ويشمل ذلك التغييرات الرئيسية التالية مقارنةً بإصدارات 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 في system.img. يُرجى الرجوع إلى اختبار VTS باستخدام Debug Ramdisk للحصول على التفاصيل.

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

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

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

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

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

  • مستخدم الإصدار: تتضمّن GSI إصدارًا للمستخدم من Android 10. في نظام التشغيل Android 10، يمكن استخدام حزمة GSI المخصّصة للمستخدمين في اختبار التوافق مع CTS-on-GSI/VTS. يُرجى الرجوع إلى اختبار VTS باستخدام Debug Ramdisk للحصول على التفاصيل.
  • تنسيق غير متفرّق: يتم إنشاء فهارس GSI التي تتضمّن قيمًا مستهدفة 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) والمحاكي. يتم إنشاء صور نظام التشغيل العام من صور نظام التشغيل الخاصة بمنتجات المحاكي، مثل 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 .
  • سمة النظام المتوافقة: يتيح الإصدار 9 من نظام التشغيل Android إجراء عملية التحقّق من إمكانية الوصول إلى سمة نظام متوافقة (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 قد لا تتطابق مع معلومات الإصدار التي يقدّمها برنامج الإقلاع الخاص بالمورّد. بالنسبة إلى الأجهزة التي تستخدم الإصدار 3 من Keymaster أو إصدارًا أقدم، على المورّدين تعديل تنفيذ Keymaster لتخطّي عملية التحقّق (أو الترقية إلى الإصدار 4 من Keymaster). للحصول على تفاصيل حول Keymaster، يُرجى الرجوع إلى مقالة Keystore المستند إلى الأجهزة.

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

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

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

بدءًا من Android 9، يتضمّن كل إصدار من نظام Android فرعًا لصور النظام العامة (GSI) باسم DESSERT-gsi في "المشروع المفتوح المصدر لنظام Android"‏ (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) بنية وحدة المعالجة المركزية عدد بتات واجهة Binder System-as-root إنشاء هدف
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

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

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

  1. تأكَّد من توفّر ما يلي في الجهاز:
    • Treblized
    • طريقة لفتح قفل الأجهزة (حتى يمكن تحديثها باستخدام fastboot)
    • حالة غير مقفلة لتتمكّن من تثبيت الإصدار من خلال fastboot (للتأكّد من أنّ لديك أحدث إصدار من fastboot، أنشئ الإصدار من شجرة مصدر Android).
  2. محو قسم النظام الحالي، ثم نقل ملف 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 من خلال:

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