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

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

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

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

إعدادات GSI وتبايناتها

يتضمّن الإصدار الحالي من "صورة نظام Android الأساسية" الإعدادات التالية:

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

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

استهدافات GSI لاختبارات الامتثال لبرنامج Treble

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

نوع الجهاز إنشاء الهدف
الأجهزة التي تعمل بنظام Android 15 gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بنظام Android 14 gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بنظام Android 13 gsi_$arch-user (موقَّع)
إطلاق الأجهزة التي تعمل بالإصدار 12L من نظام التشغيل Android gsi_$arch-user (موقَّع)
الأجهزة التي تعمل بنظام Android 12 "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_$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

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

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

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

يجب أن تستخدم الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android أو التي تم تحديثها إليه حِزم GSI لنظام التشغيل 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 أو التي يتم تحديثها إليه، يجب أن تستخدم الإصدار 9 من "خدمات الموقع الجغرافي من Google" لنظام التشغيل Android لاختبار الامتثال. ويشمل ذلك التغييرات الرئيسية التالية عن مجموعات GSI السابقة:

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

تغييرات Keymaster في Android 9

في الإصدارات السابقة من 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

أهداف إصدار GSI لنظام التشغيل Android

إنّ استهدافات إنشاء 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. امسح قسم النظام الحالي، ثم وضِّع صورة GSI على قسم النظام.
  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. أرسِل الإصلاح إلى الفرع main في AOSP.
    2. اختَر التصحيح الذي تريده وطبِّقه على الإصدار DESSERT-gsi.
    3. الإبلاغ عن الخطأ لتتم مراجعة إصدار cherrypick
  • الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى راجِع التعليمات الواردة في مقالة الإبلاغ عن الأخطاء، ثم تصفَّح أو قدِّم أخطاء GSI.

نصائح

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

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

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

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