تلتزم Google بتعزيز المساواة العرقية للمجتمعات السوداء. أنظر كيف.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

صورة النظام العامة (GSI) هي صورة نظام مع تكوينات معدلة لأجهزة Android. يعتبر تطبيق Android خالصًا مع كود مشروع Android Open Source Project (AOSP) غير المعدل الذي يمكن تشغيل أي جهاز Android يعمل بنظام Android 8.1 أو أعلى بنجاح.

تُستخدم GSIs لتشغيل اختبارات VTS و CTS-on-GSI. يتم استبدال صورة النظام لجهاز Android بـ GSI ثم اختبارها باستخدام Vendor Test Suite (VTS) و Compatibility Test Suite (CTS) للتأكد من أن الجهاز يطبق واجهات البائع بشكل صحيح مع أحدث إصدار من Android.

لبدء استخدام GSIs ، راجع الأقسام التالية للحصول على تفاصيل حول تكوينات GSI ( والاختلافات المسموح بها) ، والأنواع (Android GSI و Legacy GSI) ، وثنائيات البائعين وتبعيات VNDK . عندما تكون مستعدًا لاستخدام GSI ، قم بتنزيل GSI وإنشائه لهدف جهازك ، ثم قم بوميض GSI إلى جهاز Android.

تكوين وتباين GSI

يحتوي Android GSI الحالي على التكوين التالي:

  • التريبل. يتضمن GSI الدعم الكامل للتغييرات المعمارية القائمة على HIDL (المعروفة أيضًا باسم Treble ) التي تم تقديمها في Android 8.0 ، بما في ذلك دعم واجهات HIDL . يمكنك استخدام GSI على أي جهاز Android يستخدم واجهات بائع HIDL. (لمزيد من التفاصيل ، راجع موارد الهندسة المعمارية .)
  • تحقق من التمهيد. لا يحتوي GSI على حل تشغيل تم التحقق منه (مثل vboot 1.0 أو AVB ). لتحديث GSI إلى جهاز يتم تشغيله على Android 9 أو إصدار سابق ، يجب أن يكون لدى الجهاز طريقة لتعطيل التحقق من التمهيد.
  • نظام الملفات. يستخدم GSI نظام الملفات ext4.
  • تخطيط التقسيم. يستخدم GSI تخطيط قسم النظام كجذر .

يتضمن Android GSI الحالي الاختلافات الرئيسية التالية:

  • بنية وحدة المعالجة المركزية. دعم لتعليمات مختلفة لوحدة المعالجة المركزية (ARM ، x86 ، إلخ) وشهادة وحدة المعالجة المركزية (32 بت أو 64 بت).

أهداف GSI لاختبارات الامتثال ثلاثية

يتم تحديد GSI المستخدم لاختبار الامتثال بواسطة إصدار Android الذي يتم تشغيل الجهاز معه.

نوع الجهاز بناء الهدف
الأجهزة التي تعمل بنظام Android 10 aosp_$arch-user
الأجهزة التي تعمل بنظام Android 9 aosp_$arch-userdebug
الأجهزة التي تعمل بنظام Android 8.0 أو Android 8.1 aosp_$arch_ab-userdebug

يتم إنشاء جميع GSIs من قاعدة الرموز لنظام Android 10 ، وتحتوي كل بنية وحدة معالجة مركزية على ثنائي GSI مناظر (انظر قائمة أهداف الإنشاء في إنشاء GSIs ).

تغييرات Android 10 GSI

يجب أن تستخدم الأجهزة التي تعمل بنظام Android 10 GSIs لنظام Android 10 لاختبار الامتثال. وهذا يشمل التغييرات الرئيسية التالية من 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 و non-system-as-root ، استخدم GSI aosp_$arch_ab . يدعم init تمت ترقيتها في ramdisk نظام OEM.img مع تخطيط النظام كجذر.

لاختبار الأجهزة التي يتم إطلاقها على Android 9 أو 10 باستخدام CTS-on-GSI ، استخدم أهداف بناء Android GSI .

تراث GSI

