صورة النظام العامة (GSI) هي صورة نظام مع التكوينات المعدلة لأجهزة Android. يعتبر تطبيق Android خالصًا مع رمز Android Open Source Project (AOSP) غير المعدل والذي يمكن لأي جهاز Android يعمل بنظام Android 9 أو أعلى تشغيله بنجاح.
تُستخدم GSIs لإجراء اختبارات VTS و CTS-on-GSI. يتم استبدال صورة النظام لجهاز Android بـ GSI ثم اختبارها مع Vendor Test Suite (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 لاختبار الامتثال. وهذا يشمل التغييرات الرئيسية التالية من GSIs السابقة:
- اسم الهدف. تم تغيير اسم هدف GSI لاختبارات الامتثال إلى
gsi_$arch
. يتم الاحتفاظ بـ GSI بالاسم المستهدفaosp_$arch
لمطوري تطبيقات Android. يتم أيضًا تقليل خطة الاختبارCTS-on-GSI
لاختبار واجهة البائع. - تم التخلص التدريجي من GSI القديم. يزيل GSI 12 الحلول البديلة التي تتوافق مع الأجهزة التي تعمل بنظام التشغيل Android 8.0 أو 8.1 والتي لا تعمل بنظام Treblized بالكامل.
- Userdebug SEPolicy. يحتوي 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 لاختبار الامتثال. وهذا يشمل التغييرات الرئيسية التالية من GSIs السابقة:
- محتويات system_ext. يحدد Android 11 قسمًا جديدًا
system_ext
. يضع GSI محتويات ملحق النظام ضمن مجلدsystem/system_ext
. - أبكس. يحتوي GSI على كل من APEXes المسطحة والمضغوطة. يتم تحديد أي منها يتم استخدامه بواسطة خاصية النظام
ro.apex.updatable
في قسم البائع في وقت التشغيل. مرجع نظام التكوين لدعم تحديثات APEX للحصول على التفاصيل.
تغييرات Android 10 GSI
يجب أن تستخدم الأجهزة التي تعمل بنظام Android 10 أو التي تم تحديثها إليه Android 10 GSIs لاختبار الامتثال. وهذا يشمل التغييرات الرئيسية التالية من GSIs السابقة:
- بناء المستخدم. تمتلك 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 مع ramdisk وغير النظام كجذر ، استخدم GSIaosp_$arch_ab
. يدعمinit
الذي تمت ترقيته في ramdisk system.img مع تخطيط النظام كجذر. - تحقق من التمهيد. باستخدام GSI ، ما عليك سوى إلغاء قفل الجهاز. ليس من الضروري تعطيل التحقق من التمهيد.
تغييرات Android 9 GSI
يجب أن تستخدم الأجهزة التي تعمل بنظام Android 9 أو التي تم تحديثها إليه Android 9 GSIs لاختبار الامتثال. وهذا يشمل التغييرات الرئيسية التالية من GSIs السابقة:
- يدمج GSI والمحاكي. يتم إنشاء GSIs من صور النظام لمنتجات المحاكي ، على سبيل المثال ،
aosp_arm64
وaosp_x86
. - النظام كجذر. في الإصدارات السابقة من Android ، كان بإمكان الأجهزة التي لا تدعم تحديثات A / B تحميل صورة النظام ضمن دليل
/system
. في Android 9 ، يتم تثبيت جذر صورة النظام كجذر للجهاز. - واجهة بيندر 64 بت. في نظام التشغيل Android 8.x ، استخدمت GSIs 32 بت واجهة الموثق 32 بت. لا يدعم Android 9 واجهة الموثق 32 بت ، لذلك تستخدم كل من GSIs 32 بت و 64 بت واجهة الموثق 64 بت.
- تطبيق VNDK. في Android 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
) التي تم الإبلاغ عنها بواسطة نظام التشغيل تطابق معلومات الإصدار التي أبلغ عنها برنامج bootloader. تم الحصول على هذه المعلومات عادةً من رأس صورة التمهيد.
في Android 9 والإصدارات الأحدث ، تغير هذا المطلب لتمكين البائعين من تشغيل GSI. على وجه التحديد ، لا ينبغي أن يقوم Keymaster بالتحقق لأن معلومات الإصدار التي أبلغت عنها GSI قد لا تتطابق مع معلومات الإصدار التي تم الإبلاغ عنها بواسطة أداة تحميل التشغيل الخاصة بالمورد. بالنسبة للأجهزة التي تستخدم Keymaster 3 أو أقل ، يجب على البائعين تعديل تنفيذ Keymaster لتخطي التحقق (أو الترقية إلى Keymaster 4). للحصول على تفاصيل حول Keymaster ، راجع Keystore المدعوم بالأجهزة .
تنزيل GSIs
يمكنك تنزيل GSIs سابقة الإنشاء من موقع AOSP للتكامل المستمر (CI) على ci.android.com . إذا كان نوع GSI لمنصة أجهزتك غير متاح للتنزيل ، فراجع القسم التالي للحصول على تفاصيل حول إنشاء GSIs لأهداف محددة.
بناء GSIs
بدءًا من 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 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 | ARM64 | 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 ، يجب عليك:- قم بإرسال التصحيح إلى الفرع
master
لـ AOSP . - قطف الكرز التصحيح إلى
DESSERT -gsi
. - ابلغ عن الخطأ لمراجعة الكرز.
- قم بإرسال التصحيح إلى الفرع
- الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى. راجع التعليمات الواردة في الإبلاغ عن الأخطاء ، ثم تصفح أخطاء GSI أو قم بتقديمها.
نصائح
تغيير وضع شريط التنقل باستخدام ADB
عند التشغيل باستخدام GSI ، يتم تكوين وضع شريط التنقل عن طريق تجاوز البائع. يمكنك تغيير وضع شريط التنقل عن طريق تشغيل أمر adb التالي في وقت التشغيل.
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
حيث يمكن أن يكون mode ثلاثة أزرار ، threebutton
، twobutton
، gestural
إلى ذلك.