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

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

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

يمكنك تنزيل 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 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 للحصول على تعليمات واضحة حول الوميض. استخدم الخطوات التالية كمبدأ توجيهي عام:

  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. أرسل التصحيح إلى فرع AOSP main .
    2. Cherrypick التصحيح إلى DESSERT -gsi .
    3. قم بتقديم خطأ لمراجعة Cherrypick.
  • الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى. قم بمراجعة الإرشادات الموجودة في الإبلاغ عن الأخطاء ، ثم قم باستعراض أخطاء GSI أو تقديمها في ملف.

نصائح

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

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

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

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