_ab القديمة المسماة مع اللاحقة _ab (على سبيل المثال ، aosp_arm64_ab ). تم إنشاء GSIs هذه من شجرة مصادر Android 10 ولكنها تحتوي على التكوينات التالية المتوافقة مع السابقة للأجهزة التي تمت ترقيتها من Android 8 أو 8.1:

  • مساحة المستخدمين 32 بت + واجهة الموثق 32 بت. يمكن لـ GSIs 32 بت الاستمرار في استخدام واجهة الموثق 32 بت.
  • 8.1 VNDK. يمكن للأجهزة استخدام 8.1 VNDK المضمنة.
  • تحميل أدلة. تستخدم بعض الأجهزة القديمة الدلائل كمؤشرات تحميل (على سبيل المثال ، /bluetooth و /firmware/radio و /persist ).

لاختبار الأجهزة التي يتم إطلاقها على Android 8 أو 8.1 باستخدام CTS-on-GSI ، استخدم أهداف إنشاء Legacy GSI .

تغييرات Android 9 GSI

تتضمن Android 9 GSIs التغييرات الرئيسية التالية من GSIs السابقة:

  • يدمج GSI والمحاكي. يتم إنشاء aosp_arm64 من صور النظام لمنتجات المحاكي ، على سبيل المثال ، 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. في 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 المدعومة بالأجهزة .

ثنائيات البائع وتبعيات VNDK

الأجهزة التي تقوم بالترقية إلى Android 10 لها مسارات ترقية مختلفة اعتمادًا على إصدار ثنائيات البائع المستخدمة على الجهاز والتكوينات المتعلقة بـ VNDK المستخدمة لبناء الجهاز. يلخص الجدول التالي دعم GSI القديم للأجهزة التي تمت ترقيتها.

حالة الاستخدام بائع
ثنائيات
الإصدار
BOARD_VNDK_VERSION تراث GSI
إصدار نظام الثنائيات
دعم GSI القديم
0 8.0 (أي) 10 لا
1 8.1 (فارغة) 10 لا
2 8.1 current 10 نعم
3 10 current 10 نعم

أكثر حالات الاستخدام المدعومة شيوعًا هي # 2 ، حيث تدعم GSIs القديمة الأجهزة التي تعمل بنظام Android 8.1 والتي تم إنشاؤها باستخدام BOARD_VNDK_VERSION على current .

