Все, что вам нужно знать о Project Mainline для Android

Project Mainline — это самое большое изменение в Android со времен Project Treble. Вот что это значит и что делают все модули. Проверьте это!

Одним из самых больших изменений в Android за последние годы, которое осталось незамеченным, относительно его важности, было введение Основная линия проекта в андроид 10. Google предписывает включение определенных модулей Mainline в выпуски Android с Андроид 11 входит с комбинированное обязательное количество модулей основной линии 25. Вот объяснение того, что такое Project Mainline и на что он направлен, а также список всех модулей Android Project Mainline.

Что такое основная линия проекта?

Чтобы правильно понять Project Mainline, нам придется немного вернуться назад. Если вы вернетесь на несколько лет назад, многие разговоры об обновлениях Android были сосредоточены на проблеме фрагментации. Фрагментация была одной из самых больших проблем, которую Google должна была решить на Android в эпоху Ice Cream Sandwich - Lollipop. Несмотря на то, что Android как платформа получала регулярные обновления по во многом предсказуемой схеме, раньше эти обновления доходили до конечных потребителей очень долго, если вообще попадали в руки. Таким образом, пока Google исправляла критические ошибки и проблемы безопасности на уровне платформы, фактическое внедрение этих изменений оставляло желать лучшего. Было/есть много посредников (поставщики SoC, OEM-производители, операторы связи и т. д.) и множество движущихся частей, участвующих в доставке обновлений для ваш телефон, и проблема фрагментации не выглядела так, как будто она решится сама собой, не требуя каких-то жестких действий. вмешательства.

Одна из основных попыток решить эту проблему была предпринята в виде Проект высоких частот наряду с 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-производителей как зависимых посредников. Целью Project Mainline является получение Google контроля над компонентами фреймворка и системными приложениями, которые критически важно для безопасности и поддержания согласованности разработки вдали от OEM-производителей. Project 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. Модульная архитектура позволяет обновлять системные компоненты с помощью исправлений критических ошибок и других улучшения по мере необходимости, не затрагивая реализации поставщиков более низкого уровня или приложения более высокого уровня и услуги.

Как Арс Техника упоминает:

Project Mainline, также известный как «Обновления системы Google Play», был представлен в Android 10 как основная попытка сделать основные системные компоненты Android более модульными и обновляемыми. Mainline представила новый тип файлов «APEX» специально для системных компонентов с целью доставки основного кода Android через Play Store так же легко, как вы отправляете обновление приложения. Раньше единственным поставляемым блоком кода Android был APK, тип файла, изначально разработанный для сторонних приложений. Это сопровождалось всевозможными ограничениями безопасности и могло запускаться только в конце процесса загрузки, поэтому APEX был создан с учетом более мощных системных компонентов. APEX могут быть созданы только Google или производителем вашего устройства, поэтому они могут быть заметно более мощными и содержать важные компоненты загрузки, такие как среда выполнения приложения.

Mainline — это не просто техническое решение, это также возможность централизованно распространять больше частей Android. Google, который включает в себя переговоры с производителями устройств и получение от них согласия на поставку одного и того же блока код. Модули Mainline в конечном итоге становятся обязательными для поставки, поэтому Mainline на самом деле представляет собой большое сотрудничество с производителями устройств, чтобы убедиться, что единый модуль для всей экосистемы отвечает потребностям каждого. Не каждый модуль Mainline является сверхмощным модулем APEX — некоторые из них представляют собой просто APK-файлы, которые теперь являются кодом Android, распространяемым Google.

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

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

Имя модуля

Имя пакета

Тип

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

Устройство, запущенное с Android 10

УстройствоОбновлено до Android 10

adbd

com.google.android.adbd

АПЕКС

Должен

Не поддерживается

Не поддерживается

Среда выполнения API нейронной сети Android

com.google.android.neuralnetworks

АПЕКС

Должен

Не поддерживается

Не поддерживается

Войти в авторизованный портал

com.google.android.captiveportalлогин

АПК

Должен

Настоятельно рекомендуется

Необязательный

Сотовая трансляция

com.google.android.cellbroadcast

АПЕКС

Должен

Не поддерживается

Не поддерживается

Конскрипт

com.google.android.conscrypt

АПЕКС

Должен

Настоятельно рекомендуется

Необязательный

DNS-преобразователь

com.google.android.resolv

АПЕКС

Должен

Настоятельно рекомендуется

Необязательный

Пользовательский интерфейс документов

com.google.android.documentsui

АПК

Должен

Должен

Необязательный

ExtServices - АПК

com.google.android.ext.services

АПК

Должен

Должен

Должен

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.moduleметаданные

АПК

Должен

Должен

Должен

Компоненты сетевого стека

com.google.android.networkstack

АПК

Должен

Настоятельно рекомендуется

Необязательный

Конфигурация разрешений сетевого стека

com.google.android.networkstack.permissionconfig

АПК

Должен

Настоятельно рекомендуется

Необязательный

Контроллер разрешений - АПК

com.google.android.permissioncontroller

АПК

Должен

Должен

Должен

Контроллер разрешений - АПЕКС

com.google.android.permission

АПЕКС

Должен

Не поддерживается

Не поддерживается

