صورة النظام العامة (GSI) هي صورة نظام تم ضبط إعداداتها لأجهزة Android. ويُعدّ هذا الإصدار من Android خالصًا مع رمز "المشروع المفتوح المصدر لنظام Android" (AOSP) غير المعدَّل الذي يمكن لأي جهاز Android يعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث تشغيله بنجاح.
يتم استخدام شهادات GSI لإجراء اختبارات VTS وCTS على GSI. يتم استبدال صورة النظام لجهاز Android بـ "صورة نظام Android العام"، ثم يتم اختبارها باستخدام مجموعة اختبار المورّد (VTS) ومجموعة أدوات اختبار التوافق (CTS) للتأكّد من أنّ الجهاز ينفّذ واجهات المورّد بشكل صحيح مع أحدث إصدار من Android.
للبدء في استخدام فهارس البحث العام، راجِع الأقسام التالية للحصول على تفاصيل عن إعدادات فهارس البحث العام (والمتغيرات المسموح بها) وأنواعها. عندما تكون مستعدًا لاستخدام صورة نظام التشغيل العام (GSI)، يمكنك تنزيل صورة GSI وإنشاءها لجهازك المستهدف، ثم فلاشة صورة GSI على جهاز Android.
إعدادات GSI واختلافاتها
يتضمّن الإصدار الحالي من Android GSI الإعدادات التالية:
- الصوت العالي الطبقة: يتضمّن GSI دعمًا كاملاً ل التغييرات المعمارية المستندة إلى AIDL/HIDL (المعروفة أيضًا باسم Treble)، بما في ذلك دعم واجهات AIDL و واجهات HIDL. يمكنك استخدام واجهة GSI على أي جهاز Android يستخدم واجهات مطوّري البرامج AIDL/HIDL. (لمزيد من التفاصيل، يُرجى الاطّلاع على موارد التصميم.)
- نظام الملفات: يستخدم GSI نظام الملفات ext4.
تتضمّن أداة Android GSI الحالية الاختلافات الرئيسية التالية:
- بنية وحدة المعالجة المركزية (CPU) إتاحة تعليمات مختلفة لوحدة المعالجة المركزية (ARM وx86 وما إلى ذلك) وعدد بتات وحدة المعالجة المركزية (32 بت أو 64 بت)
استهدافات GSI لاختبارات الامتثال لمعايير Treble
يتم تحديد حزمة GSI المستخدَمة لاختبار الامتثال حسب إصدار Android الذي يتم تشغيل الجهاز به.
نوع الجهاز | إنشاء استهداف |
---|---|
الأجهزة التي تعمل بالإصدار 15 من نظام التشغيل Android | gsi_$arch-user (موقَّع) |
الأجهزة التي تعمل بنظام Android 14 | gsi_$arch-user (موقَّع) |
الأجهزة التي تعمل بنظام Android 13 | gsi_$arch-user (موقَّع) |
الأجهزة التي تعمل بالإصدار Android 12L | gsi_$arch-user (موقَّع) |
الأجهزة التي تعمل بالإصدار 12 من نظام التشغيل Android | 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)
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
يجب أن تستخدم الأجهزة التي تعمل بنظام التشغيل Android 11 أو تم تحديثها إليه حِزم GSI لنظام التشغيل Android 11 لاختبار الامتثال. ويشمل ذلك التغييرات الرئيسية التالية عن نطاقات GSI السابقة:
- محتويات system_ext يحدِّد الإصدار 11 من نظام التشغيل Android
system_ext
قسمًا جديدًا. تضع أداة GSI محتوى إضافة النظام ضمن المجلدsystem/system_ext
. - APEXes يحتوي GSI على كلّ من ملفّات APEX المسطّحة والمضغوطة.
يتم تحديد أيّ منها سيتم استخدامه من خلال سمة النظام
ro.apex.updatable
في قسم المورّد أثناء التشغيل. يُرجى الرجوع إلى مقالة ضبط النظام لتتوافق مع تحديثات APEX للاطّلاع على التفاصيل.
التغييرات في صورة النظام العام (GSI) لنظام التشغيل Android 10
يجب أن تستخدم الأجهزة التي تعمل بالإصدار 10 من Android أو تم تحديثها إليه مجموعات حزمات البرامج الأساسية لنظام التشغيل 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 أو تم تحديثها إليه مجموعات حزمات البرامج الأساسية (GSI) لنظام التشغيل Android 9 من أجل اختبار الامتثال. ويشمل ذلك التغييرات الرئيسية التالية عن نطاقات GSI السابقة:
- دمج صورة النظام العام (GSI) والمحاكي يتم إنشاء GSI من ملف تعريف برمجي
لنظام منتجات المحاكي، مثل
aosp_arm64
وaosp_x86
. - النظام بصفتها الجذر: في الإصدارات السابقة من Android، كانت الأجهزة
التي لا تتوافق مع تحديثات A/B يمكنها تركيب صورة النظام ضمن الدليل
/system
. في Android 9، يتم تركيب ملف "ملف تهيئة الجهاز" لصورة النظام كملف تهيئة الجهاز. - واجهة رابط 64 بت في الإصدار 8.x من Android، كانت أدوات GSI ذات الـ 32 بت تستخدِم واجهة الربط ذات الـ 32 بت. لا يتوافق الإصدار 9 من Android مع واجهة الربط بنظام التشغيل 32 بت، لذا تستخدم كل من واجهة GSI بنظام التشغيل 32 بت واجهة الربط بنظام التشغيل 64 بت.
- فرض مجموعة تطوير البرامج الأصلية للمورّدين (VNDK) في الإصدار 8.1 من نظام التشغيل Android، كان حزمة VNDK اختيارية.
اعتبارًا من Android 9، أصبح استخدام حزمة VNDK إلزاميًا، لذا
BOARD_VNDK_VERSION
يجب ضبطها. - خاصية النظام المتوافقة: يتيح نظام التشغيل Android
9 التحقّق من إمكانية الوصول إلى سمة نظام متوافقة (
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 قد لا تتطابق مع معلومات الإصدار التي يُبلغ عنها مشغّل الإقلاع الخاص بالمورّد. بالنسبة إلى الأجهزة التي تستخدم 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
أهداف إنشاء صور نظام Android العام (GSI)
إنّ استهدافات إنشاء 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 للحصول على تعليمات واضحة حول عملية الفلاش. يمكنك اتّباع الخطوات التالية كإرشادات عامة:
- تأكَّد من توفُّر ما يلي في الجهاز:
- Treblized
- طريقة لفتح قفل الأجهزة (حتى يمكن إعادة تحميلها باستخدام
fastboot
) - حالة غير مقفلة لكي يمكن فلاشها من خلال
fastboot
(لضمان توفُّر أحدث إصدار منfastboot
، عليك برمجته من شجرة مصدر Android).
- امسح قسم النظام الحالي، ثم شغِّل رمز النظام الأساسي المُعدَّ للأجهزة المتعددة على قسم النظام.
- امسح بيانات المستخدم وامحُ البيانات من الأقسام الأخرى اللازمة (مثل بيانات المستخدم وأقسام النظام).
- أعد تشغيل الجهاز.
على سبيل المثال، لفلاش ملف GSI على أي جهاز Pixel:
- ابدأ تشغيل الجهاز في
وضع
fastboot
و افتح قفل برنامج الإقلاع. - يجب أيضًا أن يتم تشغيل الأجهزة المتوافقة مع
fastbootd
في نظام التشغيلfastbootd
من خلال:$ fastboot reboot fastboot
- امسح رمز النظام الأساسي المُعدَّ للأجهزة المتعددة (GSI) وفلِشه على قسم النظام:
$ fastboot erase system $ fastboot flash system system.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
في هذا المثال.
المساهمة في صور الأنظمة العامة
نرحب في Android بمساهماتك في تطوير مبادرة GSI. يمكنك المشاركة والمساعدة في تحسين مبادرة GSI من خلال:
- إنشاء تصحيح لنظام التشغيل GSI:
DESSERT-gsi
ليس فرع تطوير، ولا يقبل سوى اختيار أجزاء من الفرع الرئيسي لنظام التشغيل AOSP، لذا لإرسال تصحيح GSI، عليك إجراء ما يلي:- أرسِل الإصلاح إلى الفرع
AOSP
main
. - اختَر التصحيح الذي تريده وطبِّقه على الإصدار
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
أو غير ذلك.