תמונות מערכת כלליות

תמונת מערכת גנרית (GSI) היא תמונת מערכת עם תצורות מותאמות עבור מכשירי אנדרואיד. זה נחשב למימוש אנדרואיד טהור עם קוד Android Open Source Project (AOSP) ללא שינוי שכל מכשיר אנדרואיד עם אנדרואיד 9 ומעלה יכול להפעיל בהצלחה.

GSIs משמשים להפעלת בדיקות VTS ו-CTS-on-GSI. תמונת המערכת של מכשיר אנדרואיד מוחלפת ב-GSI ולאחר מכן נבדקת עם ה- Vendor Test Suite (VTS) ו- Comatibility Test Suite (CTS) כדי להבטיח שהמכשיר מיישם ממשקי ספקים בצורה נכונה עם הגרסה העדכנית ביותר של אנדרואיד.

כדי להתחיל עם GSIs, עיין בסעיפים הבאים לפרטים על תצורות GSI (והשונות המותרות) וסוגים . כאשר אתה מוכן להשתמש ב-GSI, הורד ובנה את ה-GSI עבור יעד המכשיר שלך, ולאחר מכן הבזק את ה-GSI למכשיר אנדרואיד.

תצורת GSI ושונות

ל-Android GSI הנוכחי יש את התצורה הבאה:

ה-Android GSI הנוכחי כולל את השונות העיקריות הבאות:

  • ארכיטקטורת מעבד. תמיכה בהוראות מעבד שונות (ARM, x86 וכו') ובסיביות מעבד (32 סיביות או 64 סיביות).

יעדי GSI עבור מבחני תאימות לטרבל

ה-GSI המשמש לבדיקת תאימות נקבע על פי גרסת האנדרואיד שאיתה המכשיר מופעל.

סוג מכשיר בנה יעד
מכשירים מושקים עם אנדרואיד 12 gsi_$arch-user (חתום)
מכשירים מושקים עם אנדרואיד 11 gsi_$arch-user (חתום)
מכשירים מושקים עם אנדרואיד 10 gsi_$arch-user (חתום)
מכשירים מושקים עם אנדרואיד 9 gsi_$arch-userdebug

כל ה-GSIs בנויים מבסיס הקוד של אנדרואיד 12, ולכל ארכיטקטורת CPU יש GSI בינארי תואם (ראה את רשימת יעדי הבנייה בבניית GSIs ).

שינויים ב- Android 12 GSI

מכשירים המופעלים עם או מעודכנים לאנדרואיד 12 חייבים להשתמש ב-Android 12 GSI לבדיקת תאימות. זה כולל את השינויים העיקריים הבאים מ-GSI קודמים:

  • שם היעד. שם יעד ה-GSI עבור מבחני תאימות שונה ל- gsi_$arch . ה-GSI עם שם היעד aosp_$arch נשמר עבור מפתחי אפליקציות אנדרואיד. תוכנית הבדיקה CTS-on-GSI מופחתת גם לבדיקת ממשק הספק.
  • ה-GSI מדור קודם הופסק בהדרגה. GSI 12 מסיר את הדרכים לעקיפת הבעיה במכשירי אנדרואיד 8.0 או 8.1 שאינם בטרבליזציה מלאה.
  • Userdebug SEPolicy. ה-GSI gsi_$arch מכיל userdebug_plat_sepolicy.cil . כאשר מהבהב ה- OEM הספציפי 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 GSI לבדיקת תאימות. זה כולל את השינויים העיקריים הבאים מ-GSI קודמים:

  • system_ext contents. אנדרואיד 11 מגדירה מחיצה חדשה system_ext . GSI שם את תוכן תוסף המערכת תחת התיקייה system/system_ext .
  • APEXes. GSI מכיל APEX פחוסים ודחוסים כאחד. באיזו מהם להשתמש נקבע על ידי מאפיין המערכת ro.apex.updatable במחיצת הספק בזמן הריצה. עיון הגדרת מערכת לתמיכה בעדכוני APEX לפרטים.

שינויים ב- Android 10 GSI

מכשירים המופעלים עם או מתעדכנים ל-Android 10 חייבים להשתמש ב-Android 10 GSI לבדיקת תאימות. זה כולל את השינויים העיקריים הבאים מ-GSI קודמים:

  • בניית משתמש. ל-GSI יש בניית משתמש מאנדרואיד 10. באנדרואיד 10, ניתן להשתמש ב-user build GSI בבדיקות תאימות CTS-on-GSI/VTS. עיין בבדיקת VTS עם Debug Ramdisk לפרטים.
  • פורמט לא מוצל. GSI עם יעדים aosp_$arch בנויים עם פורמט לא מרוצה. אתה יכול להשתמש ב- img2simg כדי להמיר GSI לא מנותק לפורמט דל במידת הצורך.
  • מערכת כשורש. יעד הבנייה של GSI מדור קודם בשם aosp_$arch_a . עבור המכשירים המשודרגים מ-Android 8 או 8.1 לאנדרואיד 10 עם ramdisk ולא-מערכת כשורש, השתמש ב-GSI מדור קודם aosp_$arch_ab . ה- init המשודרג ב-ramdisk תומך ב-OEM system.img עם פריסת מערכת כשורש.
  • ודא אתחול. באמצעות GSI אתה רק צריך לפתוח את המכשיר. אין צורך להשבית את אימות האתחול.

שינויים ב- Android 9 GSI

מכשירים המופעלים עם או מעודכנים לאנדרואיד 9 חייבים להשתמש ב-Android 9 GSI לבדיקת תאימות. זה כולל את השינויים העיקריים הבאים מ-GSI קודמים:

  • ממזג GSI ואמולטור. GSIs בנויים מתמונות המערכת של מוצרי אמולטור, למשל, aosp_arm64 ו- aosp_x86 .
  • מערכת כשורש. בגרסאות קודמות של אנדרואיד, מכשירים שלא תמכו בעדכוני A/B יכולים לעלות את תמונת המערכת מתחת לספריית /system . באנדרואיד 9, השורש של תמונת המערכת מותקן כשורש המכשיר.
  • ממשק קלסר של 64 סיביות. באנדרואיד 8.x, GSIs של 32 סיביות השתמשו בממשק ה-32 סיביות של קלסר. אנדרואיד 9 אינו תומך בממשק 32-bit מקשר, כך שגם 32-bit GSI ו-64-bit GSI משתמשים בממשק 64-bit.
  • אכיפת VNDK. באנדרואיד 8.1, VNDK היה אופציונלי. החל מאנדרואיד 9, VNDK הוא חובה, לכן יש להגדיר BOARD_VNDK_VERSION .
  • נכס מערכת תואם. Android 9 מאפשר בדיקת גישה למאפיין מערכת תואם ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true ).

