Project Mainline е най-голямата промяна в Android след Project Treble. Ето какво означава и какво правят всички модули, вижте!
Една от най-големите промени в Android през последните години, която мина под радара, сравнително казано срещу нейното значение, беше въвеждането на Основна линия на проекта в Android 10. Google налага включването на специфични модули Mainline във версиите на Android, с Android 11 влизайки с a комбинирани задължителни общо 25 основни модула. Ето обяснение какво представлява Project Mainline и какво има за цел да реши, заедно със списък на всички модули Project Mainline на Android.
Какво е Project Mainline?
За да разберем правилно Project Mainline, ще трябва да се върнем малко назад. Ако се върнете няколко години назад, много от разговорите около актуализациите на Android са съсредоточени около проблема с фрагментацията. Фрагментирането беше едно от най-големите предизвикателства, които Google трябваше да разреши на Android около ерата на Ice Cream Sandwich - Lollipop. Въпреки че Android като платформа получаваше редовни актуализации по до голяма степен предсказуем модел, тези актуализации отнемаха много време, за да достигнат до крайните потребители, ако изобщо стигнаха. Така че докато Google поправяше критични грешки и проблеми със сигурността на ниво платформа, действителното внедряване на тези промени остави много да се желае. Имаше/има много посредници (доставчик на SoC, OEM производители, превозвачи и т.н.) и много движещи се части, участващи в доставянето на актуализации на вашия телефон и проблемът с фрагментацията не изглеждаше така, сякаш би се разрешил сам, без да се налага сериозно натискане интервенции.
Едно от основните усилия за справяне с този проблем дойде под формата на Проект Treble заедно с Android 8.0 Oreo, което включва основно преструктуриране на Android, отделяйки компонентите на рамката на Android OS от HAL на доставчика и ядрото на Linux. Project Treble, по същество, модулира Android чрез отделяне на рамката на операционната система от специфичния за устройството софтуер от по-ниско ниво. По този начин производителите на устройства (OEM) не трябва да чакат производителите на силикон (доставчик на SoC) да актуализират своя код за внедряване на доставчика, а OEM производителите могат да актуализират рамката на Android OS независимо. Крайният резултат е по-бързо приемане на по-новите версии на Android от OEM, тъй като вече не е необходимо изчакайте посредникът (доставчикът на SoC) първо да свърши работата си, преди да може да започне техните.
Въпреки че ситуацията с актуализацията на Android не се подобри драстично веднага с Project Treble, тя до голяма степен позволи по-широк OEM участие в бета версии на Android 10 и Android 11, както и улесняване на OEM производителите да актуализират повече от своите устройства по-бързо времева линия. Плюс това, цялата концепция на GSI (Generic System Image) оказа голямо влияние върху развитието на следпродажбеното обслужване в нашите форуми.
Разработчикът зарежда Android 11 на 22 по-стари устройства с Project Treble GSI
Project Mainline разширява усилията на Project Treble. Докато Treble намалява зависимостта на OEM от доставчиците на SoC за всяка отделна актуализация на ОС, Mainline намалява зависимостта на Google от OEM за предоставяне на актуализации за сигурност на ключови компоненти на ОС. Project Mainline разширява философията на Treble до по-критичните части на рамката на Android, като премахва OEM производителите като зависими посредници от това уравнение. Целта на Project Mainline е Google да изтръгне контрола върху компонентите на рамката и системните приложения, които са от решаващо значение за сигурността и поддържането на последователност на разработката далеч от OEM производителите. Проектът Mainline с право се нарича на най-голямата промяна в Android след Project Treble.
За Project Mainline Google използва модули Mainline, които се доставят чрез рамката на Google Play Services и Google Play Store. Всеки модул Mainline се доставя като APK файл, APEX файл или като APK-in-APEX. Когато основният модул се актуализира, потребителят вижда известие „Google Play System Update“ (GPSU) на своето устройство. Ефективно, за да достави актуализации на критични компоненти, Google е заобиколил необходимостта да изчака OEM да пусне актуализация, като е избрал сам да изпълни задачата.
Като Google заявява на уебсайта на Android:
Модулните системни компоненти позволяват на партньорите на Google и Android да разпространяват актуализации широко, бързо и безпроблемно до устройствата на крайните потребители по ненатрапчив начин. Например, комбинацията от фрагментация на медийни кодеци и критични грешки може драстично да забави приемането на приложението и ангажираността на потребителите. Честите актуализации на модулите, свързани с медиите, могат да намалят фрагментацията на кодека, за да направят поведението на медийното приложение по-последователно на различни устройства с Android и да коригират критични грешки, за да изградят доверие на потребителите.
Android 10 или по-нова версия преобразува избрани системни компоненти в модули, някои от които използват контейнерния формат APEX (въведен в Android 10), а други използват APK формата. Модулната архитектура позволява системните компоненти да бъдат актуализирани с корекции на критични грешки и други подобрения, ако е необходимо, без да се засягат внедряванията на доставчици от по-ниско ниво или приложения от по-високо ниво и услуги.
Като Ars Technica споменава:
Проектът Mainline, известен още като „Системни актуализации на Google Play“, беше въведен в Android 10 като голямо усилие да се направят основните системни компоненти на Android по-модулни и обновяеми. Mainline представи нов файлов тип "APEX" специално за системни компоненти, с цел да доставя основния код на Android през Play Store толкова лесно, колкото изпращате актуализация на приложение. Преди това единственият кодов блок на Android, който можеше да се доставя, беше APK, файлов тип, първоначално предназначен за приложения на трети страни. Това дойде с всякакви ограничения за сигурност и можеше да стартира само късно в процеса на зареждане, така че APEX беше създаден с мисъл за по-мощни системни компоненти. APEX могат да бъдат създадени само от Google или производителя на вашето устройство, така че те могат да бъдат значително по-мощни и да съдържат критични компоненти за стартиране, като времето за изпълнение на приложението.
Mainline не е само техническо решение, но и за създаване на повече части от Android, разпространявани централно от Google, което включва преговори с производителите на устройства и всички те да се съгласят да доставят един и същ блок от код. Основните модули в крайна сметка стават задължителни за доставка, така че Mainline всъщност е голямо сътрудничество с производителите на устройства, за да се гарантира, че един модул за цялата екосистема отговаря на нуждите на всички. Не всеки модул Mainline е ултрамощен APEX модул – някои са просто APK файлове, които сега са разпространяван от Google код за Android.
Основна линия на проекта — Модули
С Android 10 Google наложи включването на 13 специфични модула Mainline. С Android 11 общият брой задължителни модули е 25. Ето пълния списък, заедно с някои ключови подробности:
Име на модула |
Име на пакета |
Тип |
Устройство, надстроено до или стартирано с Android 11 |
Устройство, стартирано с Android 10 |
Устройството е надстроено до Android 10 |
---|---|---|---|---|---|
adbd |
com.google.android.adbd |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Android Neural Network API Runtime |
com.google.android.neuralnetworks |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Вход в Captive Portal |
com.google.android.captiveportallogin |
APK |
Трябва да |
Силно препоръчително |
Не е задължително |
Клетъчно излъчване |
com.google.android.cellbroadcast |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Conscrypt |
com.google.android.conscrypt |
АПЕКС |
Трябва да |
Силно препоръчително |
Не е задължително |
DNS преобразувател |
com.google.android.resolv |
АПЕКС |
Трябва да |
Силно препоръчително |
Не е задължително |
Потребителски интерфейс за документи |
com.google.android.documentsui |
APK |
Трябва да |
Трябва да |
Не е задължително |
ExtServices - APK |
com.google.android.ext.services |
APK |
Трябва да |
Трябва да |
Трябва да |
ExtServices - АПЕКС |
com.google.android.extservices |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
IPsec/IKEv2 библиотека |
com.google.android.ipsec |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Медийни кодеци |
com.google.android.media.swcodec |
АПЕКС |
Трябва да |
Трябва да |
Не е задължително |
Компоненти на медийната рамка |
com.google.android.media |
АПЕКС |
Трябва да |
Трябва да |
Не е задължително |
Доставчик на медии |
com.google.android.mediaprovider |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Метаданни на модула |
com.google.android.modulemetadata |
APK |
Трябва да |
Трябва да |
Трябва да |
Компоненти на стека на мрежата |
com.google.android.networkstack |
APK |
Трябва да |
Силно препоръчително |
Не е задължително |
Конфигурация на разрешение за мрежов стек |
com.google.android.networkstack.permissionconfig |
APK |
Трябва да |
Силно препоръчително |
Не е задължително |
Контролер на разрешения - APK |
com.google.android.permissioncontroller |
APK |
Трябва да |
Трябва да |
Трябва да |
Контролер на разрешения - АПЕКС |
com.google.android.permission |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
SDK разширения |
com.google.android.sdkext |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Statsd |
com.google.android.os.statsd |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Телеметричен влак версия пакет |
com.google.mainline.telemetry |
APK |
Трябва да |
Не се поддържа |
Не се поддържа |
Тетъринг |
com.google.android.tethering |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Данни за часовата зона |
com.google.android.tzdata |
АПЕКС |
Не трябва |
Трябва да |
Не е задължително |
Данни за часовата зона 2 |
com.google.android.tzdata2 |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
Wi-Fi³ |
com.google.android.wifi |
АПЕКС |
Трябва да |
Не се поддържа |
Не се поддържа |
За да предостави някакъв контекст на колоните по-горе, колоната, озаглавена „Устройство, надстроено до или стартирано с Android 11“, включва подробности за това дали модулът трябва да присъства (или не трябва присъства, в случай на данни за часовата зона поради включването на алтернативата му) на всички устройства, които или са били надстроени до Android 11, или стартират с Android 11 извън кутия. По същия начин устройствата, стартиращи с Android 10, трябва да включват няколко модула, силно се препоръчва да включват няколко други и не се поддържат от останалите. За устройства, които са надстроени до Android 10 (за разлика от стартирани с Android), списъкът с необходимите модули е по-кратък.
Какво прави всеки модул Mainline?
Ето кратко обяснение за всеки от основните модули:
Adbd
Модулът adbd управлява adb и IDE сесиите за отстраняване на грешки в командния ред. Модулирането на adbd позволява на Google да доставя подобрения на производителността и поправки на грешки по-бързо. Това е от решаващо значение, тъй като някои грешки в миналото бяха свързани с изтощаване на батерията и можеха да накарат устройствата да продължат да използват 100% CPU, докато телефонът умре. Така че получаването на тези корекции е от решаващо значение за Google, тъй като adb се използва широко от разработчиците на приложения и OEM производителите за тестване.
Android Neural Networks API Runtime
Това е библиотека, която се намира между приложение и бекенд драйвери. API от своя страна е Android C API за изпълнение на изчислително интензивни операции за машинно обучение на мобилни устройства и за активиране на хардуерно ускорени операции за извод.
CellBroadcast
Клетъчното излъчване се отнася за спешни и неспешни сигнали (като AMBER сигнали). Този модул се занимава със задачи около тези сигнали и с други спомагателни функции като SMS декодиране и геозониране за безжични аварийни сигнали.
Conscrypt
Модулът Conscrypt обработва внедряването на TLS на Android и други криптографски функции като генератори на ключове, cipers и обобщени съобщения. Изпращането на това като модул позволява на Google да ускори подобренията в сигурността, без да е необходимо да разчита на OTA актуализации.
DNS преобразувател
Както подсказва името, DNS резолверът разрешава DNS, т.е. преобразува четими от човека URL адреси в IP адреси. Модулът съдържа кода, който имплементира DNS резолвера, и изпращането му като модул позволява на Google да осигури по-добра защита на потребителите срещу прихващане на DNS и атаки за актуализиране на конфигурацията.
Потребителски интерфейс за документи
Documents UI е модулът, отговорен за контролиране на достъпа до конкретни файлове за компоненти, които обработват разрешения за документи. Както заявява Google, превръщането на достъпа и разрешенията за съхранение в модул увеличава поверителността и сигурността за крайните потребители, докато функцията за наслагване на ресурси по време на изпълнение (RRO) позволява на OEM производителите да тематизират изживяването (позовавайки се на приложението Файлове), ако имат нужда да се. Като модул, всички устройства с Google-Android ще се доставят със същия потребителски интерфейс за документи.
ExtServices
Този модул включва рамкови компоненти за основната функционалност на ОС, като класиране на известията, стратегии за автоматично попълване на съвпадение на текст, кеш памет, пазач на пакети и други услуги.
IPsec/IKEv2 библиотека
Този библиотечен модул се занимава с нови и съществуващи функции около безжична LAN връзка (IWLAN) и VPN, като например договаряне на параметри за сигурност като ключове, алгоритми и тунел конфигурации. Идеята с модулирането на тези функции е да се насърчи последователността на екосистемата и да се осигури начин за предоставяне на бързи корекции на проблеми със сигурността и оперативната съвместимост.
Това са три раздвоени модула, но те имат функции, които зависят един от друг. Тези медийни модули обработват медийни типове и кодове, взаимодействат с ExoPlayer, излагат транспортни контроли и информация за възпроизвеждане на рамката, оптимизират индексирани метаданни и т.н. Помня Stagefright, експлойтът, който промени Android и доведоха до самата концепция за месечни актуализации на сигурността на платформата? Този експлойт разчиташе на уязвимости в библиотеката за възпроизвеждане на медии. Така че модулирането на медийните компоненти позволява на Google да реагира бързо и широко, в случай че бъдат открити грешки в сигурността в този често целеви компонент.
Функцията на този модул е ясна веднага от името му, въпреки че целта му не е. Модулът с метаданни на модула съдържа...метаданни за списъка с модули на устройството. И това е всичко.
Компоненти на мрежовия стек, Конфигурация на разрешение за мрежов стек, Влизане в Captive Portal
Модулът Network Stack Components осигурява общи IP услуги, наблюдение на мрежовата свързаност, откриване на портал за прихващане за влизане. Модулът за конфигуриране на разрешения дефинира разрешението, което позволява на други модули да изпълняват задачи, свързани с мрежата. Модулът за влизане в Captive Portal се занимава с Captive Portals — уеб страници, които се показват, когато свързан към определени обществени Wi-Fi мрежи, където потребителят е помолен да въведе подробности, за да получи интернет достъп.
Контролер на разрешения
Този модул предоставя актуализирани политики за поверителност и елементи на потребителския интерфейс около предоставянето и управлението на разрешения. Ако това звучи познато за това, което Package Installer прави, това е защото е така. Функции като предоставяне на разрешения за изпълнение, управление и проследяване на използването бяха част от приложението Package Installer до Android 9. В Android 10 приложението Package Installer е разделено на секции, за да позволи актуализирането на логиката на разрешенията. Модулът Permission Controller се доставя като APK файл и в Android 11 модулът може автоматично да отмени разрешенията за изпълнение за приложения, които не са били използвани за продължителен период от време.
SDK разширения
Този модул е малко труден за разбиране и следователно за обяснение. На всяка версия на Android се присвоява ниво на SDK (обикновено +1 от предшественика). Когато едно приложение е насочено към конкретен SDK, се предполага, че разработчикът е взел предвид промените в поведението на платформата и API, донесени от версията на Android.
Модулът за разширения на SDK определя нивото на „SDK за разширение“ на устройството и разкрива API за приложения, за да правят заявки за нивото на SDK за разширение. Това е всичко, което се споменава в официалните документи. ArsTechnica, въпреки това, споменава че това вероятно е вторичен API слой, който ще бъде доставен през Play Store.
Statsd, Телеметричен влак версия пакет
Statsd отговаря за събирането на показатели за устройството. Пакетът за версия на телеметричния влак, от друга страна, не съдържа активен код или собствена функционалност. Той просто съдържа номер на версията за "Telemetry Train", който според Google е набор от модули, свързани с показатели. Въз основа на номера на версията Google Play показва версията на корекцията за сигурност на крайните потребители и установява дали има налични актуализации за модули, свързани с показателите.
Тетъринг
Модулът Tethering споделя интернет връзката на устройството с други свързани клиентски устройства чрез Wi-Fi, USB, Bluetooth или Ethernet. Модулът включва компонентите за тетъринг и техните зависимости. Чрез използването на този модул за Tethering производителите на оригинално оборудване могат да разчитат на единична стандартна референтна реализация и да предоставят последователно изживяване на всички устройства.
Данни за часовата зона
Модулът за данни за часовата зона актуализира лятното часово време (DST) и часовите зони на устройства с Android, стандартизирайки както данните (което може и се променя доста често в отговор на религиозни, политически и геополитически причини) и механизма за актуализиране в цялата екосистема. Android 8.1 и Android 9 използваха базиран на APK механизъм за актуализиране на данните за часовата зона, а Android 10 го заменя с механизъм за актуализиране на модул, базиран на APEX. Google заявява, че AOSP продължава да включва кода на платформата, необходим за базирани на APK актуализации, така че устройствата, надграждащи до Android 10, все още могат да получават предоставени от партньори актуализации на данните за часовата зона чрез APK. Google обаче предупреждава, че актуализациите, базирани на APK, заместват актуализация, базирана на APEX.
Wi-Fi
Това е модулът за Wi-Fi функционалност. Крайните потребители вече могат да получат последователно Wi-Fi изживяване на устройства с Android, както и корекции на проблеми с оперативната съвместимост чрез актуализации на модули, приложение разработчиците могат да получат намалена фрагментация на платформата, а производителите на оригинално оборудване могат да изпълнят изискванията на оператора, като същевременно намалят разходите за отделните потребители персонализации.
Надяваме се, че тази статия подчертава колко важен е Project Mainline за екосистемата на Android на Google.