תמונת מערכת גנרית (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 הנוכחי יש את התצורה הבאה:
- לְשַׁלֵשׁ. ה-GSI כולל תמיכה מלאה בשינויים הארכיטקטוניים מבוססי AIDL/HIDL (הידוע גם בשם Treble ), כולל תמיכה בממשקי AIDL וממשקי HIDL . אתה יכול להשתמש ב-GSI בכל מכשיר אנדרואיד שמשתמש בממשקי ספק AIDL/HIDL. (לפרטים נוספים, ראה משאבי אדריכלות .)
- מערכת קבצים. ה-GSI משתמש במערכת הקבצים ext4.
ה-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
מה-GSIsystem.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 שיחול על כל המכשירים. בדוק עם היצרן של מכשיר האנדרואיד לקבלת הוראות מהבהבות מפורשות. השתמש בשלבים הבאים כהנחיה כללית:
- ודא שהמכשיר כולל את הדברים הבאים:
- משולשת
- שיטה לפתיחת התקנים (כדי שניתן יהיה להבריק אותם באמצעות
fastboot
) - מצב לא נעול כדי להפוך אותו ל-
fastboot
באמצעות Fastboot (כדי להבטיח שיש לך את הגרסה העדכנית ביותר שלfastboot
, בנה אותה מעץ המקור של אנדרואיד.)
- מחק את מחיצת המערכת הנוכחית, ואז הבזק את ה-GSI למחיצת המערכת.
- מחק את נתוני המשתמש ומחק את הנתונים ממחיצות נחוצות אחרות (לדוגמה, נתוני משתמש ומחיצות מערכת).
- הפעל מחדש את המכשיר.
לדוגמה, כדי להבהב GSI לכל מכשיר Pixel:
- אתחול למצב מהיר אתחול
fastboot
את נעילת טוען האתחול . - המכשירים התומכים ב-
fastbootd
צריכים גם לאתחל ב-fastbootd
על ידי:$ fastboot reboot fastboot
- מחק והבהב את ה-GSI למחיצת המערכת:
$ fastboot erase system $ fastboot flash system system.img
- מחק את נתוני המשתמש ומחק את הנתונים ממחיצות נחוצות אחרות (לדוגמה, נתוני משתמש ומחיצות מערכת):
$ fastboot -w
- אתחול מחדש:
$ fastboot reboot
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, עליך:- שלח את התיקון לסניף
master
של AOSP . - בחר את התיקון ל-
DESSERT -gsi
. - הגש באג כדי לבחון את ה-cherrypick.
- שלח את התיקון לסניף
- דיווח על באגים ב-GSI או הצעות אחרות. עיין בהוראות בדיווח על באגים , ולאחר מכן עיין או שלח באגים ב-GSI .
טיפים
שינוי מצב סרגל הניווט באמצעות adb
בעת אתחול עם GSI, מצב סרגל הניווט מוגדר על ידי עקיפה של הספק. אתה יכול לשנות את מצב סרגל הניווט על ידי הפעלת פקודת adb הבאה בזמן ריצה.
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
כאשר mode יכול להיות threebutton
, twobutton
, gestural
וכן הלאה.