שינויים ב-Android 9 Keymaster

בגרסאות קודמות של אנדרואיד, מכשירים המיישמים Keymaster 3 ומטה נדרשו לוודא שפרטי הגרסה ( ro.build.version.release ו- ro.build.version.security_patch ) שדווחו על ידי המערכת הפועלת תואמים לפרטי הגרסה שדווחו על ידי טוען האתחול. מידע כזה התקבל בדרך כלל מכותרת תמונת האתחול.

באנדרואיד 9 ומעלה, הדרישה הזו השתנתה כדי לאפשר לספקים לאתחל GSI. באופן ספציפי, Keymaster לא אמור לבצע אימות מכיוון שפרטי הגרסה המדווחים על ידי GSI עשויים שלא להתאים לפרטי הגרסה שדווחו על ידי טוען האתחול של הספק. עבור מכשירים המטמיעים Keymaster 3 ומטה, על הספקים לשנות את היישום Keymaster כדי לדלג על אימות (או לשדרג ל-Keymaster 4). לפרטים על Keymaster, עיין ב- Keystore בגיבוי חומרה .

הורדת GSIs

אתה יכול להוריד GSIs שנבנו מראש מאתר AOSP Integration Continuous Integration (CI) בכתובת ci.android.com . אם סוג ה-GSI עבור פלטפורמת החומרה שלך אינו זמין להורדה, עיין בסעיף הבא לפרטים על בניית GSI עבור יעדים ספציפיים.

בניית GSIs

החל מאנדרואיד 9, לכל גרסת אנדרואיד יש סניף GSI בשם DESSERT -gsi ב-AOSP (לדוגמה, android12-gsi הוא סניף GSI באנדרואיד 12). סניפי GSI כוללים את התוכן של אנדרואיד עם כל תיקוני האבטחה ותיקוני ה- GSI שהוחלו.

כדי לבנות GSI, הגדר את עץ המקור של אנדרואיד על ידי הורדה מענף 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

יעדי בניית אנדרואיד GSI

יעדי הבנייה הבאים של GSI מיועדים למכשירים המופעלים ב-Android 9 ומעלה.

שם GSI קשת מעבד Bitness ממשק קלסר מערכת כשורש בנה יעד
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 מהבהבים

למכשירי אנדרואיד יכולים להיות עיצובים שונים, כך שאין פקודה כללית או ערכת הוראות להבהב של GSI שיחול על כל המכשירים. בדוק עם היצרן של מכשיר האנדרואיד לקבלת הוראות מהבהבות מפורשות. השתמש בשלבים הבאים כהנחיה כללית:

  1. ודא שהמכשיר כולל את הדברים הבאים:
    • משולשת
    • שיטה לפתיחת התקנים (כדי שניתן יהיה להבריק אותם באמצעות fastboot )
    • מצב לא נעול כדי להפוך אותו ל- fastboot באמצעות Fastboot (כדי להבטיח שיש לך את הגרסה העדכנית ביותר של fastboot , בנה אותה מעץ המקור של אנדרואיד.)
  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
במכשירי אנדרואיד 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

אנדרואיד מברכת על התרומות שלך לפיתוח GSI. אתה יכול להיות מעורב ולעזור לשפר את ה-GSI על ידי:

  • יצירת תיקון GSI. DESSERT -gsi אינו ענף פיתוח ומקבל רק cherrypics מסניף המאסטר של AOSP, אז כדי לשלוח תיקון GSI, עליך:
    1. שלח את התיקון לסניף master של AOSP .
    2. בחר את התיקון ל- 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 וכן הלאה.