صور النظام العامة

صورة النظام العامة (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 الحالي على التكوين التالي:

يتضمن 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 من GSI system.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 وغير النظام كجذر ، استخدم GSI aosp_$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 للحصول على إرشادات وامضة صريحة. استخدم الخطوات التالية كمبدأ توجيهي عام:

  1. تأكد من أن الجهاز يحتوي على ما يلي:
    • ثلاثي
    • طريقة لفتح الأجهزة (بحيث يمكن وميضها باستخدام fastboot )
    • حالة غير مقفلة لجعلها قابلة للاشتعال عبر fastboot (للتأكد من أن لديك أحدث إصدار من fastboot ، قم ببنائه من شجرة مصدر Android.)
  2. امسح قسم النظام الحالي ، ثم قم بوميض GSI إلى قسم النظام.
  3. امسح بيانات المستخدم وامسح البيانات من الأقسام الضرورية الأخرى (على سبيل المثال ، بيانات المستخدم وأقسام النظام).
  4. أعد تشغيل الجهاز.

على سبيل المثال ، لفلاش GSI لأي جهاز Pixel:

  1. التمهيد لوضع fastboot وفتح أداة تحميل التشغيل.
  2. تحتاج الأجهزة التي تدعم fastbootd أيضًا إلى التمهيد في fastbootd عن طريق:
    $ fastboot reboot fastboot
  3. امسح GSI ووميضه إلى قسم النظام:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. امسح بيانات المستخدم وامسح البيانات من الأقسام الضرورية الأخرى (على سبيل المثال ، بيانات المستخدم وأقسام النظام):
    $ fastboot -w
  5. إعادة التشغيل:
    $ fastboot reboot
في الأجهزة التي تعمل بنظام Android 10 أو الأحدث التي تحتوي على أقسام نظام أصغر ، قد تظهر رسالة الخطأ التالية عند وميض GSI:
    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 ، يجب عليك:
    1. قم بإرسال التصحيح إلى الفرع master لـ AOSP .
    2. قطف الكرز التصحيح إلى DESSERT -gsi .
    3. ابلغ عن الخطأ لمراجعة الكرز.
  • الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى. راجع التعليمات الواردة في الإبلاغ عن الأخطاء ، ثم تصفح أخطاء GSI أو قم بتقديمها.

نصائح

تغيير وضع شريط التنقل باستخدام ADB

عند التشغيل باستخدام GSI ، يتم تكوين وضع شريط التنقل عن طريق تجاوز البائع. يمكنك تغيير وضع شريط التنقل عن طريق تشغيل أمر adb التالي في وقت التشغيل.

adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode

حيث يمكن أن يكون mode ثلاثة أزرار ، threebutton ، twobutton ، gestural إلى ذلك.