Android 11 ще се предлага с DSU Loader в рамките на Опциите за разработчици, което ще ви позволи автоматично да изтегляте и инсталирате съвместими GSI! Прочетете за повече!
Добрата екосистема за приложения е един от най-важните стълбове на успеха на една операционна система. Както Google, така и Apple признават стойността на наличието на добри приложения на своите платформи и затова и двете компании се опитват да балансират нуждите на своите потребители и разработчиците на приложения. Потребителите продължават да настояват за промени в операционните системи и докато повечето хора като цяло оценяват новите функции, тези промените не винаги са забавни за разработчиците на приложения, тъй като те могат да променят много от основната функционалност и поведение. За разработчиците, които непрекъснато работят, за да поддържат своите приложения подходящи, справянето с тези промени добавя към нарастващия им работен списък. Дори ако тези промени не засягат директно техните приложения, разработчиците все още трябва да се уверят, че техните приложения ще работят с новата актуализация на операционната система. Google направи много промени през годините, за да улесни този процес за разработчиците на приложения за Android, а сега и нов функция в Android 11, наречена DSU Loader, ще направи още по-лесно за разработчиците на приложения да тестват своите приложения на нов Android версии.
Започва с Project Treble
Проектът Treble, представен в Android 8.0, е основен преархитектиране на операционната система Android. Целта на Project Treble беше да раздели операционната система Android на две големи части: рамката и внедряването на доставчика („доставчик“ тук се отнася до производителя на всеки частен хардуерен компонент, намиращ се в устройството, обикновено се отнася до силиций). Рамката на Android OS е самата операционна система, включително всички системни приложения, потребителския интерфейс и неговите компоненти и API, които се споделят между устройства с Android. Изпълнението на доставчика съдържа HAL (слоеве на хардуерна абстракция) и ядрото на Linux и модулите на ядрото на Linux.
Тъй като производителите на оригинално оборудване доставят смартфони с много различни хардуерни компоненти от много различни доставчици, те трябва да вършат много работа, само за да накарат хардуера да работи на една версия на Android OS. След това с всяка нова актуализация на Android OS те трябва да вършат още повече работа, за да се уверят, че хардуерът им работи с новата версия. Но с Project Treble, стандартизиращ ABI (Application Binary Interface) между рамката на Android OS и HAL за конкретна версия на Android, OEM производителите на Android могат да започнат да тестват актуализации на своите устройства, без да е необходимо да чакат производителите на силиций и други производители на компоненти да актуализират своята страна на кодът. Тази промяна значително се ускори начина, по който се обработват актуализациите на Android.
Това е същината на това, което Project Treble направи за актуализациите на Android, но това, което е по-важно за приложението разработчиците тук е, че Treble е активирал използването на Generic System Images (GSI) за съвместимост тестване.
Появата на GSI
За да могат OEM производителите да тестват дали са внедрили правилно Project Treble, Google изисква OEM да може да зарежда чиста компилация на Android от AOSP на устройството. Тази чиста компилация на Android се нарича Generic System Image или GSI. Ако GSI стартира и най-основният хардуер функционира правилно, тогава OEM знае, че тяхното устройство отговаря на изискванията на Project Treble. Следователно първоначалната цел на GSI беше за тестване на съвместимост с Treble, но както видяхме с общността за разработка тук в XDA-Developers, те могат да се използват за други цели. Видяхме как GSIs може по същество да позволи на устройства с тежки Android UXs да се насладят на най-новата версия на Android с работещи функции в рамките на дни след новата версия. Но Google предвижда друга цел зад GSI: да даде възможност на разработчиците на приложения да тестват своите приложения на нова версия на Android на физическо устройство, което вече притежават.
С Android 10 Google пусна свои собствени компилации на GSI за разработчици. Google затвърди идеята, че разработчиците на приложения трябва да използват GSI, за да заредят чиста компилация на Android на техния собствен хардуер, което улеснява тестването на поведението на приложението им спрямо стандартния Android. По този начин този метод е добавен към съществуващите опции за тестване на съвместимостта на приложенията на стоков Android без промени в поведението на OEM, като другите са използване на смартфон Pixel, използване на официалния емулатор на Android в рамките на Android Studio или внедряване на компилации на приложения в екземпляр на устройство в облака.
Въпреки всички удобства, които GSI донесоха, тяхното инсталиране все още беше тромав процес. Разработчиците на приложения може да не се чувстват комфортно с ръчно мигане на системно изображение на устройство с Android, тъй като това е нещо, с което обикновено са запознати само любителите или разработчиците на Android OS. Инсталирането на GSI изискваше мигане на системно изображение през fastboot, което изисква деактивиране на Android Verified Boot и отключване на буутлоудъра. Отключването на буутлоудъра от своя страна изисква пълно изтриване на потребителските данни. И както всички знаем, няма точно един процес или ръководство за отключване на буутлоудъра на всяко устройство с Android, така че не може да се намери последователност. Например устройствата на Samsung нямат бързо зареждане, докато устройствата на Xiaomi ви карат да преминете през няколко обръча, за да отключите буутлоудъра. Това е удобна бъркотия, която има потенциала да бъде разплетена в нещо по-просто.
Тук се появяват динамичните системни актуализации.
Динамичните системни актуализации просто инсталират GSI
Google разбраха, че настоящият метод за инсталиране на GSI не е идеалното решение, така че започнаха да работят върху по-добро решение. В Android 10, Google започна да тества динамични системни актуализации, или DSU. DSU е нов начин за временно инсталиране на GSI, без да е необходимо да използвате команди за бързо стартиране за флашване на системно изображение, презаписвайки оригиналната инсталация. С DSU можете да стартирате в GSI, да тествате приложението си и след това удобно да рестартирате обратно в оригиналната си инсталация, която е останала недокосната.
Причината, поради която DSU може да инсталира GSI, без да докосва оригиналната инсталация, е, че създава нова система и изображения на дялове с данни, които временно се съхраняват в /data/gsi. След това тези изображения се монтират по време на зареждане, а не оригиналната система и дялове с данни. Тъй като телефонът се нуждае от допълнително място за съхранение на тези нови, временни изображения, телефонът ви трябва да има „логически дялове“ на борда, които са дялове с динамична промяна на размера. Логическите дялове са нова система за разделяне на потребителско пространство за Android, която е задължителна за устройства, стартиращи с Android 10. Ако вашето устройство е стартирано с Android 10, то трябва да поддържа инсталиране на GSI чрез DSU.
В Android 10 всичко, което трябва да направите, за инсталирайте GSI чрез DSU е да промените свойство на системата и след това да стартирате DynamicSystemUpdatesInstallationService чрез изпращане на намерение с пътя към GSI като допълнително намерение.
Въпреки че този процес може да изглежда непознат, той е много по-лесен и по-малко натрапчив в сравнение с използването команди за бързо зареждане и справяне с неприятностите на всичко, включително първоначалната инсталация изтрит. Необходими са ви познания за ADB и намерения да използвате DSU, но това не би трябвало да е проблем за повечето разработчици на приложения. Все пак няма причина процесът да не може да бъде още по-прост. Освен това има факта, че инсталирането на GSI през DSU все още изисква да отключите буутлоудъра, изтривайки всички потребителски данни в процеса. За тази цел Google внедри промени, за да подобри и двата аспекта на инсталацията на GSI. В Android 11 те премахнаха необходимостта изобщо да използват командния ред за инсталиране на GSI. Отделно, направиха и възможност за инсталиране на GSI без отключване на буутлоудъра.
DSU Loader в Android 11
DSU Loader е нов инструмент, присъстващ в опциите за разработчици на Android 11, който ви позволява да Изтегли и Инсталирай най-новия GSI от Google, без да е необходимо да въвеждате команди за бързо зареждане или ADB. Просто докоснете опцията DSU Loader в Настройки и ще се появи диалогов прозорец със списък на поддържаните GSI директно от Google. Тези поддържани GSI ще бъдат базирани на вашата текуща операционна система и архитектура, така че можете да инсталирате само GSI, които са по-нови от вашата версия на операционната система и които съответстват на вашата SoC архитектура. Просто изберете GSI, който искате да инсталирате, и той ще бъде изтеглен от сървърите на Google и автоматично инсталиран във фонов режим.
С DSU Loader разработчиците никога не трябва да докосват командния ред, за да инсталират GSI. Поне това е мечтата, защото все още остава един проблем за решаване.
Пътят напред
В момента, за да инсталирате GSI чрез DSU Loader, имате нужда от отключен буутлоудър. Въпреки че това може да провали целта на цялото изпитание, не трябва да бъде по този начин и ни е казано, че ще бъде поправено. Google планира потребителите да могат да зареждат подписани от Google GSI чрез DSU, без да е необходимо да отключват буутлоудъра. Всъщност Google изисква това всички стартиращи устройства с Android 10 включват публичните ключове за Android Verified Boot на подписани от Google Android 10, Android 11 и Android 12 GSI. Включването на публичните ключове на AVB в ramdisk на устройството ще гарантира, че AVB няма да отхвърли GSI, който се опитвате да стартирате. Ето защо настоящият метод включва отключване на буутлоудъра - чрез флашване на празно vbmeta изображение към vbmeta дяла, деактивирате AVB, така че да не отхвърли GSI, който се каните да флашнете. Деактивирането на AVB обаче е основен риск за сигурността, тъй като означава, че всички модифицирани system/boot/product/vendor partition може да бъде зареден на устройството, поради което Google иска да направи далеч от това изискване.
И така, кога можете да очаквате да стартирате GSI през DSU, без да се налага да отключвате буутлоудъра или да използвате инструменти от командния ред? Надяваме се скоро, тъй като Google ни спомена, че са имали няколко пречки за изглаждане с първоначалните визуализации за разработчици на Android 11, преди да успеят да накарат всичко това да работи правилно. Продължавайки напред, може да се очаква да се инсталират бъдещи Developer Preview GSI чрез DSU, без да е необходимо да отключвате буутлоудъра. Може би, когато Android 12 Developer Previews бъдат предоставени, дори ще можете да го стартирате изцяло, като използвате DSU Loader в опциите за разработчици на Android 11. За разработчиците на приложения това означава, че ще има още един начин да тествате приложенията си на физически хардуер, работещ с нова версия на Android.