صورة النظام العامة (GSI) هي صورة نظام ذات تكوينات معدلة لأجهزة Android. يعتبر تطبيقًا خالصًا لنظام Android مع كود مشروع Android مفتوح المصدر (AOSP) غير المعدل والذي يمكن لأي جهاز يعمل بنظام Android يعمل بنظام Android 9 أو أعلى تشغيله بنجاح.
تُستخدم GSIs لتشغيل اختبارات VTS وCTS-on-GSI. يتم استبدال صورة النظام لجهاز Android بـ GSI ثم يتم اختبارها باستخدام مجموعة اختبار البائع (VTS) ومجموعة اختبار التوافق (CTS) للتأكد من أن الجهاز ينفذ واجهات البائع بشكل صحيح مع أحدث إصدار من Android.
لبدء استخدام GSIs، قم بمراجعة الأقسام التالية للحصول على تفاصيل حول تكوينات GSI (والتباينات المسموح بها) والأنواع . عندما تكون جاهزًا لاستخدام GSI، قم بتنزيل GSI وإنشائه لهدف جهازك، ثم قم بتشغيل GSI على جهاز Android.
تكوين GSI والفروق
يحتوي Android GSI الحالي على التكوين التالي:
- ثلاثة أضعاف. تتضمن GSI دعمًا كاملاً للتغييرات المعمارية المستندة إلى AIDL/HIDL (المعروفة أيضًا باسم Treble )، بما في ذلك دعم واجهات AIDL وواجهات HIDL . يمكنك استخدام GSI على أي جهاز Android يستخدم واجهات البائع AIDL/HIDL. (لمزيد من التفاصيل، راجع موارد الهندسة المعمارية .)
- نظام الملفات. يستخدم GSI نظام الملفات ext4.
يتضمن Android GSI الحالي الفروق الرئيسية التالية:
- بنية وحدة المعالجة المركزية. دعم تعليمات وحدة المعالجة المركزية المختلفة (ARM، x86، وما إلى ذلك) ومستوى البت لوحدة المعالجة المركزية (32 بت أو 64 بت).
أهداف GSI لاختبارات الامتثال الثلاثية
يتم تحديد GSI المستخدم لاختبار الامتثال من خلال إصدار Android الذي يتم تشغيل الجهاز به.
نوع الجهاز | بناء الهدف |
---|---|
الأجهزة التي تعمل بنظام التشغيل Android 12 | gsi_$arch-user (توقيع) |
الأجهزة التي تعمل بنظام Android 11 | gsi_$arch-user (توقيع) |
الأجهزة التي تعمل بنظام Android 10 | gsi_$arch-user (توقيع) |
الأجهزة التي تعمل بنظام Android 9 | gsi_$arch-userdebug |
تم إنشاء جميع GSIs من قاعدة تعليمات Android 12، وكل بنية وحدة المعالجة المركزية لها ثنائي GSI مطابق (راجع قائمة أهداف البناء في Building GSIs ).
تغييرات على نظام Android 12 GSI
يجب على الأجهزة التي يتم تشغيلها باستخدام Android 12 أو تحديثها أن تستخدم Android 12 GSIs لاختبار الامتثال. يتضمن ذلك التغييرات الرئيسية التالية من مؤشرات GSI السابقة:
- اسم الهدف. تم تغيير اسم هدف GSI لاختبارات الامتثال إلى
gsi_$arch
. يتم الاحتفاظ بـ GSI بالاسم المستهدفaosp_$arch
لمطوري تطبيقات Android. تم أيضًا تقليل خطة اختبارCTS-on-GSI
لاختبار واجهة البائع. - تم التخلص التدريجي من نظام GSI القديم. يزيل GSI 12 الحلول البديلة التي تستوعب أجهزة Android 8.0 أو 8.1 التي لم يتم تحويلها إلى Treblized بشكل كامل.
- سياسة Userdebug SE. يحتوي GSI
gsi_$arch
علىuserdebug_plat_sepolicy.cil
. عند وميضvendor_boot-debug.img
أوboot-debug.img
، سيقوم/system/bin/init
بتحميلuserdebug_plat_sepolicy.cil
من GSIsystem.img
. قم بالرجوع إلى اختبار VTS باستخدام Debug Ramdisk للحصول على التفاصيل.
تغييرات Android 11 GSI
يجب على الأجهزة التي يتم تشغيلها باستخدام Android 11 أو تحديثها أن تستخدم Android 11 GSIs لاختبار الامتثال. يتضمن ذلك التغييرات الرئيسية التالية من مؤشرات GSI السابقة:
- محتويات system_ext. يحدد Android 11 قسمًا جديدًا
system_ext
. يضع GSI محتويات ملحق النظام ضمن المجلدsystem/system_ext
. - قمم. يحتوي GSI على APEXes المسطحة والمضغوطة. يتم تحديد الخيار الذي سيتم استخدامه من خلال خاصية النظام
ro.apex.updatable
في قسم البائع في وقت التشغيل. مرجع تكوين النظام لدعم تحديثات APEX للحصول على التفاصيل.
تغييرات على نظام Android 10 GSI
يجب على الأجهزة التي يتم تشغيلها باستخدام Android 10 أو تحديثها أن تستخدم Android 10 GSIs لاختبار الامتثال. يتضمن ذلك التغييرات الرئيسية التالية من مؤشرات GSI السابقة:
- بناء المستخدم. يحتوي GSI على إصدار مستخدم من Android 10. في Android 10، يمكن استخدام إصدار المستخدم GSI في اختبار الامتثال لـ CTS-on-GSI/VTS. راجع اختبار VTS باستخدام Debug Ramdisk للحصول على التفاصيل.
- تنسيق غير مجزأ. تم إنشاء GSI مع الأهداف
aosp_$arch
بتنسيق غير مُوزع. يمكنك استخدامimg2simg
لتحويل GSI غير المتناثر إلى تنسيق متفرق إذا لزم الأمر. - النظام كجذر. تم التخلص التدريجي من هدف بناء GSI القديم المسمى
aosp_$arch_a
. بالنسبة للأجهزة التي تمت ترقيتها من Android 8 أو 8.1 إلى Android 10 المزودة بذاكرة وصول عشوائي وغير تابعة للنظام كجذر، استخدم GSIaosp_$arch_ab
القديم. يدعمinit
الذي تمت ترقيته في ramdisk نظام OEM.img مع تخطيط النظام كجذر. - التحقق من التمهيد. باستخدام GSI ما عليك سوى فتح قفل الجهاز. ليس من الضروري تعطيل التحقق من التمهيد.
تغييرات أندرويد 9 جي إس آي
يجب على الأجهزة التي يتم تشغيلها باستخدام Android 9 أو تحديثها أن تستخدم Android 9 GSIs لاختبار التوافق. يتضمن ذلك التغييرات الرئيسية التالية من مؤشرات GSI السابقة:
- يدمج GSI والمحاكي. يتم إنشاء GSIs من صور النظام لمنتجات المحاكيات، على سبيل المثال،
aosp_arm64
وaosp_x86
. - النظام كجذر. في الإصدارات السابقة من Android، كان بإمكان الأجهزة التي لا تدعم تحديثات A/B تحميل صورة النظام ضمن دليل
/system
. في Android 9، يتم تثبيت جذر صورة النظام كجذر للجهاز. - واجهة الموثق 64 بت. في Android 8.x، استخدمت GSIs 32 بت واجهة الموثق 32 بت. لا يدعم Android 9 واجهة الموثق 32 بت، لذلك تستخدم كل من GSIs 32 بت وGSIs 64 بت واجهة الموثق 64 بت.
- إنفاذ VNDK. في أندرويد 8.1، كان 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، راجع Keystore المدعوم بالأجهزة .
تحميل جي إس آي
يمكنك تنزيل GSIs المعدة مسبقًا من موقع AOSP للتكامل المستمر (CI) على ci.android.com . إذا كان نوع GSI للنظام الأساسي لجهازك غير متاح للتنزيل، فارجع إلى القسم التالي للحصول على تفاصيل حول إنشاء GSIs لأهداف محددة.
بناء مؤشرات 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 build target 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 التالية مخصصة للأجهزة التي تعمل بنظام التشغيل Android 9 أو أعلى.
اسم GSI | قوس وحدة المعالجة المركزية | بت واجهة الموثق | النظام كجذر | بناء الهدف |
---|---|---|---|---|
gsi_arm | ذراع | 64 | ي | gsi_arm-user gsi_arm-userdebug |
gsi_arm64 | أرم64 | 64 | ي | gsi_arm64-user gsi_arm64-userdebug |
gsi_x86 | x86 | 64 | ي | gsi_x86-user gsi_x86-userdebug |
gsi_x86_64 | x86-64 | 64 | ي | gsi_x86_64-user gsi_x86_64-userdebug |
متطلبات وميض GSIs
يمكن أن يكون لأجهزة Android تصميمات مختلفة، لذلك لا يوجد أمر عام أو مجموعة من التعليمات لتحديث GSI لتطبيقه على جميع الأجهزة. تحقق مع الشركة المصنعة لجهاز Android للحصول على تعليمات واضحة حول الوميض. استخدم الخطوات التالية كمبدأ توجيهي عام:
- تأكد من أن الجهاز يحتوي على ما يلي:
- ثلاثة أضعاف
- طريقة لفتح قفل الأجهزة (حتى يتم تفليشها باستخدام
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
Resizing 'system_a' FAILED (remote: 'Not enough space to resize partition') fastboot: error: Command failedاستخدم الأمر التالي لحذف قسم المنتج وتحرير مساحة لقسم النظام. يوفر هذا مساحة إضافية لوميض GSI:
$ fastboot delete-logical-partition product_aيجب أن يتطابق postfix
_a
مع معرف الفتحة الخاص بقسم النظام، مثل system_a
في هذا المثال.المساهمة في GSIs
يرحب Android بمساهماتك في تطوير GSI. يمكنك المشاركة والمساعدة في تحسين GSI من خلال:
- إنشاء تصحيح GSI.
DESSERT -gsi
ليس فرع تطوير ويقبل فقط الاختيارات من فرع AOSP الرئيسي، لذا لإرسال تصحيح GSI، يجب عليك:- أرسل التصحيح إلى فرع AOSP
main
. - Cherrypick التصحيح إلى
DESSERT -gsi
. - قم بتقديم خطأ لمراجعة Cherrypick.
- أرسل التصحيح إلى فرع AOSP
- الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى. قم بمراجعة الإرشادات الموجودة في الإبلاغ عن الأخطاء ، ثم قم باستعراض أخطاء GSI أو تقديمها في ملف.
نصائح
قم بتغيير وضع شريط التنقل باستخدام adb
عند التشغيل باستخدام GSI، يتم تكوين وضع شريط التنقل عن طريق تجاوز البائع. يمكنك تغيير وضع شريط التنقل عن طريق تشغيل أمر adb التالي في وقت التشغيل.
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
حيث يمكن أن يكون mode threebutton
، twobutton
، gestural
، وما إلى ذلك.