صورة النظام العامة (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 إمكانية الاستخدام الكاملة للتغييرات المعمارية المستندة إلى 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
يجب أن تستخدم الأجهزة التي تعمل بالإصدار 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 للحصول على تعليمات واضحة بشأن عملية التثبيت. اتّبِع الخطوات التالية كإرشادات عامة:
- تأكَّد من توفّر ما يلي في الجهاز:
- 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-release
)، لذا لإرسال تصحيح GSI، عليك اتّباع الخطوات التالية:- أرسِل رمز التصحيح إلى فرع AOSP
android16-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
أو غير ذلك.