Расширения SDK

com.google.android.sdkext

АПЕКС

Должен

Не поддерживается

Не поддерживается

Статистика

com.google.android.os.statsd

АПЕКС

Должен

Не поддерживается

Не поддерживается

Пакет версии поезда телеметрии

com.google.mainline.telemetry

АПК

Должен

Не поддерживается

Не поддерживается

модем

com.google.android.модем

АПЕКС

Должен

Не поддерживается

Не поддерживается

Данные часового пояса

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?

Вот краткое объяснение каждого из модулей Mainline:

Adbd

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

Среда выполнения API нейронных сетей Android

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

CellBroadcast

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

Конскрипт

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

DNS-преобразователь

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

Пользовательский интерфейс документов

Пользовательский интерфейс документов — это модуль, отвечающий за управление доступом к определенным файлам для компонентов, обрабатывающих права доступа к документам. Как заявляет Google, включение доступа к хранилищу и разрешений в модуль повышает конфиденциальность и безопасность для конечных пользователей, в то время как функция наложения ресурсов времени выполнения (RRO) позволяет OEM-производителям создавать темы (ссылаясь на приложение «Файлы»), если им нужно к. В качестве модуля все устройства Google-Android будут поставляться с одним и тем же интерфейсом Documents UI.

ExtServices

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

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

Этот библиотечный модуль занимается новыми и существующими функциями взаимодействующей беспроводной локальной сети. (IWLAN) и VPN, такие как согласование параметров безопасности, таких как ключи, алгоритмы и туннель конфигурации. Идея модульности этих функций состоит в том, чтобы способствовать согласованности экосистемы и предоставлять возможность быстрого решения проблем безопасности и совместимости.

Это три раздвоенных модуля, но у них есть функции, которые зависят друг от друга. Эти медиа-модули обрабатывают типы и коды медиа, взаимодействуют с ExoPlayer, предоставляют платформе средства управления транспортом и информацию о воспроизведении, оптимизируют индексированные метаданные и т. д. Помнить Stagefright — эксплойт, изменивший Android и породил саму концепцию ежемесячных обновлений безопасности платформы? Этот эксплойт основан на уязвимостях в библиотеке воспроизведения мультимедиа. Таким образом, модульность медиа-компонентов позволяет Google быстро и широко реагировать в случае обнаружения ошибок безопасности в этом часто используемом компоненте.

Функция этого модуля сразу понятна из его названия, хотя его назначение — нет. Модуль «Метаданные модуля» содержит... метаданные о списке модулей на устройстве. И это все.

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

Модуль «Компоненты сетевого стека» предоставляет общие IP-сервисы, мониторинг сетевого подключения, обнаружение авторизованного портала входа в систему. Модуль конфигурации разрешений определяет разрешение, которое позволяет другим модулям выполнять задачи, связанные с сетью. Модуль Captive Portal Login имеет дело с Captive Portal — веб-страницами, которые отображаются, когда подключены к определенным общедоступным сетям 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 расширений. Это все, что упоминается в официальной документации. АрсТехника, хотя, упоминает что это, вероятно, вторичный уровень API, который будет поставляться через Play Store.

Statsd, пакет версии поезда телеметрии

Statsd отвечает за сбор метрик устройства. Пакет версии поезда телеметрии, с другой стороны, не содержит активного кода или каких-либо собственных функций. Он просто содержит номер версии для «Telemetry Train», который, по словам Google, представляет собой набор модулей, связанных с метриками. На основе номера версии Google Play отображает конечным пользователям версию исправления безопасности и выясняет, доступны ли обновления для модулей, связанных с показателями.

модем

Модуль модема использует интернет-соединение устройства совместно с другими подключенными клиентскими устройствами через Wi-Fi, USB, Bluetooth или Ethernet. Модуль включает в себя компоненты привязки и их зависимости. Используя этот модуль Tethering, OEM-производители могут полагаться на единую стандартную эталонную реализацию и обеспечить единообразие работы на всех устройствах.

Данные часового пояса

Модуль данных часового пояса обновляет летнее время (DST) и часовые пояса на устройствах Android, стандартизируя как данные (которые могут и изменяется довольно часто в ответ на религиозные, политические и геополитические причины) и механизм обновления в экосистеме. Android 8.1 и Android 9 использовали механизм обновления данных о часовых поясах на основе APK, а Android 10 заменяет его механизмом обновления модуля на основе APEX. Google заявляет, что AOSP продолжает включать код платформы, необходимый для обновлений на основе APK, поэтому устройства, обновляющиеся до Android 10, по-прежнему могут получать обновления данных о часовых поясах, предоставляемые партнерами, через АПК. Однако Google предупреждает, что обновления на основе APK заменяют обновления на основе APEX.

Wi-Fi

Это модуль для функциональности Wi-Fi. Теперь конечные пользователи могут получить согласованную работу Wi-Fi на устройствах Android, а также исправления проблем совместимости с помощью обновлений модулей, приложений разработчики могут уменьшить фрагментацию платформы, а OEM-производители могут выполнять требования операторов связи, а также снижать затраты на отдельные настройки.


Надеемся, что эта статья подчеркивает, насколько важен Project Mainline для экосистемы Android от Google.