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

На этой странице представлены основные функции версии 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 и более поздних версий включает поддержку сжатых наложений в изображении наложения BLOB-объектов дерева устройств (DTBO) при использовании версии 1 заголовка таблицы дерева устройств.

Обновления DTO

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

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

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

проверка ДТБО

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

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

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

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

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

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

ABI-проверка

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

Снимки ВНДК

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

ДТБО на выздоровлении

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

Широкое поле зрения ITS-в-коробке

ITS-in-a-box с широким полем зрения — это автоматизированная система, предназначенная для тестирования систем камер как с широким полем зрения (WFoV), так и с обычным полем зрения (RFoV) в Camera 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, которые хранятся и используются в физически отдельном процессоре, специально созданном для приложений с высоким уровнем безопасности, таких как встроенный элемент безопасности (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 . С помощью этого 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 в формат float, а также увеличение количества одновременных выходных дорожек клиента, максимального объема памяти клиента/сервера и общего количества смешанных дорожек.

Камера

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

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

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

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

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

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

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

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

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

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

Возможности подключения

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

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

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

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

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, реализованным оператором связи. В районах с высокой перегрузкой или минимальным покрытием сотовой связи, например на стадионе или станции метро, ​​оператор 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 или войти в новую сеть 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 не предоставлено.

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

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

  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.

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

Автомобиль ХАЛ

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

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

При работе с новой глобальной навигационной спутниковой системой (GNSS) HAL (v1.1+) Android Framework отслеживает настройки Android. Партнеры могут изменять настройки из сервисов Google Play или других обновлений системы. Эти настройки сообщают GNSS HAL, не следует ли использовать определенные спутники GNSS. Это может быть полезно в случае постоянных ошибок спутников или группировок GNSS или для более быстрого реагирования на проблемы реализации GNSS 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 и более поздних версий включает android.hardware.health HAL 2.0 — основное обновление версии health@1.0 HAL. Для получения дополнительной информации посетите эти страницы:

Решение для кэширования APK

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

Оптимизация на основе профиля

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

Журналирование с упреждающей записью

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

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

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

Власть

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

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

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

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