صورة النظام العامة (GSI) هي صورة نظام تتضمّن إعدادات معدَّلة لأجهزة Android. ويُعدّ هذا التنفيذ تنفيذًا خالصًا لنظام Android باستخدام رمز غير معدَّل من "المشروع المفتوح المصدر لنظام Android" (AOSP)، ويمكن لأي جهاز Android يعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث تشغيله بنجاح.
تُستخدَم صور نظام التشغيل العام (GSI) لتشغيل اختبارات VTS وCTS-on-GSI. يتم استبدال صورة نظام جهاز Android بصورة GSI، ثم يتم اختبارها باستخدام مجموعة أدوات اختبار المورّد (VTS) ومجموعة أدوات اختبار التوافق (CTS) للتأكّد من أنّ الجهاز ينفّذ واجهات المورّد بشكل صحيح باستخدام أحدث إصدار من Android.
للبدء في استخدام معرّفات GSI، راجِع الأقسام التالية للحصول على تفاصيل حول إعدادات GSI (والاختلافات المسموح بها) والأنواع. عندما تصبح جاهزًا لاستخدام صورة نظام عام، عليك تنزيل صورة النظام العام وإنشاؤها للجهاز المستهدف، ثم تثبيت صورة النظام العام على جهاز Android.
إعدادات صورة النظام العامّة (GSI) والاختلافات
تتضمّن حزمة GSI الحالية لنظام Android الإعدادات التالية:
- الصوت العالي الطبقة: يتضمّن GSI إمكانية استخدام التغييرات المعمارية المستندة إلى AIDL/HIDL (المعروفة أيضًا باسم Treble)، بما في ذلك إمكانية استخدام واجهات AIDL وواجهات HIDL. يمكنك استخدام صورة نظام GSI على أي جهاز Android يستخدم واجهات AIDL/HIDL الخاصة بالمورِّدين. (لمزيد من التفاصيل، يُرجى الاطّلاع على مراجع حول البنية).
- نظام الملفات: يستخدم GSI نظام الملفات ext4.
تتضمّن حزمة 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
يجب أن تستخدم الأجهزة التي تعمل بنظام التشغيل Android 12 أو التي تم تحديثها إلى هذا الإصدار حِزم 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
يجب أن تستخدم الأجهزة التي تعمل بنظام التشغيل 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 صور النظام العامة (GSI) لنظام Android 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).
التغييرات في Keymaster على الإصدار 9 من Android
في الإصدارات السابقة من 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 في 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-usergsi_arm-userdebug |
gsi_arm64 |
ARM64 | 64 | Y | gsi_arm64-usergsi_arm64-userdebug |
gsi_x86 |
x86 | 32 | Y | gsi_x86-usergsi_x86-userdebug |
gsi_x86_64 |
x86-64 | 64 | Y | gsi_x86_64-usergsi_x86_64-userdebug |
متطلبات تثبيت صور نظام عامة
يمكن أن تتضمّن أجهزة Android تصاميم مختلفة، لذلك لا يوجد أمر عام أو مجموعة من التعليمات لتثبيت صورة نظام عامة (GSI) يمكن تطبيقها على جميع الأجهزة. يُرجى التواصل مع الشركة المصنّعة لجهاز Android للحصول على تعليمات واضحة بشأن عملية التثبيت. اتّبِع الخطوات التالية كإرشادات عامة:
- تأكَّد من توفُّر ما يلي في الجهاز:
- Treblized
- طريقة لفتح قفل الأجهزة (حتى يمكن تحديثها باستخدام
fastboot) - حالة غير مقفلة لتتمكّن من تثبيت البرنامج من خلال
fastboot(للتأكّد من أنّ لديك أحدث إصدار منfastboot، أنشئ الإصدار من شجرة مصدر Android).
- محو قسم النظام الحالي، ثم نقل ملف GSI إلى قسم النظام
- محو بيانات المستخدم ومحو البيانات من الأقسام الأخرى اللازمة (على سبيل المثال، بيانات المستخدم وأقسام النظام)
- أعد تشغيل الجهاز.
على سبيل المثال، لتثبيت صورة نظام عام (GSI) على أي جهاز Pixel، اتّبِع الخطوات التالية:
- الإقلاع في وضع
fastbootوفتح برنامج الإقلاع - يجب أيضًا أن يتم تشغيل الأجهزة المتوافقة مع
fastbootdفي وضعfastbootdمن خلال:$ fastboot reboot fastboot
- محو GSI وتثبيته في قسم النظام:
$ fastboot erase system $ fastboot flash system system.img
- إذا كان جهازك يتيح استخدام إطار عمل Android للأجهزة الافتراضية، عليك تثبيت "برامج ثابتة للأجهزة الافتراضية المحمية" باتّباع الخطوات التالية:
$ fastboot flash pvmfw pvmfw.img
- امحُ بيانات المستخدم وامحُ البيانات من الأقسام الأخرى اللازمة (على سبيل المثال، بيانات المستخدم وأقسام النظام):
$ fastboot -w
- أعِد تشغيل الجهاز للدخول في وضع "مُحمِّل بدء التشغيل":
$ fastboot reboot-bootloader
- أوقِف عملية التحقّق من "التشغيل المتحقَّق منه" أثناء نقل بيانات vbmeta المقدَّمة:
$ fastboot --disable-verification flash vbmeta vbmeta.img
- Reboot:
$ fastboot reboot
Resizing 'system_a' FAILED (remote: 'Not enough space to resize partition')
fastboot: error: Command failed$ fastboot delete-logical-partition product_a
_a مع معرّف موضع الإعلان في قسم تطبيقات النظام،
مثل system_a في هذا المثال.
المساهمة في صور النظام العامة (GSI)
يرحّب نظام التشغيل Android بمساهماتك في تطوير GSI. يمكنك المشاركة والمساعدة في تحسين مؤشر GSI من خلال:
- إنشاء حزمة تصحيح GSI
DESSERT-gsiليس فرعًا تطويريًا ولا يقبل سوى عمليات اختيار من أحدث فرع إصدار من AOSP (android16-qpr2-release)، لذا لإرسال تصحيح GSI، عليك اتّباع الخطوات التالية:- أرسِل التصحيح إلى فرع AOSP
android16-qpr2-release. - اختَر التصحيح المطلوب تطبيقه على
DESSERT-gsi. - أبلِغ عن خطأ ليتمكّن الفريق من مراجعة عملية اختيار التغييرات.
- أرسِل التصحيح إلى فرع AOSP
- الإبلاغ عن أخطاء في GSI أو تقديم اقتراحات أخرى راجِع التعليمات الواردة في الإبلاغ عن الأخطاء، ثم تصفَّح أو أبلِغ عن أخطاء GSI.
نصائح
تغيير وضع شريط التنقّل باستخدام adb
عند بدء التشغيل باستخدام صورة نظام عامة (GSI)، يتم ضبط وضع شريط التنقّل من خلال تجاهل إعدادات الشركة المصنّعة. يمكنك تغيير وضع شريط التنقّل من خلال تنفيذ أمر adb التالي في وقت التشغيل.
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
حيث يمكن أن تكون قيمة mode هي threebutton أو twobutton أو gestural أو غير ذلك.