Примечания к выпуску Android 9

На этой странице представлены основные функции выпуска Android 9 и ссылки на дополнительную информацию. Эти обзоры функций организованы в соответствии с расположением документации по функциям на этом сайте. Руководство по перемещению и переименованию разделов см. в обновлениях сайта за август 2018 г.

Строить

Общий образ системы (GSI)

Общий образ системы (GSI) — это образ системы с настроенными конфигурациями для устройств Android. Универсальный образ системы (GSI) содержит подробные сведения о различиях между GSI для устройств, запускаемых с Android 9, и устройств, обновляющихся до Android 9.

Архитектура

Уровень аппаратной абстракции (HAL)

Обратная совместимость фреймворка HIDL

Проверка обратной совместимости фреймворка HIDL — это метод проверки обратной совместимости фреймворка.

Динамически доступные HAL

Динамически доступные HAL поддерживают динамическое отключение аппаратных подсистем Android, когда они не используются или не нужны.

HIDL

Блок памяти HIDL

HIDL MemoryBlock — это абстрактный слой, построенный на hidl_memory , HIDL @1.0::IAllocator и HIDL @1.0::IMapper . Он разработан для служб HIDL, которые имеют несколько блоков памяти, совместно использующих одну кучу памяти.

Наложения дерева устройств

Сжатые наложения

Android 9 и более поздние версии включают поддержку сжатых наложений в образе наложения больших двоичных объектов дерева устройств (DTBO) при использовании версии 1 заголовка таблицы дерева устройств.

обновления DTO

Android 9 и более поздние версии требуют, чтобы загрузчик передал ядру унифицированный большой двоичный объект дерева устройств перед изменением свойств, определенных в наложениях дерева устройств (DTO) .

Управление версиями заголовков изображений DTBO

Android 9 и выше включает поле версии в заголовке изображения DTBO.

проверка DTBO

Для Android 9 и выше требуется раздел DTBO. Чтобы добавить узлы или внести изменения в свойства в SoC DT, загрузчик должен динамически наложить специфичное для устройства DT на SoC DT. Дополнительные сведения см. в разделе Компиляция и проверка .

Соответствие ядра

Android 9 и более поздние версии включают требования, влияющие на ядро, его интерфейсы и использование DTBO. Для получения дополнительной информации см. эти страницы:

Поставщик НДК

Изменения дизайна

Информацию об изменениях дизайна VNDK в Android 9 и более поздних версиях см. на этих страницах:

ABI-чекер

На странице « Стабильность ABI » описывается средство проверки двоичного интерфейса приложения (ABI), которое гарантирует, что изменения, внесенные в библиотеки VNDK, поддерживают соответствие ABI.

Снимки ВНДК

Образ системы может использовать моментальные снимки VNDK для предоставления правильных библиотек VNDK образам поставщиков, даже если образы системы и поставщика созданы из разных версий Android.

Объект интерфейса поставщика (объект VINTF)

На следующих страницах в разделе Vendor Interface Object описываются обновления в Android 9 и более поздних версиях:

График устаревания HIDL

На следующих страницах описывается, как Android устаревает и удаляет HIDL HAL:

Загрузчик

Разделы продуктов

Android 9 и более поздние версии поддерживают создание разделов /product с использованием системы сборки Android. Ранее в Android 8.x применялось разделение компонентов, специфичных для системы на кристалле (SoC), из раздела /system в раздел /vendor без выделения места для OEM-компонентов, созданных из системы сборки Android.

Соответствие каноническим причинам загрузки

На странице Canonical Boot Reason описаны изменения в спецификации причины загрузки загрузчика в Android 9 и выше.

Система как корень

Все устройства, запускаемые с 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 (CDD)

Документ определения совместимости с Android 9 повторяет предыдущие версии с обновлениями для новых функций и изменениями требований к ранее выпущенным функциям.

Настройки

Улучшенные виджеты приложений

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

Производителям необходимо обновить свои приложения запуска (которые поставляются с устройствами), чтобы поддерживать эту функцию, если она не основана на Launcher3. OEM-производителям необходимо поддерживать новое поле widgetFeatures в своей программе запуска по умолчанию.

Обратите внимание, что эта функция работает от начала до конца только тогда, когда программы запуска реализуют ее должным образом. AOSP включает пример реализации. См. идентификатор изменения AOSP 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

Пакеты 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. См. эти страницы для получения дополнительной информации:

Широкое поле зрения ITS-in-a-box

ITS-in-a-box с широким полем зрения — это автоматизированная система, предназначенная для тестирования систем камер с широким полем зрения (WFoV) и обычным полем зрения (RFoV) в Camera ITS.

Набор тестов поставщика (VTS)

Архитектура хост-контроллера

Архитектура хост-контроллера 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)

