На этой странице представлен обзор основных функций версии Android 9 и ссылки на дополнительную информацию. Обзоры функций организованы в соответствии с расположением документации на сайте. Руководство по перемещению и переименованию разделов см. в обновлениях сайта за август 2018 года .
Строить
Универсальный системный образ (GSI)
Универсальный образ системы (GSI) — это образ системы с изменёнными конфигурациями для устройств Android. Универсальный образ системы (GSI) содержит подробную информацию о различиях между GSI для устройств с Android 9 и устройств, обновляемых до Android 9.
Архитектура
Уровень аппаратной абстракции (HAL)
Обратная совместимость с фреймворком HIDL
Проверка обратной совместимости фреймворка HIDL — это метод проверки обратной совместимости фреймворка.
Динамически доступные HAL
Динамически доступные HAL поддерживают динамическое отключение аппаратных подсистем Android, когда они не используются или не нужны.
ХИДЛ
Блок памяти HIDL
HIDL MemoryBlock — это абстрактный слой, построенный на hidl_memory
, HIDL @1.0::IAllocator
и HIDL @1.0::IMapper
. Он разработан для HIDL-сервисов, использующих несколько блоков памяти, совместно использующих одну кучу памяти.
Наложения дерева устройств
Сжатые наложения
В Android 9 и более поздних версиях реализована поддержка сжатых наложений в изображении наложения двоичного ...
обновления DTO
Для Android 9 и более поздних версий требуется, чтобы загрузчик передал объединенный двоичный объект дерева устройств ядру перед изменением свойств, определенных в наложениях дерева устройств (DTO) .
Управление версиями заголовка изображения DTBO
В Android 9 и более поздних версиях поле версии присутствует в заголовке образа DTBO.
Проверка DTBO
Для Android 9 и более поздних версий требуется раздел DTBO. Для добавления узлов или изменения свойств в SoC DT загрузчик должен динамически наложить DT, специфичный для устройства, поверх SoC DT. Подробнее см. в разделе «Компиляция и проверка» .
Соответствие ядра
В Android 9 и более поздних версиях есть требования, влияющие на ядро, его интерфейсы и использование DTBO. Подробнее см. на следующих страницах:
- Стабильные версии ядра и обновления
- Общие ядра Android
- Требования к модульному ядру
- Требования к интерфейсу
- Наложения дерева устройств
Поставщик НДК
Изменения дизайна
Информацию об изменениях дизайна VNDK в Android 9 и более поздних версиях см. на следующих страницах:
- Комплект разработчика Vendor Native (VNDK)
- Поддержка системы сборки VNDK
- Инструмент определения VNDK
- Каталоги, правила и sepolicy
- Расширения VNDK
- Пространство имен компоновщика
Проверка ABI
На странице «Стабильность ABI» описывается средство проверки двоичного интерфейса приложения (ABI), которое гарантирует, что изменения, вносимые в библиотеки VNDK, соответствуют требованиям ABI.
Снимки VNDK
Образ системы может использовать снимки VNDK для предоставления правильных библиотек VNDK образам поставщика, даже если образы системы и поставщика созданы из разных версий Android.
Объект интерфейса поставщика (объект VINTF)
На следующих страницах раздела «Объект интерфейса поставщика» описываются обновления в Android 9 и выше:
График прекращения поддержки HIDL
На следующих страницах описывается, как Android прекращает поддержку и удаляет HIDL HAL:
Загрузчик
Разделы продукта
Android 9 и более поздние версии поддерживают сборку разделов /product
с помощью системы сборки Android. Ранее в Android 8.x компоненты, специфичные для систем на кристалле (SoC), были перенесены из раздела /system
в раздел /vendor
без выделения места для компонентов OEM, собранных с помощью системы сборки Android.
Соответствие каноническим причинам загрузки
На странице Canonical Boot Reason описываются изменения в спецификации причин загрузки загрузчика в Android 9 и более поздних версиях.
Система как root
Все устройства, работающие под управлением Android 9 и выше, должны использовать system-as-root , которая объединяет ramdisk.img
в system.img
(также известный как no-ramdisk), который, в свою очередь, монтируется как rootfs.
Управление версиями заголовка загрузочного образа
В Android 9 и более поздних версиях заголовок загрузочного образа содержит поле для указания версии заголовка . Загрузчик должен проверить это поле и проанализировать заголовок соответствующим образом.
DTBO в процессе восстановления
Чтобы предотвратить сбои OTA из-за несоответствий между образом восстановления и разделом DTBO на устройствах, отличных от A/B, образ восстановления должен содержать информацию из образа DTBO .
Отображать
Вырезы на дисплее
Вырезы в дисплеях позволяют разработчикам приложений создавать захватывающие, интерактивные пространства, при этом оставляя место для важных датчиков на передней панели устройств.
Повернуть предложения
Обновления функций поворота экрана В Android 9 и более поздних версиях реализована поддержка элемента управления, обращенного к пользователю, для закрепления поворота экрана в альбомной или портретной ориентации даже при изменении положения устройства.
Синхронизированные переходы приложений
Синхронизированные переходы приложений позволяют создавать новые анимации переходов приложений.
Классификация текста (ранее TEXTCLASSIFIER)
В Android 9 и более поздних версиях есть служба классификатора текста , которая является рекомендуемым способом реализации классификации текста, а также реализация службы по умолчанию.
Широкий цветовой охват
Android 9 и более поздние версии поддерживают широкий цветовой охват, включая:
- Высокий динамический диапазон (HDR)
- Обработка контента в цветовом пространстве BT2020, но не как конечного целевого пространства данных
Для использования широкого цветового охвата весь стек отображения устройства (например, экран, аппаратный компоновщик, графический процессор) должен поддерживать широкий цветовой охват или форматы буфера. Устройства не обязаны заявлять о поддержке контента с широким цветовым охватом, даже если его поддерживает оборудование. Тем не менее, для использования всех возможностей оборудования широкий цветовой охват должен быть включен. Во избежание нестабильных визуальных эффектов, широкий цветовой охват не следует отключать во время работы.
Совместимость
Документ с определением совместимости Android
Документ определения совместимости Android 9 (CDD) является продолжением предыдущих версий с обновлениями для новых функций и изменениями требований для ранее выпущенных функций.
Настройки
Улучшенные виджеты приложений
Фреймворк виджетов приложений Android обеспечивает улучшенную прозрачность действий пользователя, особенно при удалении или добавлении виджетов вручную. Эта функция доступна по умолчанию в Launcher3.
Производителям необходимо обновить свои приложения-лаунчеры (поставляемые вместе с устройствами) для поддержки этой функции, если они не основаны на Launcher3. Производителям оригинального оборудования (OEM) необходимо обеспечить поддержку нового поля widgetFeatures в своих приложениях-лаунчерах по умолчанию.
Обратите внимание, что эта функция работает сквозным образом только в том случае, если лаунчеры реализуют её должным образом. AOSP включает пример реализации. Пример кода см. в AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca.
Уведомления об изменении состояния устройства для установщиков пакетов
Защищённое системное широковещательное сообщение может быть отправлено приложениям с разрешением INSTALL_PACKAGES
при каждом изменении таких свойств, как локальные настройки или плотность отображения. Приёмники можно зарегистрировать в манифесте, и процесс активируется для получения широковещательного сообщения. Это полезно для установщиков пакетов, которые хотят установить дополнительные компоненты приложений при таких изменениях, что встречается редко, поскольку изменения конфигурации, которые могут вызвать это широковещательное сообщение, редки.
Исходный код уведомления об изменении состояния устройства находится в следующих местах в platform/frameworks/base
:
-
api/system-current.txt
-
core/java/android/content/Intent.java
-
core/res/AndroidManifest.xml
-
services/core/java/com/android/server/am/ActivityManagerService.java
Информационная архитектура
Изменения в информационной архитектуре приложения «Настройки» обеспечивают большую функциональность и более простую реализацию.
Тесты
Атест
Инструмент командной строки Atest позволяет вам создавать, устанавливать и запускать тесты Android локально, что значительно ускоряет повторные запуски тестов и не требует знания параметров командной строки тестовой среды Trade Federation.
Набор тестов совместимости
Загрузки CTS
Пакеты тестов совместимости (CTS), поддерживающие Android 9, доступны на странице загрузок CTS . Исходный код включённых тестов можно синхронизировать с тегом android-cts-9.0_r1
в дереве открытого исходного кода.
Варианты CTS
Для Android 9 CTS v2 получает следующую команду и аргумент :
-
run retry
повторяет все тесты, которые не были выполнены или не были выполнены в предыдущих сеансах. -
'--shard-count
разбивает CTS-запуск на заданное количество независимых фрагментов для параллельной работы на нескольких устройствах.
Кроме того, ранее недокументированная команда --retry-type
была добавлена в тот же справочник команд консоли CTS v2.
Служба Secure Element (SE)
Служба Secure Element проверяет наличие глобальных поддерживаемых платформой элементов безопасности, определяя, есть ли на устройствах реализация SE HAL, и если да, то сколько. Это используется в качестве основы для тестирования API и реализации базового элемента безопасности.
Блок слияния датчиков
Модуль слияния сенсоров используется в тесте слияния сенсоров Camera Image Test Suite (Camera ITS) и тесте синхронизации нескольких камер и обеспечивает согласованную тестовую среду для измерения точности временных меток камеры и других сенсоров телефонов Android. Подробнее см. на этих страницах:
- Краткое руководство пользователя Sensor Fusion Box содержит инструкции по первоначальной настройке теста Sensor Fusion Box и самого Sensor Fusion Box.
- Сборка блока сенсорной сшивки содержит инструкции по сборке блока сенсорной сшивки.
Широкое поле зрения ITS-in-a-box
Широкоугольная система ITS-in-a-box представляет собой автоматизированную систему, предназначенную для тестирования систем камер с широким полем зрения (WFoV) и обычным полем зрения (RFoV) в камере ITS.
Тестовый набор поставщика
Архитектура хост-контроллера
Архитектура хост-контроллера Vendor Test Suite (VTS) представляет собой архитектуру тестовой среды VTS, интегрированную с ее облачной службой предоставления тестов.
Тестирование HAL с учетом имени сервиса
Тестирование HAL с учетом имени службы VTS поддерживает получение имени службы заданного экземпляра HAL на основе устройства, на котором выполняются тесты VTS.
Проверка тестируемости HAL
Проверка тестируемости VTS HAL включает в себя метод выполнения, позволяющий использовать конфигурацию устройства для определения того, какие тесты VTS следует пропустить для данного целевого устройства.
Автоматизированная инфраструктура тестирования
Инфраструктура автоматизированного тестирования представляет собой инфраструктуру VTS для автоматизированного тестирования VTS, CTS или других тестов на партнерских устройствах, на которых запущен универсальный образ системы AOSP (GSI).
Отладка
Расширенная телеметрия
В Android телеметрия — это процесс автоматического сбора информации об использовании и диагностике устройства, системы Android и приложений. В предыдущих версиях Android стек телеметрии был ограничен и не позволял собирать информацию, необходимую для выявления и устранения проблем с надёжностью системы и устройствами или приложениями. Это затрудняло, а порой и вовсе делало невозможным, выявление первопричин проблем.
В Android 9 реализована функция телеметрии statsd
, которая решает этот недостаток, собирая более качественные данные быстрее. statsd
собирает статистику использования приложений, расхода заряда батареи и процессов, а также информацию о сбоях. Эти данные анализируются и используются для улучшения продуктов, оборудования и услуг.
Более подробную информацию см. frameworks/base/cmds/statsd/
.
Функции безопасности
Подписание приложений
Схема подписи APK v3 поддерживает ротацию ключей APK.
Биометрическая поддержка
В Android 9 есть открытый класс BiometricPrompt
, который приложения могут использовать для интеграции поддержки биометрической аутентификации независимо от устройства и модальности. Подробнее об интеграции вашего биометрического стека с BiometricPrompt
см. в разделе «Биометрия» .
Динамический анализ
Android 9 включает поддержку большего количества инструментов анализа и нейтрализации эксплойтов .
Целостность потока управления (CFI)
Целостность потока управления (CFI) — это механизм безопасности, который запрещает вносить изменения в исходный граф потока управления скомпилированного двоичного файла, что значительно затрудняет выполнение таких атак.
Ядро CFI
Помимо системного CFI, который включен по умолчанию, Android 9 и выше включает поддержку целостности потока управления ядром (CFI) .
Шифрование
Шифрование на основе файлов
Файловое шифрование (FBE) обновлено для работы с адаптивными хранилищами . Новые устройства должны использовать файловое шифрование вместо полного шифрования диска.
Шифрование метаданных
В Android 9 и более поздних версиях реализована поддержка шифрования метаданных при наличии аппаратной поддержки. При шифровании метаданных один ключ, присутствующий во время загрузки, использует файловое шифрование для шифрования любого незашифрованного контента.
Хранилище ключей
Android 9 и выше включает Keymaster 4 , в котором реализованы следующие функции.
Сейф
В Android 9 и более поздних версиях реализована поддержка ключей Android Keystore, которые хранятся и используются в физически отдельном процессоре, специально разработанном для приложений с высоким уровнем безопасности, таких как встроенный защищенный элемент (SE) . StrongBox Keymaster — это реализация Keymaster HAL в виде отдельного защищенного оборудования. StrongBox обладает следующими характеристиками:
- Дискретный процессор
- Интегрированное безопасное хранилище
- Высококачественный генератор случайных чисел
- Упаковка с защитой от несанкционированного доступа
- Сопротивление бокового канала
Безопасный импорт ключей
Для безопасного импорта ключа в Keymaster 4 ключ, созданный вне устройства, шифруется с использованием спецификации разрешений, которые определяют, как может использоваться ключ.
Поддержка 3DES
Keymaster 4 включает в себя 3DES для совместимости с устаревшими системами, использующими 3DES.
Привязка версии
Чтобы поддержать модульную структуру Treble и разорвать привязку system.img
к boot.img
, Keymaster 4 изменил модель привязки версий ключей , добавив отдельные уровни исправлений для каждого раздела. Это позволяет обновлять каждый раздел независимо, сохраняя при этом защиту от откатов.
API подтверждения безопасности Android
Поддерживаемые устройства с установленной ОС Android 9 предоставляют разработчикам возможность использовать API Android Protected Confirmation . С помощью этого API приложения могут использовать экземпляр ConfirmationPrompt
для отображения пользователю запроса на подтверждение короткого утверждения. Это утверждение позволяет приложению подтвердить, что пользователь хочет завершить конфиденциальную транзакцию, например, совершить платёж.
SELinux
Песочница SELinux для каждого приложения
Песочница приложений оснащена новыми средствами защиты и тестовыми примерами, которые гарантируют, что все непривилегированные приложения, предназначенные для Android 9 и более поздних версий, запускают отдельные песочницы SELinux.
Изменения в SELinux в тройном размере
Обновления Treble SELinux в Android 9 и выше описаны на нескольких страницах в разделе SELinux .
Инициализация поставщика
Vendor init закрывает дыру в разделении Treble system/vendor, используя отдельный домен SELinux для запуска команд /vendor
с разрешениями, специфичными для поставщика.
Свойства системы
Android 9 ограничивает ненужное совместное использование системных свойств между system
и разделами vendor
и предоставляет метод обеспечения согласованности между общими системными свойствами.
Тесты атрибутов SELinux
В Android 9 включены новые тесты во время сборки , которые гарантируют, что все файлы в определённых местах имеют соответствующие атрибуты . Например, все файлы в sysfs
имеют требуемый атрибут sysfs_type
.
Аудио
Аудиоэффекты высокого разрешения
Обновления аудиоэффектов высокого разрешения включают преобразование обработки эффектов из формата int16 в формат float, а также увеличение числа одновременных клиентских выходных дорожек, максимального объема клиентской/серверной памяти и общего количества микшированных дорожек.
Камера
Внешние USB-камеры
Android 9 и выше поддерживает использование подключаемых USB-камер (то есть веб-камер) с использованием стандартного API Android Camera2 и интерфейса HIDL камеры.
Отслеживание движения
Устройства с камерами могут демонстрировать возможность отслеживания движения .
Поддержка нескольких камер
Поддержка нескольких камер включает поддержку API для многокамерных устройств через новое логическое устройство камеры, состоящее из двух или более физических устройств камеры, направленных в одном направлении.
Параметры сеанса
Реализация параметров сеанса может сократить задержки, позволяя клиентам камеры активно настраивать подмножество дорогостоящих параметров запроса в рамках фазы инициализации сеанса захвата.
Буфер с одним производителем и несколькими потребителями
Транспортировка буфера камеры с одним производителем и несколькими потребителями представляет собой набор методов, который позволяет клиентам камеры динамически добавлять и удалять выходные поверхности, пока активен сеанс захвата и осуществляется потоковая передача данных с камеры.
Связность
Звонки и сообщения
Внедрение тарифных планов
Android 9 и более поздние версии обеспечивают улучшенную поддержку операторов , реализующих тарифные планы с использованием API SubscriptionPlan.
Сторонние приложения для звонков
Android 9 и более поздние версии предоставляют API, которые позволяют сторонним приложениям для совершения звонков обрабатывать одновременные входящие вызовы оператора и регистрировать вызовы в системном журнале вызовов.
Перевозчик
Идентификация перевозчика
В Android 9 AOSP добавляет базу данных идентификаторов операторов для упрощения идентификации . База данных минимизирует дублирование логики и фрагментацию приложений, предоставляя единый способ идентификации операторов.
eSIM
Встроенная SIM-карта (eSIM или eUICC) — это новейшая технология, позволяющая пользователям мобильных устройств загружать профиль оператора и активировать услуги оператора без использования физической SIM-карты. В Android 9 и более поздних версиях фреймворк Android предоставляет стандартные API для доступа к eSIM и управления профилями подписки на eSIM. Подробнее см.:
Поддержка нескольких SIM-карт для настроек IMS
В Android 9 и более поздних версиях улучшены пользовательские настройки подсистемы IP-мультимедиа (IMS) . Вы можете настроить голосовую связь по LTE (VoLTE), видеозвонки и звонки по Wi-Fi для каждой подписки, а не использовать эти настройки для всех подписок.
Трансляции состояния SIM-карты
В Android 9 и более поздних версиях Intent.ACTION_SIM_STATE_CHANGED
устарело, и добавлены две отдельные трансляции для состояния карты и состояния приложения карты: TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED
и TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED
.
Благодаря этим изменениям получателям, которым нужно только знать, присутствует ли карта, не придется отслеживать изменения состояния приложения, а получателям, которым нужно только знать, готовы ли приложения карты, не придется отслеживать изменения состояния карты.
Две новые трансляции относятся к @SystemApis и не являются закрепленными. Их могут получать только получатели с разрешением READ_PRIVILEGED_PHONE_STATE
.
Намерения не передаются повторно при разблокировке устройства. Приёмники, зависящие от широковещательных сообщений, отправленных до разблокировки, должны либо использовать directBootAware
, либо запрашивать состояние после разблокировки пользователем. Состояния можно запросить с помощью соответствующих API в TelephonyManager, getSimCardState()
и getSimApplicationState()
.
Wi-Fi
Оператор Wi-Fi
Функция Wi-Fi оператора позволяет устройствам автоматически подключаться к сетям Wi-Fi, предоставляемым оператором. В местах с высокой загруженностью или слабым покрытием сотовой связи, например, на стадионах или станциях метро, Wi-Fi оператора помогает улучшить соединение и разгрузить трафик.
рандомизация MAC
Рандомизация MAC-адресов позволяет устройствам использовать случайные MAC-адреса при поиске новых сетей, даже если они в данный момент не подключены к сети. В Android 9 и более поздних версиях можно включить параметр разработчика, чтобы устройство использовало случайный MAC-адрес при подключении к сети Wi-Fi.
Включить Wi-Fi автоматически
Если функция автоматического включения Wi-Fi включена, Wi-Fi автоматически включается всякий раз, когда устройство находится вблизи сохраненной сети Wi-Fi с достаточно высоким относительным показателем уровня принимаемого сигнала (RSSI).
Время прохождения сигнала туда и обратно по Wi-Fi
Время прохождения сигнала Wi-Fi (RTT) позволяет устройствам измерять расстояние до других поддерживающих устройств, будь то точки доступа (AP) или одноранговые устройства Wi-Fi Aware (если Wi-Fi Aware поддерживается устройством). Эта функция основана на протоколе IEEE 802.11mc и позволяет приложениям использовать улучшенную точность определения местоположения и улучшенную осведомлённость о нём.
Улучшения в оценке Wi-Fi
Улучшенные модели оценки Wi-Fi быстро и точно определяют, когда устройству следует выйти из существующей сети Wi-Fi или подключиться к новой. Эти модели обеспечивают надёжное и бесперебойное подключение, исключая разрывы соединения.
Проверьте и настройте значения RSSI в ресурсах config.xml
, особенно следующие:
-
config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
-
config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
-
config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
-
config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz
Параллелизм Wi-Fi STA/AP
Параллелизм Wi-Fi STA/AP — это возможность устройств одновременно работать в режимах станции (STA) и точки доступа (AP). Для устройств с поддержкой двухдиапазонного одновременного Wi-Fi (DBS) это открывает такие возможности, как возможность не прерывать работу STA Wi-Fi, когда пользователь хочет включить точку доступа (SoftAP).
Улучшения WiFiStateMachine
WifiStateMachine
— основной класс, используемый для управления активностью Wi-Fi, координации пользовательского ввода (режимы работы: точка доступа, сканирование, подключение или выключение) и управления действиями сети Wi-Fi (такими как сканирование или подключение).
В Android 9 и более поздних версиях код фреймворка Wi-Fi и реализация WifiStateMachine
переработаны, что привело к уменьшению размера кода, упрощению логики управления Wi-Fi, повышению детализации управления, а также повышению охвата и качества модульных тестов.
На высоком уровне WifiStateMachine
позволяет Wi-Fi находиться в одном из четырех состояний:
- Режим клиента (можно подключаться и сканировать)
- Режим только сканирования
- Режим SoftAP (точка доступа Wi-Fi)
- Отключено (Wi-Fi полностью отключен)
Каждый режим Wi-Fi предъявляет различные требования к запуску служб и должен быть настроен согласованно, обрабатывая только события, относящиеся к его работе. Новая реализация ограничивает код событиями, относящимися к данному режиму, сокращая время отладки и риск появления новых ошибок из-за сложности. Помимо явного управления функциональностью режима, управление потоками осуществляется согласованно, а использование асинхронных каналов как механизма синхронизации исключено.
Обновления разрешений Wi-Fi
В Android 9 и более поздних версиях разрешение CHANGE_WIFI_STATE
включено по умолчанию. Вы можете отключить это разрешение для любого приложения на странице настроек в разделе «Настройки» > «Приложения и уведомления» > «Специальный доступ приложений» > «Управление Wi-Fi» .
Приложения должны иметь возможность обрабатывать случаи, когда разрешение CHANGE_WIFI_STATE
не предоставлено.
Чтобы проверить это поведение, проведите роботоэлектрические и ручные тесты.
Для ручного тестирования:
- Откройте Настройки > Приложения и уведомления > Специальный доступ к приложениям > Управление Wi-Fi .
- Выберите и отключите разрешение для вашего приложения.
- Убедитесь, что ваше приложение может справиться со сценарием, в котором разрешение
CHANGE_WIFI_STATE
не предоставлено.
Устаревание WPS
Из-за проблем безопасности защищённая настройка Wi-Fi (WPS) в WiFiManager
устарела и отключена в Android 9 и более поздних версиях. Однако WiFiDirect
по-прежнему использует WPS в запрашивающем устройстве WPA.
Графика
Выполнение
API Вулкан 1.1
Android 9 и выше поддерживает реализацию графического API Vulkan 1.1 .
Инструмент WinScope для отслеживания переходов окон
В Android 9 и более поздних версиях доступен инструмент WinScope для отслеживания переходов между окнами. WinScope предоставляет инфраструктуру и инструменты для записи и анализа состояния оконного менеджера во время и после переходов. Он позволяет записывать и пошагово отслеживать переходы между окнами, сохраняя при этом все соответствующее состояние оконного менеджера в файл трассировки. Вы можете использовать эти данные для воспроизведения и пошагового отслеживания переходов.
Исходный код инструмента WinScope находится по адресу platform/development/tools/winscope
.
Взаимодействие
Автомобильная аудиосистема
В разделе «Автомобильное аудио» описывается аудиоархитектура для реализаций Android, связанных с автомобильной промышленностью.
Уровень HAL нейронных сетей (NN) определяет абстракцию различных ускорителей. Драйверы этих ускорителей должны соответствовать этому уровню HAL.
Автомобиль HAL
В разделе «Свойства транспортного средства» описываются изменения в интерфейсе HAL транспортного средства.
Выбор спутников GNSS
При работе с новыми HAL-каналами глобальной навигационной спутниковой системы (ГНСС) (версии 1.1 и выше) Android Framework отслеживает настройки Android. Партнеры могут изменять эти настройки через сервисы Google Play или другие обновления системы. Эти настройки сообщают ГНСС HAL о том, следует ли использовать определённые спутники ГНСС. Это может быть полезно в случае постоянных ошибок спутников ГНСС или созвездий, а также для более быстрого реагирования на проблемы реализации ГНСС HAL, возникающие при смешивании созвездий, использующих разные системы времени, и внешних событий, таких как смена секунд, дня недели или корректировочных номеров.
Аппаратная модель ГНСС
В Android 9 GNSS HAL версии 1.1 или выше может передавать платформе информацию об аппаратном API. Платформа должна реализовать интерфейс IGnssCallback
и передать дескриптор HAL. GNSS HAL передает информацию о модели оборудования через метод LocationManager#getGnssHardwareModelName()
. Производителям устройств следует сотрудничать со своими поставщиками GNSS HAL, чтобы по возможности предоставлять эту информацию.
Разрешения
Настройка дискреционных обновлений контроля доступа
Настройка дискреционного управления доступом (DAC) содержит обновления механизма идентификаторов Android (AID) для расширения возможностей файловой системы.
Белый список разрешений привилегированных приложений
В Android 9 и более поздних версиях, если есть разрешения, которые следует отклонить, отредактируйте XML, чтобы использовать тег deny-permission
вместо тега permission
, который использовался в предыдущих версиях.
Данные
Улучшения в оценке пропускной способности
В Android 9 улучшена поддержка оценки пропускной способности. Приложения Android могут устанавливать более оптимальные настройки разрешения для видеозвонков и потокового видео, если им доступна доступная пропускная способность.
На устройствах под управлением Android 6.0 или выше абонент, желающий оценить пропускную способность сотовой сети, вызывает ConnectivityManager.requestBandwidthUpdate()
, и фреймворк может предоставить расчетную пропускную способность нисходящей линии связи.
Но на устройствах с версией 9 или выше обратный вызов onCapabilitiesChanged()
срабатывает автоматически при существенном изменении расчетной пропускной способности, а вызов requestBandwidthUpdate()
не выполняется; соответствующие методы getLinkDownstreamBandwidthKbps()
и getLinkUpstreamBandwidthKbps()
заполняются обновленной информацией, предоставленной физическим уровнем.
Кроме того, устройства могут проверять пропускную способность сот LTE с помощью ServiceState.getCellBandwidths()
. Это позволяет приложениям определять доступную пропускную способность (частоту) данной соты. Информация о пропускной способности соты доступна через скрытое меню, что позволяет специалистам по полевым испытаниям проверять самую актуальную информацию.
мониторинг трафика eBPF
Инструмент управления сетевым трафиком eBPF использует сочетание реализации ядра и пользовательского пространства для мониторинга использования сети на устройстве с момента последней загрузки. Этот инструмент предоставляет дополнительные функции, такие как маркировка сокетов, разделение приоритетного и фонового трафика, а также межсетевой экран для каждого UID, блокирующий доступ приложений к сети в зависимости от состояния устройства.
Восстановление более низких API
Теперь устройства можно восстанавливать из будущих версий операционной системы. Это особенно полезно, если пользователи обновили свои телефоны, но затем потеряли или сломали их.
Если производитель оригинального оборудования (OEM) изменяет агенты резервного копирования для любого из системных пакетов (Android, system, settings), то эти агенты должны справляться с восстановлением наборов резервных копий, созданных на более поздних версиях платформы, без сбоев и с восстановлением хотя бы части данных.
Рассмотрите возможность использования валидатора для проверки недействительных значений определенного фрагмента резервных данных и восстановления только действительных данных, как в core/java/android/provider/SettingsValidators.java
.
Эта функция включена по умолчанию. Поддержку SettingsBackupAgent для восстановления из будущих версий можно отключить с помощью Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION
. Дополнительная реализация не требуется, если только производитель устройства не расширит возможности одного из агентов резервного копирования, входящих в ПЗУ (или не добавит собственный агент).
Эта функция позволяет восстанавливать систему из будущих версий платформы, однако вполне вероятно, что восстановленные данные будут неполными. Следующие инструкции применимы к следующим агентам резервного копирования:
PackageManagerBackupAgent поддерживает будущие версии данных резервной копии с помощью управления версиями формата; расширения здесь должны быть совместимы с текущим кодом восстановления или следовать инструкциям в классе, которые включают в себя изменение соответствующих констант.
SystemBackupAgent указывает
restoreAnyVersion = false
в Android 9 и выше. Восстановление из более поздних версий API не поддерживается.SettingsBackupAgent указывает
restoreAnyVersion = true
в Android 9 и выше. Частичная поддержка осуществляется через валидаторы. Параметр можно восстановить из API более поздней версии, если для него существует валидатор в целевой ОС. Добавление любого параметра должно сопровождаться его валидатором. Подробности см. в описании класса.Любой пользовательский агент резервного копирования, включенный в ПЗУ, должен увеличивать свой код версии каждый раз, когда вносится несовместимое изменение в формат данных резервной копии, и обеспечивать
restoreAnyVersion = false
(значение по умолчанию), если его агент не готов работать с данными резервной копии из будущей версии его кода.
Предприятие
Улучшения управляемого профиля
Изменения в пользовательском интерфейсе для управляемых профилей упрощают для пользователей идентификацию, доступ и управление управляемым профилем.
Приостановка OTA
Новый @SystemApi позволяет владельцам устройств на неопределенный срок приостанавливать обновления OTA , включая обновления безопасности.
Производительность
Здоровье 2.0
В Android 9 и более поздних версиях включена версия HAL android.hardware.health
2.0, являющаяся основным обновлением версии HAL health@1.0. Подробнее см. на следующих страницах:
Решение для кэширования APK
В Android 9 и более поздних версиях реализовано решение для кэширования APK-файлов для быстрой установки предустановленных приложений на устройствах с поддержкой разделов A/B. OEM-производители могут размещать предустановленные файлы и популярные приложения в кэше APK, хранящемся преимущественно в пустом разделе B на новых устройствах с разделами A/B, не занимая при этом доступное пользователю пространство для хранения данных.
Оптимизация на основе профиля
Android 9 и более поздние версии поддерживают использование профильной оптимизации Clang (PGO) для собственных модулей Android, имеющих правила сборки Blueprint.
Ведение журнала с опережающей записью
Специальный режим SQLiteDatabase, называемый совместимым протоколированием предварительной записи (WAL), позволяет базе данных использовать journal_mode=WAL
сохраняя при этом максимум одно соединение на базу данных.
Время загрузки
В Android 9 внесены изменения в оптимизацию времени загрузки, как описано в разделе Оптимизация времени загрузки .
Власть
Ограничения по фону
В Android 9 и более поздних версиях предусмотрены фоновые ограничения , позволяющие пользователям ограничивать работу приложений, которые могут разряжать аккумулятор. Система также может предлагать отключить приложения, негативно влияющие на работоспособность устройства.
Устройства без батареи
Android 9 работает с устройствами без аккумулятора более элегантно, чем в предыдущих версиях. В Android 9 удален код для устройств без аккумулятора, который по умолчанию предполагал наличие аккумулятора, его 100%-ный уровень заряда и исправность, а также нормальные показания температуры на термисторе.