Нов проект, наречен Dynamic Android, ще позволи на разработчиците да тестват AOSP Android Q GSI на всяко устройство с Android Q или по-нова версия.
Благодарение на Проект Treble, производителите на смартфони доставиха софтуерни актуализации на Android Pie по-бързо, отколкото успяха да го направят за актуализацията на Android Oreo, поне за водещите смартфони. Google обаче не иска да види само OEM производителите да се възползват от предимствата на Project Treble. Компанията е имала преди това проявен интерес при пускането на Generic System Image (GSI) на Android Q за разработчици, така че да не се налага да разчитат на емулатори, използвайте облачна услуга, или да изчакат актуализация на собственото си устройство, за да тестват приложение спрямо най-новото ниво на API. На теория пускането на GSI трябва да позволи на всеки разработчик с устройство, съвместимо с Project Treble (първоначално Android 8.0 Oreo и по-нова версия, но сега се считат само за устройства, стартиращи с Android 9 Pie), за да тествате най-новия Android версия. Всичко, което разработчикът трябва да направи, е да флашне системно изображение върху съществуващата софтуерна инсталация - няма нужда от персонализирано възстановяване, зареждане или изображение на доставчик.
Има обаче няколко проблема с текущия процес на инсталиране на GSI. Първо, имате нужда от отключен буутлоудър, който не е възможно на устройства Huawei или Honor (без плащане такса), устройства Nokia на HMD Global (с изключение на Nokia 8) или устройства с марка на оператора в САЩ. След това, процес ще бъде трудно за всеки, който не е запознат с мигащите изображения чрез fastboot. И накрая, флашването на GSI сега ще трябва да изтриете напълно вътрешната памет, което означава, че вероятно ще искате резервно устройство, на което да тествате. В момента мигането на GSI е само нещо, което производителите на оригинално оборудване използват, за да тестват Project Treble-съвместимостта на своите устройства, а освен това е привлекателно само за твърдолюбивите потребителски ROM ентусиасти. Новият проект на Google "Dynamic Android" може да промени това.
Динамичен Android – Тествайте лесно AOSP GSI на всяко Android Q устройство
През последните няколко месеца Google работи върху начин за безопасно зареждане на GSI, без да се налага да отключва буутлоудъра. Накратко, Google разработва приложение, което има специални разрешения, които му позволяват да изтегли GSI, да запази място за съхранение за него и да маркира GSI като стартиращ. Има няколко компонента на този проект, така че нека ги обсъдим един по един.
Динамичен Android и Android On Tap
Две нови услуги се добавят към Android Q: услугите Dynamic Android и Android On Tap. Докато Dynamic Android обработва инсталирането на GSI, Android On Tap информира системните приложения с обратни извиквания и намерения за излъчване. Например, Android On Tap предупреждава KeyguardManager да поиска от потребителя да потвърди заявка за инсталиране, ако устройството е защитено с PIN, парола или шаблон. AOT също предупреждава потребителя, когато се стартира в GSI.
Според описанието за „DynamicAndroidManager“, услугата „предлага механизъм за използване на нов Android изображение временно." След инсталирането устройството може да се рестартира в новоинсталираното изображение с новосъздадено изображение /data. Рестартирането, докато сте в GSI, връща потребителя към оригиналното системно изображение, но новоинсталираното изображение и неговите данни просто се дезактивират и не се изтриват. Ако потребителят реши да направи това, GSI и неговите данни могат да бъдат премахнати напълно.
Източници: [1], [2], [3], [4]
GSID
GSI демонът разпределя място в дяла /data, за да съхранява изображението на GSI и неговите данни и да направи изображението стартиращо. Метаданните на GSI се съхраняват в /metadata, докато самият GSI и неговите данни се съхраняват в /data/gsi. По подразбиране GSID разпределя 8 GB потребителски данни за новоинсталирания GSI. По принцип GSID търси поне 40% свободно място, преди да започне инсталация. И накрая, демонът не позволява на потребителя да инсталира GSI в GSI по очевидни причини.
Източници: [1], [2], [3], [4]
Сигурност
Android Verified Boot (AVB) е активирано за новоинсталираното системно изображение EXT4 (system_gsi монтиран към /system). Google също е внедрил политики на SELinux за новите услуги. И накрая, инсталирането на GSI изисква приложението да има новото разрешение MANAGE_DYNAMIC_ANDROID. Това е разрешение на ниво подпис, което означава, че приложението трябва да бъде подписано от OEM.
Източници: [1], [2]
ADB и Fastboot команди
GSI също ще могат да се инсталират чрез нови ADB команди. Новата команда на обвивката на ADB gsi_tool ще позволи на потребителите да деактивират, активират отново, инсталират и запазват потребителски данни, инсталирайте и създайте потребителски данни, инсталирайте и изтрийте потребителски данни или проверете състоянието на инсталация.
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
Ще бъдат добавени две нови команди за бързо зареждане за управление на GSI, въпреки че инсталирането на бързо зареждане не се поддържа, тъй като бързото зареждане не може да монтира потребителски данни.
fastboot gsi wipe
fastboot gsi disable
Източници: [1], [2]
Кой ще бъде от полза?
Искам да кажа, че разработчиците на приложения ще могат да се възползват от Dynamic Android и Android On Tap, но не съм напълно сигурен. Въпреки че Google изрази интерес точно към това, няма гаранция, че тази функция ще бъде налична във всяка версия на Android Q от OEM производители извън Google. За да се възползва от това на устройството, софтуерът се нуждае от приложение за избор на GSI, което е подписано със същия сертификат като ROM. Също така не съм сигурен, че инсталирането на GSI от ADB ще бъде възможно без ADB root поради правилата на SELinux.Актуализация: Нов ангажирам потвърждава, че ADB root ще се изисква да използва GSI_tool. Ако това не е предназначено за разработчиците на приложения да тестват приложенията си на чиста компилация на Android, тогава вероятно само облагодетелстват инженерите от производители на оригинално оборудване, които искат да тестват пакета за тестове за съвместимост (CTS) и пакета за тестове на доставчици (VTS) на своите устройства.
Специални благодарности на XDA Recognized разработчик luca020400 за помощта му в тази статия.