גוגל חשפה את עדכון המערכת הדינמית, דרך חדשה להתקנת GSI באנדרואיד Q שאינה דורשת ביטול נעילת טוען האתחול.
לצד שחרורו של אנדרואיד 8.0 אוראו, גוגל חשפה פרויקט טרבל: אדריכלות מחדש משמעותית באופן שבו מסגרת מערכת ההפעלה אנדרואיד והספקים HALs וליבת לינוקס מתקשרים. טרבל היא יוזמה מרכזית שנועדה לצמצם את גרסת פלטפורמת אנדרואיד ו פיצול תיקוני אבטחה, וכל המכשירים ממותגי Android המשיקים עם Android Pie נדרשים לתמוך ב-Project Treble. יצרני OEM וספקים בודקים את תאימות ה-Treble על ידי אתחול תמונת מערכת כללית (GSI) - מבנה מלאי טהור של אנדרואיד מ-AOSP - והעברת חבילת בדיקה של ספקים (VTS) ו-Compatibility Test Suite-on-Generic System Image (CTS-on-GSI). ה-GSI הוכיח את עצמו כשימושי לא רק בכך שהוא מאפשר למהנדסי תוכנה העובדים עבור יצרני ציוד מקורי לבחון תאימות טרבל, אלא הוא גם פתח את הדלת עבור קהילת ROM מותאמת אישית גדולה ב-XDA. עבור מהדורת אנדרואיד Q, גוגל רוצה להפוך את GSI לשימושי עבור קבוצה אחרת: מפתחי אפליקציות.
מאז השחרור היציב הראשון וירידה בקוד המקור של כל מהדורה נתונה של פלטפורמת אנדרואיד מגיע בדרך כלל בחודש אוגוסט
, מפתחים שירצו לבדוק את מהדורת האנדרואיד הבאה במכשיר אמיתי זקוקים בדרך כלל לגישה לסמארטפון של גוגל אם הם לא רוצים לחכות שהעדכון יגיע לחומרה שלהם. עם זאת, גוגל עבדה עם יצרני OEM כדי להביא א אנדרואיד P בטא לכמה מכשירים בשנה שעברה, והם עקבו אחרי זה השנה עם א אנדרואיד Q בטא. לצד גרסת בטא רשמית של אנדרואיד Q, גוגל הוציאה השנה גם רשמי Q בטא GSI כך שכל מפתח עם מכשיר תואם Project Treble יכול להתקין את המהדורה האחרונה של Q מבלי להמתין חודשים עד שה-build יגיע למכשירים שלהם. הדרך החדשה הזו לבחון את מהדורת האנדרואיד הבאה מעניקה למפתחים הזדמנויות רבות יותר, ובכך יותר זמן, לבחון את האפליקציות שלהם שינויים גדולים באנדרואיד.למרבה הצער, השיטה הנוכחית של התקנת GSI יכול להיות קשה. זה דורש ביטול נעילה של טוען האתחול - כלומר מחיקת כל נתוני המשתמש ו/או ביטול האחריות - והבהבת תמונה באמצעות פרוטוקול fastboot. זה לא תהליך מהיר ופשוט עבור מפתח אפליקציות לעשות, אם המכשיר שלו אפילו מאפשר ביטול נעילת טוען האתחול. זו הסיבה, עבור ה החודשים האחרונים, גוגל עבדה על דרך חדשה לאתחל GSIs. הזן תכונה חדשה בשם Dynamic System Update, או DSU.
(תכונה זו פותחה בעבר תחת השמות "תמונה חיה", "אנדרואיד דינמי" ו"אנדרואיד בהברזה", אז אל תתפלאו אם גוגל תקרא לזה משהו אחר בעוד כמה שבועות או חודשים.)
עדכוני מערכת דינמיים באנדרואיד Q
המטרה של תכונת ה-DSU היא לאפשר למפתח לאתחל לתוך GSI מבלי להפריע להתקנה הנוכחית. כלומר, אין צורך לבטל את הנעילה של טוען האתחול ואין צורך למחוק את נתוני המשתמש. תהליך ההתקנה גם מפושט מאוד מכיוון שגוגל סיפקה ממשק שורת פקודה דרך ADB ואפליקציה שניתן לשלוט בה באמצעות כוונות. כך זה נראה לאתחל GSI באמצעות DSU:
בסרטון* זה, Google Pixel 3 XL עם Android Q Beta 3 מאתחל מחדש לתוך GSI. בסביבה זו, מפתח אפליקציה יכול להתקין ולבדוק את האפליקציה שלו עבור תאימות Q API. כאשר הם מסיימים את הבדיקה, הם יכולים פשוט לאתחל מחדש לתוכנת Q בטא 3 הרגילה במכשיר. אתה בעצם מאתחל כפול של GSI כדי שתוכל לבדוק בבטחה את האפליקציה שלך!
*הקלטנו את הסרטון הזה ב-Google I/O 2019 כאשר DSU עדיין לא היה זמין לציבור, אז ה-Q beta 3 הבנויה על Pixel 3 XL המצולם שונתה מעט על ידי Google כדי לכלול תמיכה ב-DSU. מכשירים עם Q בטא 4 ואילך זכאים לתמוך ב-DSU אם הם עומדים בדרישות שלהלן.
דרישות עבור עדכוני מערכת דינמיים
להפעיל את מה שהוא בעצם אתחול כפול לא היה משימה קלה עבור Google. היו צריכים לבצע שינויים גדולים באופן שבו מחיצות מנוהלות ב-Pixel 3, ערכת הניסוי של גוגל עבור DSU. לפיכך, הדרישה העיקרית הראשונה לתמיכה ב-DSU היא שהמכשיר תומך מחיצות דינמיות. מחיצות דינמיות כוללות מחיצה אמיתית אחת של אחסון המחולקת למחיצות לוגיות הניתנות לשינוי גודל כמו מערכת, ספק, odm, oem, מוצר וכו'. במהלך ההתקנה של GSI, מקום שמור למחיצות חדשות של מערכת ונתוני משתמש על ידי הוצאת בלוקים שאינם בשימוש ממחיצת נתוני המשתמש הקיימת. מכיוון שהמחיצות החדשות הללו יכולות להיות בגודל של כמה ג'יגה-בייט, תמיכת DSU הגיונית רק עם לוגיקה מחיצות אחרת התקן יצטרך לשמור לצמיתות מספר גיגה-בייט של שטח אחסון עבור GSI התקנות.
דרישות אחרות כוללות ramdisk, שמחליט אם לאתחל לשחזור, מערכת או מחיצה לוגית, ומחיצת מטא נתונים לאחסון המטא נתונים של ה-GSI. באופן כללי, אבני הבניין לתמיכה ב-DSU הן דרישות ההשקה של Android Q, על פי ראש פרויקט טרבל, איליאן מלצ'ב. אנחנו לא בטוחים אם הכל שנדרש כדי לתמוך ב-DSU הוא דרישת השקה של Android Q, אבל אנחנו יכולים להניח שרוב המכשירים אם לא כל המכשירים המופעלים עם Android Q פחית לתמוך ב-DSU גם אם גוגל לא דורשת מהם כרגע. עד כה, רק ל-Pixel 3, Pixel 3 XL, Pixel 3a ו-Pixel 3a XL יש מחיצות דינמיות, ומתוך המכשירים הללו, רק ה-Pixel 3 וה-Pixel 3 XL תומכים ב-DSU ב-Android Q בטא 4. למרות שאין צורך בתמיכה ב-DSU, גוגל מקווה שיצרני OEM יאפשרו את התכונה בכל מקרה מכיוון שהיא מפשטת בדיקה מאובטחת של תאימות טרבל. לדוגמה, מהנדס תוכנה OEM יכול לשים GSI על כרטיס SD כך שהם יכולים לאתחל במהירות במספר מכשירים כדי לבדוק תאימות של Treble.
אבטחה עבור עדכוני מערכת דינמיים
מכיוון ש-DSU מציגה למעשה מערכת הפעלה שנייה לתוך התמהיל, גוגל צריכה לוודא שלא ניתן לחבל בהתקנה החדשה הזו כדי לשבור את שלמות המכשיר. לפיכך, ה אותן הגנות אבטחה בסיסיות עבור ההתקנה המקורית קיימות עבור התקנת GSI: מדיניות Android Verified Boot ו-SELinux. יתרה מזאת, רק אפליקציות עם חתימת INSTALL_DYNAMIC_SYSTEM|הרשאה מוסמכת יכולות להפעיל GSI התקנה, בעוד אפליקציות עם הרשאת החתימה MANAGE_DYNAMIC_SYSTEM יכולות להפעיל/לבטל או למחוק GSI הַתקָנָה. המשמעות היא שרק אפליקציות מהימנות ברמת המערכת יכולות לעבוד עם DSU.
כדי להבטיח שנתוני המשתמש המקוריים מוגנים, גוגל הוסיפה מנגנון הגנה נוסף באנדרואיד Q. שקוראים לו "מחסום," התכונה מגנה מפני הרס של נתוני משתמש על ידי שחזור המחיצות המחסומות למצבן המקורי. עם זאת, מחסומים שימושיים לא רק עבור DSU. הם משמשים גם להגנה מפני תקלות פרויקט מרכזי מודול APEX ו א/ב עדכוני OTA. (מכשירים עם מחיצות A/B יש כבר הגנת ביטול חזרה, אבל החזרות אלה דורשות איפוס נתוני היצרן בעוד שנקודות ביקורת של נתוני משתמשים לא.)
התקנת GSI
אם המכשיר שלך תומך ב-DSU כמו סדרת Pixel 3, אז קל להתקין GSI. תחילה עליך לוודא שדגל התכונה של המערכת הדינמית מופעל באחת משתי דרכים:
- אם אתה בבניית userdebug, הפעל את הדגל settings_dynamic_android בהגדרות > מערכת > אפשרויות מפתח > דגלי תכונות.
- אם אתה בבניית משתמש, הפעל את פקודת ה-adb shell הבאה:
setproppersist.sys.fflag.override.settings_dynamic_system 1
לאחר מכן, הורד את גרסת הבטא האחרונה של Android Q GSI מ גוגל או ה-OEM של המכשיר שלך. (DSU מאפשר רק התקנת GSIs חתומים על ידי Google או OEM.) לאחר ההורדה, השתמש simg2img כדי להמיר את התמונה הדלילה לתמונה גולמית. השתמש ב-gzip כדי לארוז את התמונה הגולמית, ולאחר מכן העתק את הארכיון שנוצר למיקום במכשיר שלך אחסון חיצוני (למשל /data/media/0/Download) או אמצעי אחסון חיצוני בפועל (כמו SD פיזי כַּרְטִיס). לבסוף, הפעל את אפליקציית DynamicSystemInstallationService עם הכוונה הנכונה להתחיל בהתקנה:
adb shell am start-activity \ -n com.android.dynsystem/com.android.dynsystem.VerificationActivity \ -a android.os.image.action.START_INSTALL \ -d file:///storage/emulated/0/Download/system_raw.gz \ --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1) \ --el KEY_USERDATA_SIZE 8589934592
לאחר שתלחץ על התחל מחדש, אתה תעלה לתוך ה-GSI. השימושיות של המכשיר ב-GSI תלויה באיזו צורה ה-OEM של המכשיר שלך יישם טרבל (או ליתר דיוק, כמה מעט הם הפרו את טרבל תאימות.) מכשירים מסוימים יעבדו טוב יותר עם GSIs מאחרים, אך באופן כללי, אל תצפה להשתמש בהתקנה זו כיום יום נהג. אתה אמור לבדוק את האפליקציה שלך ואז לצאת על ידי אתחול מחדש. אם אתה רוצה להישאר בהתקנת GSI לבדיקות נוספות, אתה יכול להשתמש ב- gsi_tool פקודת מעטפת.
ניתן למצוא את הוראות ההתקנה המלאות של GSI עבור DSU כאן. ניתן להגיש באגים ב- Google Issue Tracker,Reddit, או הצפת מחסנית.
הסיבה מאחורי עדכוני מערכת דינמיים
כשדיברתי עם איליאן מלצ'ב ב-Google I/O, הוא חזר על מה שאמר האנג-ינג טיאן מצוות טרבל על גישה מוקדמת ל-GSI ב- פסגת הפיתוח של אנדרואיד בנובמבר. גוגל יצרה DSU ל לבקש משוב מקהל רחב ככל האפשר. המטרה היא לשפר את איכות ה-GSI, אשר בתורו משפר את האיכות של מהדורת אנדרואיד העתידית מכיוון ש-GSI הוא הצורה הטהורה ביותר של אנדרואיד. גוגל היא כיום החברה היחידה שבודקת את תאימות ה-GSI של הגרסה הבאה (לדוגמה, עד כמה עובדת תמונת מערכת Android Q על גבי ה-Android P הטמעת ספקים), אבל ככל שיותר אנשים מבזיקים GSI ונותנים משוב, יצרני OEM יכולים לתקן הפרות של תאימות טרבל כך ש-GSIs יעבדו אפילו טוב יותר ב- עתיד. איליאן אומר שיש עניין רב מצד יצרני OEM וספקים כמו קוואלקום בשימוש חוזר בתמונות של ספקים מהגרסה הקודמת של אנדרואיד עם תמונת המערכת של הגרסה הבאה. יוזמות כמו DSU עוזרות לגוגל וליצרני ציוד מקורי לסתום את הפער בכיסוי מבדיקות אוטומטיות כמו VTS ו-CTS-on-GSI. לפיכך, גוגל מקבלת יותר בודקי בטא לתת משוב על מהדורת אנדרואיד הבאה, תוך שהיא שומעת על הפרות תאימות של טרבל כדי שיצרני OEM יוכלו לשפר את עבודתם.
התוספת של עדכוני מערכת דינמיים באנדרואיד Q מבורכת, אבל זה לא הולך להיות פתרון האתחול הכפול שחלקכם מקווים לו. כפי שהוזכר קודם, ניתן להתקין רק תמונות מערכת חתומות על ידי Google או יצרני OEM. כששאלתי את איליאן על האפשרות להרחיב את ה-DSU לתמיכה במערכת אקולוגית של אנדרואיד חלופית מערכות, הוא אמר שזה אפשרי מבחינה טכנית לעשות זאת מכיוון ש-DSU הוא פשוט ערוץ להעברת מערכת תמונות. כל OEM יכול להשתמש בו איך שהוא רוצה כל עוד התוצאה הסופית תואמת לאנדרואיד. גוגל לא יצרה אלטרנטיבה למערכת OTA כאן, ו-DSU לא מיועד לשמש לאתחול כפול אמיתי. בלי קשר, העבודה שגוגל ביצעה ב-Treble הופכת את אנדרואיד למודולרי יותר, אז לא אתפלא אם אתחול כפול מקורי יהפוך למציאות בהמשך הדרך.