Шифрование на основе файлов (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 изменил модель привязки версии ключа , чтобы иметь отдельные уровни исправлений для каждого раздела. Это позволяет обновлять каждый раздел независимо, сохраняя при этом защиту от отката.

Android Защищенный API подтверждения

Поддерживаемые устройства, которые запускаются с установленной ОС Android 9, дают разработчикам возможность использовать Android Protected Confirmation API . С помощью этого API приложения могут использовать экземпляр ConfirmationPrompt для отображения приглашения пользователю с просьбой утвердить короткое заявление. Этот оператор позволяет приложению подтвердить, что пользователь хочет выполнить конфиденциальную транзакцию, например совершить платеж.

SELinux

Песочница SELinux для каждого приложения

Песочница приложения имеет новые средства защиты и тестовые примеры, чтобы гарантировать, что все непривилегированные приложения, использующие Android 9 и более поздние версии, запускают отдельные песочницы SELinux.

Высокие изменения SELinux

Обновления Treble SELinux в Android 9 и выше задокументированы на нескольких страницах в разделе SELinux .

Инициализация поставщика

Vendor init закрывает дыру в разделении Treble между системой и поставщиком, используя отдельный домен SELinux для запуска команд /vendor с разрешениями, специфичными для поставщика.

Свойства системы

Android 9 ограничивает ненужное совместное использование системных свойств между разделами system и vendor и предоставляет метод обеспечения согласованности между общими системными свойствами.

Тесты атрибутов SELinux

Android 9 включает новые тесты времени сборки, которые гарантируют, что все файлы в определенных местах имеют соответствующие атрибуты . Например, все файлы в sysfs имеют обязательный атрибут sysfs_type .

Аудио

Звуковые эффекты высокого разрешения

Обновления звуковых эффектов высокого разрешения включают преобразование обработки эффектов из формата int16 в формат с плавающей запятой и увеличение количества одновременных выходных дорожек клиента, максимальной памяти клиента/сервера и общего количества смешанных дорожек.

Камера

Внешние USB-камеры

Android 9 и более поздние версии поддерживают использование подключаемых USB-камер (то есть веб-камер) с использованием стандартного Android Camera2 API и интерфейса камеры HIDL.

Отслеживание движения

Устройства с камерами могут рекламировать возможность отслеживания движения .

Поддержка нескольких камер

Многокамерная камера включает поддержку API для многокамерных устройств через новое логическое устройство камеры, состоящее из двух или более физических устройств камеры, направленных в одном направлении.

Параметры сеанса

Реализация параметров сеанса может сократить задержки, позволяя клиентам камеры активно настраивать подмножество дорогостоящих параметров запроса на этапе инициализации сеанса захвата.

Один производитель, несколько потребительских буферов

Транспортировка буфера камеры от одного производителя к нескольким потребителям — это набор методов, которые позволяют клиентам камеры динамически добавлять и удалять выходные поверхности, пока активен сеанс захвата и идет потоковая передача с камеры.

Связь

Звонки и обмен сообщениями

Реализация планов данных

Android 9 и более поздние версии обеспечивают улучшенную поддержку операторов, реализующих тарифные планы с использованием API-интерфейсов SubcriptionPlan.

Сторонние приложения для звонков

Android 9 и более поздние версии предоставляют API-интерфейсы, которые позволяют сторонним (3P) приложениям для вызовов обрабатывать одновременные входящие вызовы оператора и регистрировать вызовы в системном журнале вызовов.

Перевозчик

Идентификация перевозчика

В 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 помогает улучшить связь и разгрузить трафик.

Рандомизация MAC

Рандомизация MAC-адресов позволяет устройствам использовать случайные MAC-адреса при поиске новых сетей, пока они в данный момент не связаны с сетью. В Android 9 и более поздних версиях можно включить параметр разработчика, чтобы устройство использовало случайный MAC-адрес при подключении к сети Wi-Fi.

Автоматически включать Wi-Fi

Когда включена функция автоматического включения Wi-Fi, Wi-Fi автоматически повторно включается всякий раз, когда устройство находится рядом с сохраненной сетью Wi-Fi с достаточно высоким индикатором относительной мощности принимаемого сигнала (RSSI).

Время прохождения Wi-Fi туда и обратно (RTT)

Время приема-передачи Wi-Fi (RTT) позволяет устройствам измерять расстояние до других поддерживающих устройств, независимо от того, являются ли они точками доступа (AP) или одноранговыми узлами с поддержкой Wi-Fi (если на устройстве поддерживается поддержка Wi-Fi). Эта функция основана на протоколе IEEE 802.11mc и позволяет приложениям использовать повышенную точность и осведомленность о местоположении.

Улучшения оценки Wi-Fi

Усовершенствованные модели оценки 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) одновременно. Для устройств, поддерживающих двухдиапазонный одновременный (DBS) Wi-Fi, это открывает такие возможности, как отсутствие нарушения работы 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 не предоставлено.

