Все, що вам потрібно знати про Android Project Mainline

Project Mainline — це найбільша зміна Android з часів Project Treble. Ось що це означає та що роблять усі модулі. Подивіться!

Однією з найбільших змін в Android за останні роки, яка пройшла поза увагою, якщо говорити про її важливість, було впровадження Проект Mainline в 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 від HAL постачальника та ядра Linux. Project Treble, по суті, модульував Android, відокремивши структуру ОС від специфічного для пристрою програмного забезпечення нижчого рівня. Таким чином, виробникам пристроїв (OEM) не потрібно чекати, доки виробники кремнію (постачальники SoC) оновлять код реалізації свого постачальника, а OEM зможуть самостійно оновлювати структуру ОС Android. Кінцевим результатом є швидше впровадження новіших версій 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-виробників як залежних посередників із цього рівняння. Мета проекту Mainline полягає в тому, щоб Google перехопила контроль над компонентами фреймворку та системними програмами, які є надзвичайно важливо для безпеки та підтримки узгодженості розробки поза OEM-виробниками. Проект Mainline по праву називають в найбільша зміна в Android після Project Treble.

Для Project Mainline Google використовує модулі Mainline, які надаються через структуру Google Play Services і Google Play Store. Кожен модуль Mainline поставляється як файл APK, файл APEX або як файл APK-in-APEX. Коли оновлюється модуль Mainline, користувач бачить на своєму пристрої сповіщення «Оновлення системи Google Play» (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 – це фактично велика співпраця з виробниками пристроїв, щоб переконатися, що єдиний модуль для всієї екосистеми відповідає потребам кожного. Не кожен модуль Mainline є надпотужним модулем APEX — деякі з них є просто файлами APK, які тепер є розповсюдженим Google кодом Android.

Основна лінія проекту — Модулі

В Android 10 Google зобов’язав включити 13 конкретних модулів Mainline. В Android 11 загальна кількість обов’язкових модулів становить 25. Ось повний список разом із деякими ключовими деталями:

Назва модуля

Назва пакета

Тип

Пристрій оновлено до Android 11 або запущено з ним

Пристрій запущено з Android 10

Пристрій оновлено до Android 10

adbd

com.google.android.adbd

APEX

Обов'язково

Не підтримується

Не підтримується

Android Neural Network API Runtime

com.google.android.neuralnetworks

APEX

Обов'язково

Не підтримується

Не підтримується

Вхід на адаптивний портал

com.google.android.captiveportallogin

APK

Обов'язково

Настійно Рекомендовано

Додатково

Стільникове мовлення

com.google.android.cellbroadcast

APEX

Обов'язково

Не підтримується

Не підтримується

Конскрипт

com.google.android.conscrypt

APEX

Обов'язково

Настійно Рекомендовано

Додатково

DNS Resolver

com.google.android.resolv

APEX

Обов'язково

Настійно Рекомендовано

Додатково

Інтерфейс користувача документів

com.google.android.documentsui

APK

Обов'язково

Обов'язково

Додатково

ExtServices - APK

com.google.android.ext.services

APK

Обов'язково

Обов'язково

Обов'язково

ExtServices - APEX

com.google.android.extservices

APEX

Обов'язково

Не підтримується

Не підтримується

Бібліотека IPsec/IKEv2

com.google.android.ipsec

APEX

Обов'язково

Не підтримується

Не підтримується

Медіакодеки

com.google.android.media.swcodec

APEX

Обов'язково

Обов'язково

Додатково

Компоненти медіафреймворку

com.google.android.media

APEX

Обов'язково

Обов'язково

Додатково

Медіапровайдер

com.google.android.mediaprovider

APEX

Обов'язково

Не підтримується

Не підтримується

Метадані модуля

com.google.android.modulemetadata

APK

Обов'язково

Обов'язково

Обов'язково

Компоненти мережевого стеку

com.google.android.networkstack

APK

Обов'язково

Настійно Рекомендовано

Додатково

Конфігурація дозволу мережевого стеку

com.google.android.networkstack.permissionconfig

APK

Обов'язково

Настійно Рекомендовано

Додатково

Контролер дозволів - APK

com.google.android.permissioncontroller

APK

Обов'язково

Обов'язково

Обов'язково

Контролер дозволів - APEX

com.google.android.permission

APEX

Обов'язково

Не підтримується

Не підтримується

Розширення SDK

com.google.android.sdkext

APEX

Обов'язково

Не підтримується

Не підтримується

Statsd

com.google.android.os.statsd

APEX

Обов'язково

Не підтримується

Не підтримується

Пакет телеметрії Train Version

com.google.mainline.telemetry

APK

Обов'язково

Не підтримується

Не підтримується

Прив'язка

com.google.android.tethering

APEX

Обов'язково

Не підтримується

Не підтримується

Дані часового поясу

com.google.android.tzdata

APEX

Не повинен

Обов'язково

Додатково

Дані часового поясу 2

com.google.android.tzdata2

APEX

Обов'язково

Не підтримується

Не підтримується

Wi-Fi³

com.google.android.wifi

APEX

Обов'язково

Не підтримується

Не підтримується

Щоб надати деякий контекст стовпцям вище, стовпець під назвою «Пристрій оновлено до Android 11 або запущено з ним» містить відомості про те, чи повинен модуль бути присутнім (чи не повинен бути присутні, у разі даних часового поясу через включення альтернативи) на всіх пристроях, які або оновлено до Android 11, або запускаються з Android 11 поза коробка. Подібним чином пристрої, які запускаються з Android 10, повинні включати кілька модулів, настійно рекомендується включати кілька інших, а інші не підтримуються. Для пристроїв, оновлених до Android 10 (на відміну від запущених з Android), список необхідних модулів коротший.

Що робить кожен модуль Mainline?

Ось коротке пояснення для кожного з модулів Mainline:

Adbd

Модуль adbd керує сеансами налагодження командного рядка adb і IDE. Модуляція adbd дозволяє Google швидше покращувати продуктивність і виправляти помилки. Це вкрай важливо, оскільки деякі помилки в минулому були пов’язані з розрядженням батареї та могли призвести до того, що пристрої продовжували використовувати 100% ЦП, доки телефон не вимкнеться. Тому отримання цих виправлень має вирішальне значення для Google, оскільки adb широко використовується розробниками додатків і OEM-виробниками для тестування.

Android Neural Networks API Runtime

Це бібліотека, яка розташована між програмою та серверними драйверами. API, у свою чергу, є Android C API для виконання інтенсивних обчислювальних операцій машинного навчання на мобільних пристроях і для включення апаратно-прискорених операцій висновку.

CellBroadcast

Cell Broadcast стосується надзвичайних і ненадзвичайних сповіщень (наприклад, сповіщень AMBER). Цей модуль пов’язаний із завданнями, пов’язаними з цими сповіщеннями, а також з іншими допоміжними функціями, такими як декодування SMS і геозонування для бездротових екстрених сповіщень.

Конскрипт

Модуль Conscrypt обробляє реалізацію TLS Android та інші криптографічні функції, такі як генератори ключів, cipers і дайджести повідомлень. Доставка цього модуля дозволяє Google пришвидшити покращення безпеки, не покладаючись на оновлення OTA.

DNS Resolver

Як випливає з назви, DNS-перетворювач розпізнає DNS, тобто перетворює зрозумілі людині URL-адреси в IP-адреси. Модуль містить код, який реалізує розпізнавач DNS-заглушок, і надсилання його як модуля дозволяє Google забезпечити кращий захист користувачів від перехоплення DNS і атак оновлення конфігурації.

Інтерфейс користувача документів

Інтерфейс користувача документів — це модуль, який відповідає за контроль доступу до певних файлів для компонентів, які обробляють дозволи на документи. Як заявляє Google, створення доступу до сховища та дозволів у модулі підвищує конфіденційність і безпеку для кінцевих користувачів, а функція накладання ресурсів під час виконання (RRO) дозволяє OEM-виробникам тематизувати досвід (посилаючись на програму Файли), якщо їм потрібно до. Як модуль, усі пристрої Google-Android поставлятимуться з однаковим інтерфейсом користувача документів.

ExtServices

Цей модуль містить компоненти основи для основних функцій ОС, таких як рейтинг сповіщень, стратегії автоматичного заповнення тексту, кеш-пам’ять, сторожовий таймер пакетів та інші служби.

Бібліотека IPsec/IKEv2

Цей модуль бібліотеки стосується нових і існуючих функцій, пов’язаних із взаємодією бездротової локальної мережі (IWLAN) і VPN, як-от узгодження параметрів безпеки, таких як ключі, алгоритми та тунель конфігурації. Ідея модульної побудови цих функцій полягає в тому, щоб сприяти узгодженості екосистеми та забезпечити спосіб швидкого вирішення проблем безпеки та сумісності.

Це три роздвоєні модулі, але вони мають функції, які залежать один від одного. Ці медіа-модулі обробляють типи та коди медіа, взаємодіють із ExoPlayer, надають елементи керування транспортуванням та інформацію про відтворення в структуру, оптимізують індексовані метадані тощо. Пам'ятайте Stagefright, експлойт, який змінив Android і створили саму концепцію щомісячних оновлень безпеки платформи? Цей експлойт покладався на вразливості в бібліотеці відтворення медіа. Таким чином, модульність медіа-компонентів дозволяє Google швидко та широко реагувати на випадки виявлення помилок безпеки в цьому часто цільовому компоненті.

Функція цього модуля зрозуміла відразу з назви, хоча його призначення – ні. Модуль метаданих модуля містить... метадані про список модулів на пристрої. І це приблизно все.

Компоненти мережевого стеку, конфігурація дозволу мережевого стеку, вхід на адаптивний портал

Модуль Network Stack Components надає загальні IP-сервіси, моніторинг підключення до мережі, виявлення порталу авторизації. Модуль конфігурації дозволів визначає дозвіл, який дозволяє іншим модулям виконувати завдання, пов’язані з мережею. Модуль входу на портал адаптивного порталу працює з порталами авторизації — веб-сторінками, які відображаються, коли підключений до певних загальнодоступних мереж Wi-Fi, де користувача просять ввести дані, щоб отримати Інтернет доступу.

Контролер дозволів

Цей модуль надає оновлювані політики конфіденційності та елементи інтерфейсу користувача щодо надання та керування дозволами. Якщо це звучить знайомо для того, що робить Package Installer, це тому, що це так. Такі функції, як надання дозволів під час виконання, керування та відстеження використання, були частиною програми Package Installer до Android 9. В Android 10 програма Package Installer поділена на розділи, щоб дозволити оновлювати логіку дозволів. Модуль «Контролер дозволів» поставляється як файл APK, і в Android 11 модуль може автоматично скасовувати дозволи на виконання для додатків, які не використовувалися протягом тривалого періоду часу.

Розширення SDK

Цей модуль трохи складний для розуміння та, відповідно, для пояснення. Кожній версії Android призначається рівень SDK (зазвичай +1 від попередньої версії). Коли програма націлена на певний SDK, передбачається, що розробник взяв до уваги поведінку платформи та зміни API, які принесла версія Android.

Модуль розширень SDK визначає рівень "розширень SDK" пристрою та надає API для програм, щоб запитувати рівень розширення SDK. Це приблизно все, що зазначено в офіційній документації. ArsTechnica, хоча, згадки що це, ймовірно, вторинний рівень API, який буде доставлено через Play Store.

Statsd, пакет версій курсу телеметрії

Statsd відповідає за збір показників пристрою. З іншого боку, пакет версії Telemetry Train не містить активного коду чи будь-яких власних функцій. Він просто містить номер версії для «Telemetry Train», який, за словами Google, є набором модулів, пов’язаних із показниками. На основі номера версії Google Play відображає кінцевим користувачам версію виправлення безпеки та визначає, чи доступні оновлення для модулів, пов’язаних із показниками.

Прив'язка

Модуль Tethering надає доступ до Інтернет-з’єднання пристрою з іншими підключеними клієнтськими пристроями через Wi-Fi, USB, Bluetooth або Ethernet. Модуль містить компоненти прив’язки та їхні залежності. Використовуючи цей модуль Tethering, OEM-виробники можуть покладатися на єдину стандартну еталонну реалізацію та забезпечити узгоджену роботу на всіх пристроях.

Дані часового поясу

Модуль даних часових поясів оновлює літній час (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, а також виправляти проблеми сумісності за допомогою оновлень модулів, програм розробники можуть зменшити фрагментацію платформи, а OEM-виробники можуть задовольнити вимоги операторів, одночасно зменшивши витрати для окремих користувачів налаштування.


Сподіваємось, ця стаття підкреслює, наскільки важливим є Project Mainline для екосистеми Android Google.