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

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

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

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

תצורת 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 אנדרואיד, וכל ארכיטקטורת המעבד יש בינארי GSI המתאים (ראה ברשימת יעדי build in 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 . בעת ביצוע Flash הספציפי ל- 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 בנויים עם פורמט unsparsed. אתה יכול להשתמש img2simg להמיר GSI unsparsed לפורמט דלילה במידת הצורך.
  • מערכת כשורש. היעד לבנות מורשת GSI בשם aosp_$arch_a היה בהדרגה. עבור המכשירים ששדרגו אנדרואיד 8 או 8.1 אנדרואיד 10 עם ramdisk והלא-מערכת-כפי-שורש, להשתמש מורשת GSI aosp_$arch_ab . המשודרג init ב ramdisk תומך system.img OEM עם פריסת מערכת-כפי-שורש.
  • ודא אתחול. באמצעות GSI אתה רק צריך לפתוח את המכשיר. אין צורך להשבית את אימות האתחול.

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

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

  • ממזג GSI ואמולטור. GSIs בנויים מהתמונות מערכת של מוצרים אמולטור, למשל, aosp_arm64 ו aosp_x86 .
  • מערכת כשורש. בגרסאות קודמות של אנדרואיד, מכשירים שלא תומכים / עדכונים 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 חייב להיות מוגדר.
  • נכס מערכת תואם. אנדרואיד 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

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

בניית GSIs

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

כדי לבנות GSI, להגדיר את עץ מקור אנדרואיד ידי הורדת מענף GSI לבין בחירת יעד לבנות GSI . השתמש בטבלאות יעד הבנייה שלהלן כדי לקבוע את גרסת ה-GSI הנכונה עבור המכשיר שלך. לאחר משלים build, GSI הוא תמונת מערכת (כלומר, system.img ) ומופיע הפלט התיקייה out/target/product/ generic_arm64 .

לדוגמה, כדי לבנות את היעד לבנות GSI 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 )
    • מדינה נעול כדי לגרום לזה Flash מסוגל באמצעות fastboot (כדי לוודא שיש לך את הגרסה האחרונה של fastboot , לבנות אותו מעץ מקור אנדרואיד.)
  2. מחק את מחיצת המערכת הנוכחית, ואז הבזק את ה-GSI למחיצת המערכת.
  3. מחק את נתוני המשתמש ומחק את הנתונים ממחיצות נחוצות אחרות (לדוגמה, נתוני משתמש ומחיצות מערכת).
  4. הפעל מחדש את המכשיר.

לדוגמה, כדי להבהב GSI לכל מכשיר Pixel:

  1. Boot to fastboot מצב ואת נעילת האתחול .
  2. המכשירים התומכים fastbootd גם צריך האתחול לתוך fastbootd ידי:
    $ fastboot reboot fastboot
  3. Erase ו הבזק את GSI על מחיצת המערכת:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. נגב את נתוני המשתמש ונקה את הנתונים מ מחיצות הדרושים אחרים (למשל, נתוני המשתמש ואת מחיצות במערכת):
    $ fastboot -w
  5. Reboot:
    $ fastboot reboot
על אנדרואיד 10 או תקנים חדשים שיש מחיצות מערכת קטנות, הודעת השגיאה הבאה עלולה להופיע בעת ביצוע Flash 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 צריך להתאים את משבצת id של מחיצת המערכת, כגון system_a בדוגמה זו.

תרומה ל-GSIs

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

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