Чтобы проверить это поведение, запустите робоэлектрические и ручные тесты.

Для ручного тестирования:

  1. Откройте « Настройки» > «Приложения и уведомления» > «Доступ к специальным приложениям» > «Управление Wi-Fi» .
  2. Выберите и отключите разрешение для вашего приложения.
  3. Убедитесь, что ваше приложение может обрабатывать сценарий, в котором разрешение CHANGE_WIFI_STATE не предоставлено.

Прекращение поддержки WPS

Из-за проблем с безопасностью защищенная настройка Wi-Fi (WPS) в WiFiManager устарела и отключена в Android 9 и более поздних версиях. Однако WiFiDirect по-прежнему использует WPS в запросчике WPA.

Графика

Реализация

Вулкан 1.1 API

Android 9 и выше поддерживает реализацию графического API Vulkan 1.1 .

Инструмент WinScope для отслеживания перехода между окнами

Android 9 и выше включает инструмент WinScope для отслеживания переходов между окнами. WinScope предоставляет инфраструктуру и инструменты для записи и анализа состояния оконного менеджера во время и после переходов. Это позволяет записывать и пошагово переходить окна, записывая все соответствующее состояние оконного менеджера в файл трассировки. Вы можете использовать эти данные для воспроизведения и пошагового перехода.

Исходный код инструмента WinScope находится по адресу platform/development/tools/winscope .

Взаимодействие

Автомобильный звук

Automotive Audio описывает звуковую архитектуру для автомобильных реализаций Android.

Нейронные сети (NN) HAL определяют абстракцию различных ускорителей. Драйверы для этих ускорителей должны соответствовать этому HAL.

Автомобиль HAL

Свойства транспортного средства описывают изменения в интерфейсе HAL транспортного средства.

Выбор спутника GNSS

При работе с новой глобальной навигационной спутниковой системой (GNSS) HAL (v1.1+) Android Framework отслеживает настройки Android. Партнеры могут изменить настройки из сервисов Google Play или других системных обновлений. Эти настройки сообщают GNSS HAL, если определенные спутники GNSS не следует использовать. Это может быть полезно в случае постоянных ошибок спутника GNSS или созвездия или для более быстрого реагирования на проблемы с реализацией HAL GNSS, которые могут возникнуть при смешивании созвездий, использующих разные системы времени и внешние события, такие как скачкообразная секунда, день или номер недели. .

Аппаратная модель ГНСС

В Android 9 GNSS HAL версии 1.1 или выше может передавать информацию об аппаратном API на платформу. Платформа должна реализовать интерфейс IGnssCallback и передать дескриптор в HAL. HAL GNSS передает информацию о модели оборудования через метод LocationManager#getGnssHardwareModelName() . Производители устройств должны работать со своими поставщиками GNSS HAL, чтобы предоставить эту информацию, где это возможно.

Разрешения

Настройка обновлений дискреционного контроля доступа (DAC)

Настройка дискреционного контроля доступа (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 и более поздние версии включают android.hardware.health HAL 2.0, основное обновление версии Health@1.0 HAL. Для получения дополнительной информации см. эти страницы:

Кэширование APK

Android 9 и более поздние версии включают решение для кэширования APK для быстрой установки предварительно загруженных приложений на устройство, которое поддерживает разделы A/B. OEM-производители могут размещать предварительные загрузки и популярные приложения в кеше APK, хранящемся в основном в пустом разделе B на новых устройствах с разделами A/B, не затрагивая какое-либо доступное пользователю пространство данных.

Профильная оптимизация (PGO)

Android 9 и более поздние версии поддерживают использование Clang-управляемой оптимизации (PGO) для собственных модулей Android, которые имеют правила сборки схемы.

Ведение журнала с опережающей записью (WAL)

Специальный режим SQLiteDatabase, называемый ведением журнала совместимости с упреждающей записью (WAL) , позволяет базе данных использовать journal_mode=WAL , сохраняя при этом не более одного соединения на базу данных.

Время загрузки

Android 9 изменяет оптимизацию времени загрузки, как описано в разделе Оптимизация времени загрузки .

Власть

Фоновые ограничения

Android 9 и более поздние версии включают фоновые ограничения , которые позволяют пользователям ограничивать приложения, которые могут расходовать заряд батареи. Система также может предложить отключить приложения, негативно влияющие на работоспособность устройства.

Безбатарейные устройства

Android 9 работает с безбатарейными устройствами более элегантно, чем в предыдущих версиях. Android 9 удаляет код для безбатарейных устройств, которые по умолчанию предполагали, что батарея присутствует, заряжена на 100% и находится в хорошем состоянии с нормальными показаниями температуры на термисторе.