אנדרואיד דינמית תאפשר למפתחים לבדוק AOSP בכל מכשיר אנדרואיד Q

פרויקט חדש בשם Dynamic Android יאפשר למפתחים לבדוק AOSP Android Q GSIs בכל מכשיר שבו פועל אנדרואיד Q ואילך.

הודות ל פרויקט טרבל, יצרניות מכשירי הסמארטפונים סיפקו עדכוני תוכנת Android Pie מהר יותר ממה שהצליחו לעשות זאת עבור עדכון אנדרואיד אוראו, לפחות עבור סמארטפונים מובילים. עם זאת, גוגל לא רוצה לראות רק יצרני OEM קוטפים את היתרונות של Project Treble. החברה עשתה בעבר הביע התעניינות בשחרור תמונת מערכת כללית (GSI) של אנדרואיד Q למפתחים כדי שלא יצטרכו להסתמך על אמולטורים, השתמש ב- שירות ענן, או לחכות לעדכון במכשיר שלהם כדי לבדוק אפליקציה מול רמת ה-API העדכנית ביותר. בתיאוריה, שחרור GSI אמור לאפשר לכל מפתח עם מכשיר תואם Project Treble (במקור אנדרואיד 8.0 Oreo ומעלה, אך נחשב כעת רק למכשירים המשיקים עם Android 9 Pie) כדי לבדוק את האנדרואיד העדכנית ביותר גִרְסָה. כל מה שהמפתח צריך לעשות הוא להבהב תמונת מערכת על התקנת התוכנה הקיימת שלו - אין צורך בשחזור, אתחול או תמונת ספק מותאמת אישית.

עם זאת, ישנן מספר בעיות בתהליך ההתקנה הנוכחי של GSI. ראשית, אתה צריך טוען אתחול לא נעול, אשר אינו אפשרי במכשירי Huawei או Honor (ללא תשלום

תשלום), מכשירי Nokia של HMD Global (למעט ה נוקיה 8), או מכשירים ממותגי ספק בארה"ב. לאחר מכן, ה תהליך יהיה קשה לכל מי שלא מכיר תמונות מהבהבות באמצעות fastboot. לבסוף, מהבהבת GSI כעת תצטרך למחוק את האחסון הפנימי לחלוטין, מה שאומר שכנראה תרצה מכשיר חילוף לבדיקה. נכון לעכשיו, הבהוב של GSI הוא רק משהו שיצרני ציוד מקורי משתמשים בו כדי לבדוק תאימות ל-Project Treble במכשירים שלהם, ומעבר לזה, זה מושך רק למושבעים חובבי ROM בהתאמה אישית. פרויקט "אנדרואיד דינמי" החדש של גוגל עשוי לשנות זאת.

אנדרואיד דינמי - בדוק בקלות AOSP GSI בכל מכשיר Android Q

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

אנדרואיד דינמי ואנדרואיד בלחיצה

שני שירותים חדשים מתווספים לאנדרואיד Q: שירותי Android Dynamic ו-Android On Tap. בעוד Dynamic Android מטפל בהתקנה של GSI, Android On Tap מודיע לאפליקציות מערכת עם התקשרויות חוזרות וכוונת שידור. לדוגמה, Android On Tap מתריע בפני KeyguardManager לבקש מהמשתמש לאשר בקשת התקנה אם המכשיר מוגן באמצעות PIN, סיסמה או דפוס. AOT גם מתריע בפני המשתמש כאשר הוא מופעל לתוך GSI.

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

מקורות: [1], [2], [3], [4]

GSID

הדמון GSI מקצה מקום במחיצת /data כדי לאחסן את תמונת ה-GSI והנתונים שלה ולהפוך את התמונה לניתנת לאתחול. המטא נתונים של ה-GSI מאוחסנים ב- /metadata, בעוד שה-GSI עצמו והנתונים שלו מאוחסנים ב- /data/gsi. כברירת מחדל, GSID מקצה 8GB של נתוני משתמש עבור ה-GSI שהותקן לאחרונה. באופן כללי, GSID מחפש לפחות 40% מקום פנוי לפני תחילת ההתקנה. לבסוף, הדמון מונע מהמשתמש להתקין GSI בתוך GSI, מסיבות ברורות.

מקורות: [1], [2], [3], [4]

בִּטָחוֹן

אתחול מאומת של Android (AVB) מופעל עבור תמונת מערכת EXT4 שהותקנה לאחרונה (system_gsi מותקן על /system). גוגל גם הטמיעה מדיניות SELinux עבור השירותים החדשים. לבסוף, התקנה של GSI מחייבת אפליקציה בעלת הרשאת MANAGE_DYNAMIC_ANDROID החדשה. זוהי הרשאה ברמת החתימה, כלומר האפליקציה חייבת להיות חתומה על ידי ה-OEM.

מקורות: [1], [2]

פקודות ADB ו-Fastboot

GSIs יהיו ניתנים להתקנה גם באמצעות פקודות ADB חדשות. הפקודה החדשה של ADB gsi_tool shell תאפשר למשתמשים להשבית, להפעיל מחדש, להתקין ולשמר נתוני משתמש, התקן וצור נתוני משתמש, התקן ומחק נתוני משתמש, או בדוק את הסטטוס של הַתקָנָה.

gsi_tool - command-line tool for installing GSI images.

Usage:
gsi_tool <disable|install|wipe|status> [options]

disable Disable the currently installed GSI.
enable Enable a previously disabled GSI.
installInstall a new GSI. Specify the image sizewith
--gsi-size and the desired userdata size with
--userdata-size (the latter defaults to 8GiB)
--wipe (remove old gsi userdata first)
wipe Completely remove a GSI and its associated data
status Showstatus

שתי פקודות fastboot חדשות יתווספו לניהול ה-GSI, אם כי התקנת fastboot אינה נתמכת מכיוון שה-fastboot לא יכול לטעון נתוני משתמש.

fastboot gsi wipe
fastboot gsi disable

מקורות: [1], [2]

למי זה יועיל?

אני רוצה לומר שמפתחי אפליקציות יוכלו לנצל את היתרונות של Dynamic Android ו- Android On Tap, אבל אני לא לגמרי בטוח. למרות שגוגל הביעה עניין בדיוק בזה, אין ערובה שתכונה זו תהיה זמינה בכל מהדורת אנדרואיד Q מ יצרני OEM שאינם של Google. כדי לנצל זאת במכשיר, התוכנה זקוקה לאפליקציית בורר GSI החתומה על ידי אותו אישור כמו ROM. אני גם לא בטוח שהתקנת GSI מ-ADB תתאפשר ללא שורש ADB בגלל מדיניות SELinux.עדכון: חדש לְבַצֵעַ מאשר ששורש ADB יידרש כדי להשתמש ב-GSI_tool. אם זה לא נועד למפתחי אפליקציות לבדוק את האפליקציות שלהם במבנה נקי של אנדרואיד, סביר להניח שזה רק להועיל למהנדסים מיצרני ציוד מקורי המעוניינים לבדוק את חבילת בדיקת התאימות (CTS) ו-Vendor Test Suite (VTS) על מכשירים.

תודה מיוחדת למפתח XDA Recognized luca020400 על עזרתו במאמר זה.