صورة النظام العامة (GSI) هي صورة نظام تم ضبط إعداداتها لأجهزة Android. ويُعدّ هذا الإصدار من Android خالصًا مع رمز "المشروع المفتوح المصدر لنظام Android" (AOSP) غير المعدَّل الذي يمكن لأي جهاز Android يعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث تشغيله بنجاح.
يتم استخدام شهادات GSI لإجراء اختبارات VTS وCTS على GSI. يتم استبدال صورة النظام لجهاز Android بـ "صورة نظام Android العام"، ثم يتم اختبارها باستخدام مجموعة اختبار المورّدين (VTS) ومجموعة أدوات اختبار التوافق (CTS) للتأكّد مما يلي: أنّ الجهاز ينفِّذ واجهات المورّدين بشكل صحيح مع أحدث إصدار من Android.
للبدء في استخدام فهارس الجلسة العامة، راجِع الأقسام التالية للحصول على تفاصيل عن إعدادات فهارس الجلسة العامة (والمتغيرات المسموح بها) وأنواعها. عندما تكون مستعدًا لاستخدام صورة نظام التشغيل العام (GSI)، يمكنك تنزيل صورة GSI وإنشاءها لجهازك المستهدف، ثم فلاشة صورة GSI على جهاز Android.
إعدادات GSI وتبايناتها
يتضمّن الإصدار الحالي من "صورة نظام Android الأساسية" الإعدادات التالية:
- صوت عالي الطبقة: يتضمّن GSI دعمًا كاملاً لالتغييرات المعمارية المستندة إلى AIDL/HIDL (المعروفة أيضًا باسم Treble)، بما في ذلك دعم واجهات AIDL وواجهات HIDL. يمكنك استخدام واجهة GSI على أي جهاز Android يستخدم واجهات مطوّري البرامج AIDL/HIDL. (لمزيد من التفاصيل، يُرجى الاطّلاع على موارد التصميم.)
- نظام الملفات: يستخدم GSI نظام الملفات ext4.
تتضمّن أداة 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 للحصول على تعليمات واضحة حول عملية الفلاش. يمكنك اتّباع الخطوات التالية كإرشادات عامة:
- تأكَّد من توفُّر ما يلي على الجهاز:
- Treblized
- طريقة لفتح قفل الأجهزة (كي يتم إعادة تحميلها باستخدام
fastboot
) - حالة غير مقفلة لكي تتمكّن من فلاشها عبر
fastboot
(لضمان توفّر أحدث إصدار منfastboot
، يمكنك برمجته من شجرة مصادر Android).
- امسح قسم النظام الحالي، ثم وضِّع صورة GSI على قسم النظام.
- امسح بيانات المستخدمين وامسح البيانات من الأقسام الأخرى الضرورية (على سبيل المثال، بيانات المستخدمين وأقسام النظام).
- أعد تشغيل الجهاز.
على سبيل المثال، لفلاش ملف 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، عليك إجراء ما يلي:- أرسِل الإصلاح إلى الفرع
main
في AOSP. - اختَر التصحيح الذي تريده وطبِّقه على الإصدار
DESSERT-gsi
. - الإبلاغ عن الخطأ لتتم مراجعة إصدار cherrypick
- أرسِل الإصلاح إلى الفرع
- الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى راجِع التعليمات الواردة في مقالة الإبلاغ عن الأخطاء، ثم تصفَّح أو قدِّم أخطاء GSI.
نصائح
تغيير وضع شريط التنقّل باستخدام adb
عند التشغيل باستخدام واجهة GSI، يتم ضبط وضع شريط التنقّل من خلال إلغاء إعدادات المورّد. يمكنك تغيير وضع شريط التنقّل من خلال تنفيذ الأمر adb التالي في وقت التشغيل.
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
حيث يمكن أن يكون mode هو threebutton
أو twobutton
gestural
أو غير ذلك.