الحالة رقم 1 غير مدعومة. في هذه الحالة ، لا تدعم BOARD_VNDK_VERSION القديمة الأجهزة التي تعمل بنظام Android 8.1 حيث تم حذف BOARD_VNDK_VERSION من الإصدار. لا يمكن دعم هذه الأجهزة لأن ثنائيات مورديها تعتمد على مكتبات Android 8.1 غير VNDK المشتركة ، والتي لا يتم تضمينها في GSIs القديمة. لجعل هذه الأجهزة متوافقة مع GSI القديم ، يجب عليك تنفيذ أحد الإجراءات التالية:

  • تمكين BOARD_VNDK_VERSION بدون BOARD_VNDK_RUNTIME_DISABLE (حالة الاستخدام رقم 2).

    أو

  • قم بنقل / ترقية ثنائيات البائع للاعتماد على المكتبات المشتركة من Android 10 (حالة الاستخدام # 3).

تنزيل GSIs

يمكنك تنزيل GSIs مسبقة الصنع من موقع AOSP للتكامل المستمر (CI) على ci.android.com . إذا كان نوع GSI لمنصة الأجهزة الخاصة بك غير متوفر للتنزيل ، فراجع القسم التالي للحصول على تفاصيل حول إنشاء GSIs لأهداف محددة.

بناء GSIs

بدءًا من Android 9 ، يحتوي كل إصدار Android على فرع GSI باسم DESSERT -gsi على AOSP (على سبيل المثال ، android10-gsi هو فرع GSI على Android 10). تتضمن فروع GSI محتوى Android مع جميع تصحيحات الأمان المطبقة وتصحيحات GSI .

لإنشاء GSI ، قم بإعداد شجرة مصدر Android عن طريق التنزيل من فرع GSI واختيار هدف إنشاء GSI . استخدم جداول أهداف الإنشاء أدناه لتحديد إصدار GSI الصحيح لجهازك. بعد اكتمال الإنشاء ، تكون GSI هي صورة النظام (أي ، system.img ) وتظهر في مجلد الإخراج out/target/product/ generic_arm64 . ينتج عن vbmeta.img أيضًا vbmeta.img ، والذي يمكنك استخدامه لتعطيل التحقق من التمهيد على الأجهزة باستخدام التمهيد الذي تم التحقق منه من Android .

على سبيل المثال ، لإنشاء GSI لإنشاء الهدف aosp_arm64-userdebug على فرع GSI android10-gsi ، قم بتشغيل الأوامر التالية.

$ repo init -u https://android.googlesource.com/platform/manifest -b android10-gsi
$ repo sync -cq
$ source build/envsetup.sh
$ lunch aosp_arm64-userdebug
$ make -j4

أهداف GSI لنظام Android

أهداف بناء GSI التالية مخصصة للأجهزة التي يتم إطلاقها على Android 9 أو أعلى. نظرًا لانخفاض الاختلافات بين البنى ، لا يتضمن Android 10 سوى أربعة منتجات GSI.

اسم GSI قوس وحدة المعالجة المركزية شاهد واجهة الموثق النظام كجذر بناء الهدف
aosp_arm ذراع 64 ص aosp_arm-user
aosp_arm-userdebug
aosp_arm64 ARM64 64 ص aosp_arm64-user
aosp_arm64-userdebug
aosp_x86 × 86 64 ص aosp_x86-user
aosp_x86-userdebug
aosp_x86_64 x86-64 64 ص aosp_x86_64-user
aosp_x86_64-userdebug

أهداف GSI القديمة تبني

أهداف بناء GSI القديمة التالية مخصصة للأجهزة التي تقوم بالترقية من Android 8.0 أو 8.1 إلى Android 10. تتضمن أسماء GSI القديمة اللاحقة _ab لتمييزها عن أسماء Android 10 GSI.

اسم GSI قوس وحدة المعالجة المركزية شاهد واجهة الموثق النظام كجذر بناء الهدف
aosp_arm_ab ذراع 32 ص aosp_arm_ab-userdebug
aosp_arm_64b_ab ذراع 64 ص aosp_arm_64b_ab-userdebug
aosp_arm64_ab ARM64 64 ص aosp_arm64_ab-userdebug
aosp_x86_ab × 86 32 ص aosp_x86_ab-userdebug
aosp_x86_64_ab x86-64 64 ص aosp_x86_64_ab-userdebug

متطلبات وميض GSIs

يمكن أن يكون لأجهزة Android تصميمات مختلفة ، لذلك لا يوجد أمر عام أو مجموعة من التعليمات الخاصة بوميض GSI لتطبيقه على جميع الأجهزة. تحقق مع الشركة المصنعة لجهاز Android للحصول على تعليمات وامض صريحة. استخدم الخطوات التالية كدليل عام:

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

على سبيل المثال ، وميض GSI إلى أي جهاز Pixel:

  1. قم fastboot لوضع fastboot وفتح برنامج bootloader . تحتاج الأجهزة التي تدعم fastbootd أيضًا إلى التمهيد في fastbootd خلال:
    $ fastboot reboot fastboot
  2. قم بتعطيل التحقق من التمهيد (AVB) عن طريق وميض vbmeta.img :
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  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. Cherrypick التصحيح إلى DESSERT -gsi .
    3. قم بتقديم ملف خطأ لمراجعة الكرز.
  • الإبلاغ عن أخطاء GSI أو تقديم اقتراحات أخرى. قم بمراجعة التعليمات الموجودة في Reporting Bugs ، ثم تصفح أو قم بإرسال ملف GSI bugs .

نصائح

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

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

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

حيث mode يمكن أن يكون threebutton ، twobutton ، gestural ، وهلم جرا.