На этой странице кратко описаны основные функции Android 9, а также приведены ссылки на дополнительную информацию. Краткие описания функций организованы в соответствии с местоположением документации по каждой функции на этом сайте. Руководство по перемещению и переименованию разделов можно найти в обновлениях сайта за август 2018 года .
Строить
Универсальный образ системы (GSI)
Универсальный образ системы (GSI) — это образ системы с адаптированными конфигурациями для устройств Android. В универсальном образе системы (GSI) содержится информация о различиях между GSI для устройств, выпущенных с Android 9, и устройств, обновляющихся до Android 9.
Архитектура
Уровень аппаратной абстракции (HAL)
Обратная совместимость фреймворка HIDL
Проверка обратной совместимости фреймворка HIDL — это метод проверки обратной совместимости фреймворка.
Динамически доступные HAL
Динамически доступные HAL-интерфейсы поддерживают динамическое завершение работы аппаратных подсистем Android, когда они не используются или не нужны.
HIDL
HIDL MemoryBlock
HIDL MemoryBlock — это абстрактный слой, построенный на основе hidl_memory , HIDL @1.0::IAllocator и HIDL @1.0::IMapper . Он предназначен для HIDL-сервисов, в которых несколько блоков памяти совместно используют одну кучу памяти.
Наложения дерева устройств
Сжатые наложения
В Android 9 и более поздних версиях добавлена поддержка сжатых наложений в образе DTBO (device tree blob overlay) при использовании заголовка таблицы дерева устройств версии 1.
Обновления DTO
В Android 9 и более поздних версиях загрузчик должен передать ядру унифицированный блок дерева устройств (device tree blob) перед изменением свойств, определенных в наложениях дерева устройств (DTO) .
Версионирование заголовка образа DTBO
В Android 9 и более поздних версиях поле версии присутствует в заголовке изображения DTBO.
проверка DTBO
Для Android 9 и более поздних версий требуется раздел DTBO. Чтобы добавить узлы или внести изменения в свойства в SoC DT, загрузчик должен динамически накладывать специфический для устройства DT поверх SoC DT. Дополнительную информацию см. в разделе «Компиляция и проверка» .
Соответствие ядра
В Android 9 и более поздних версиях содержатся требования, затрагивающие ядро, его интерфейсы и использование DTBO. Для получения дополнительной информации см. следующие страницы:
- Стабильные релизы и обновления ядра
- Общие ядра Android
- Модульные требования ядра
- Требования к интерфейсу
- Наложения дерева устройств
Vendor NDK
Изменения в дизайне
Информацию об изменениях в дизайне VNDK в Android 9 и более поздних версиях можно найти на этих страницах:
- Комплект разработки для собственных нужд поставщика (VNDK)
- Поддержка системы сборки VNDK
- Инструмент определения VNDK
- Справочники, правила и политика конфиденциальности
- Расширения VNDK
- Пространство имен компоновщика
Проверка ABI
На странице «Стабильность ABI» описывается средство проверки двоичного интерфейса приложения (ABI), которое гарантирует, что изменения, внесенные в библиотеки VNDK, сохраняют соответствие стандарту ABI.
Снимки VNDK
Образ системы может использовать снимки VNDK для предоставления правильных библиотек VNDK образам поставщика, даже если образы системы и поставщика собраны из разных версий Android.
Объект интерфейса поставщика (объект VINTF)
На следующих страницах в разделе «Объект интерфейса поставщика» описаны обновления для Android 9 и более поздних версий:
график амортизации HIDL
На следующих страницах описано, как Android прекращает поддержку и удаляет HAL-интерфейсы HIDL:
Загрузчик
Разделы продукции
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), который, в свою очередь, монтируется как корневая файловая система.
версионирование заголовка загрузочного образа
В Android 9 и более поздних версиях заголовок образа загрузки содержит поле, указывающее версию заголовка . Загрузчик должен проверить это поле версии и соответствующим образом проанализировать заголовок.
DTBO в процессе восстановления
Чтобы предотвратить сбои OTA из-за несоответствия между образом восстановления и разделом DTBO на устройствах, не поддерживающих стандарты A/B, образ восстановления должен содержать информацию из образа DTBO .
Отображать
Вырезки для дисплея
Вырезы в дисплее позволяют разработчикам приложений создавать захватывающие, безрамочные интерфейсы, оставляя при этом место для важных датчиков на передней панели устройств.
Поворотные предложения
В Android 9 и более поздних версиях внесены изменения в поведение поворота экрана, включая поддержку элемента управления, позволяющего пользователю зафиксировать поворот экрана в альбомной или портретной ориентации, даже если положение устройства изменится.
Синхронизированные переходы между приложениями
Синхронизированные переходы между приложениями позволяют создавать новые анимации переходов.
Классификация текста (ранее TEXTCLASSIFIER)
В Android 9 и более поздних версиях есть служба классификации текста , которая является рекомендуемым способом реализации классификации текста, а также реализация службы по умолчанию.
Широкий цветовой охват
В Android 9 и более поздних версиях поддерживается широкий цветовой охват, включая:
- Расширенный динамический диапазон (HDR)
- Обработка контента в цветовом пространстве BT2020, но не в качестве конечного целевого пространства данных.
Для использования расширенного цветового охвата весь стек дисплея устройства (например, экран, аппаратный компоновщик, графический процессор) должен поддерживать цвета или форматы буферов расширенного цветового охвата. Устройства не обязаны заявлять о поддержке контента расширенного цветового охвата, даже если оборудование его поддерживает. Однако для полного использования возможностей оборудования следует включить расширенный цветовой охват. Во избежание непоследовательного визуального восприятия расширенный цветовой охват не следует отключать во время выполнения.
Совместимость
Документ, определяющий совместимость с Android
Документ определения совместимости Android 9 (CDD) дополняет предыдущие версии , внося изменения в требования к ранее выпущенным функциям и обновляя их.
Настройки
Улучшенные виджеты для приложений
Фреймворк виджетов для Android-приложений обеспечивает более наглядный анализ действий пользователя, особенно когда пользователь удаляет или добавляет виджеты вручную. Эта функциональность входит в состав Launcher3 по умолчанию.
Производителям необходимо обновить свои приложения-лаунчеры (поставляемые с устройствами), чтобы они поддерживали эту функцию, если они не основаны на Launcher3. Производителям оборудования необходимо добавить поддержку нового поля 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
Пакеты Compatibility Test Suite (CTS), поддерживающие Android 9, доступны на странице загрузок CTS . Исходный код включенных тестов можно синхронизировать с тегом android-cts-9.0_r1 в дереве исходного кода с открытым исходным кодом.
Варианты CTS
В Android 9 CTS v2 получает следующую команду и аргумент :
-
run retryповторяет все тесты, которые не прошли или не были выполнены в предыдущих сессиях. -
'--shard-countделит CTS-запуск на заданное количество независимых фрагментов для параллельной работы на нескольких устройствах.'
Кроме того, в справочник команд консоли CTS v2 добавлена ранее не документированная команда --retry-type .
Сервис защищенного элемента (SE)
Сервис Secure Element проверяет наличие поддерживаемых платформой защищенных элементов, определяя, имеют ли устройства реализацию SE HAL и, если да, то в каком количестве. Это используется в качестве основы для тестирования API и базовой реализации защищенного элемента.
Блок объединения данных с датчиков
Блок объединения данных с датчиков используется в тестовом пакете Camera Image Test Suite (Camera ITS) для проверки объединения данных с датчиков и синхронизации нескольких камер и обеспечивает согласованную тестовую среду для измерения точности временных меток камеры и других датчиков на телефонах Android. Дополнительную информацию см. на этих страницах:
- Краткое руководство по началу работы с блоком объединения данных с датчиков содержит пошаговые инструкции по настройке теста объединения данных с датчиков и самого блока объединения данных с датчиков при первой установке.
- В инструкции по сборке блока для объединения данных с датчиков описана пошаговая инструкция.
Широкоугольная интеллектуальная транспортная система в одном корпусе
Система ITS-in-a-box с широким полем зрения — это автоматизированная система, предназначенная для тестирования как камер с широким полем зрения (WFoV), так и камер с обычным полем зрения (RFoV) в рамках системы Camera ITS.
Набор тестов от поставщика
архитектура хост-контроллера
Архитектура контроллера хоста Vendor Test Suite (VTS) — это архитектура тестовой среды VTS, интегрированная с облачным сервисом предоставления тестовых заданий.
Тестирование HAL с учетом имен служб
VTS-тестирование с учетом имени службы HAL позволяет получать имя службы для заданного экземпляра 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) — это механизм безопасности, который запрещает внесение изменений в исходный граф потока управления скомпилированного бинарного файла, что значительно затрудняет проведение подобных атак.
Kernel 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 . С помощью этого API приложения могут использовать экземпляр ConfirmationPrompt для отображения пользователю запроса на подтверждение короткого утверждения. Это утверждение позволяет приложению подтвердить, что пользователь хочет завершить конфиденциальную транзакцию, например, совершить платеж.
SELinux
Песочница SELinux для каждого приложения
В песочнице приложений появились новые средства защиты и тестовые примеры, гарантирующие, что все непривилегированные приложения, ориентированные на Android 9 и выше, будут работать в отдельных песочницах SELinux.
Изменения SELinux в Treble
Информация об обновлениях 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, позволяющие сторонним приложениям для совершения звонков обрабатывать одновременные входящие звонки от операторов связи и регистрировать эти звонки в системном журнале вызовов.
Перевозчик
Идентификация перевозчика
В 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), это открывает такие возможности, как предотвращение прерывания работы Wi-Fi в режиме STA, когда пользователь хочет включить точку доступа (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 Protected Setup (WPS) в WiFiManager устарела и отключена в Android 9 и выше. Однако WiFiDirect по-прежнему использует WPS в качестве клиента WPA.
Графика
Выполнение
API Vulkan 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 для глобальных навигационных спутниковых систем (GNSS) (версия 1.1 и выше) платформа Android отслеживает настройки Android. Партнеры могут изменять настройки через сервисы Google Play или другие системные обновления. Эти настройки сообщают HAL для GNSS, следует ли не использовать определенные спутники GNSS. Это может быть полезно в случае постоянных ошибок спутников или созвездий GNSS, а также для более быстрого реагирования на проблемы реализации HAL для GNSS, которые могут возникнуть при смешивании созвездий, использующих разные системы времени, и внешних событий, таких как смена високосных секунд, дней или номеров недель.
Модель аппаратного обеспечения GNSS
В 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() , и платформа может предоставить приблизительную пропускную способность нисходящего канала.
Однако на устройствах под управлением Windows 9 и выше функция обратного вызова onCapabilitiesChanged() автоматически срабатывает при значительном изменении расчетной пропускной способности, а вызов requestBandwidthUpdate() ничего не делает; связанные с ней функции getLinkDownstreamBandwidthKbps() и getLinkUpstreamBandwidthKbps() заполняются обновленной информацией, предоставленной физическим уровнем.
Кроме того, устройства могут проверять пропускную способность сот LTE с помощью ServiceState.getCellBandwidths() . Это позволяет приложениям определять, какая пропускная способность (частота) доступна в данной соте. Информация о пропускной способности соты доступна через скрытое меню, чтобы тестировщики могли проверить самые актуальные данные.
мониторинг трафика eBPF
Инструмент мониторинга сетевого трафика eBPF использует комбинацию реализации ядра и пользовательского пространства для отслеживания использования сети на устройстве с момента последней загрузки. Этот инструмент предоставляет дополнительные функции, такие как маркировка сокетов, разделение трафика переднего и заднего плана, а также межсетевой экран для каждого UID, позволяющий блокировать доступ приложений к сети в зависимости от состояния устройства.
Восстановить более старые версии API
Теперь устройства могут восстанавливать операционную систему из будущих версий. Это особенно полезно, когда пользователи обновили свои телефоны, но затем потеряли или сломали их.
Если производитель оборудования модифицирует агенты резервного копирования для каких-либо системных пакетов (android, system, settings), эти агенты должны обеспечивать восстановление наборов резервных копий, созданных на более новых версиях платформы, без сбоев и с восстановлением хотя бы части данных.
Рекомендуется использовать валидатор для проверки недопустимых значений в заданном фрагменте резервных данных и восстановления только допустимых данных, как показано в core/java/android/provider/SettingsValidators.java .
Эта функция включена по умолчанию. Поддержку SettingsBackupAgent для восстановления из будущих версий можно отключить через Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION . Дополнительная реализация не требуется, если только производитель устройства не расширяет один из агентов резервного копирования, включенных в прошивку (или не добавляет собственный агент).
Эта функция позволяет восстанавливать систему из будущих версий платформы; однако следует ожидать, что восстановленные данные не будут полными. Следующие инструкции относятся к следующим агентам резервного копирования:
Класс PackageManagerBackupAgent поддерживает будущие версии данных резервного копирования посредством версионирования формата; расширения в этом случае должны быть совместимы с текущим кодом восстановления или соответствовать инструкциям в классе, которые включают в себя увеличение соответствующих констант.
В Android 9 и более поздних версиях SystemBackupAgent задает
restoreAnyVersion = false. Восстановление из более новых версий API не поддерживается.В Android 9 и выше параметр SettingsBackupAgent задает
restoreAnyVersion = true. Частичная поддержка осуществляется через валидаторы. Настройки можно восстановить из более новой версии API, если для них существует валидатор в целевой ОС. Добавление любой настройки должно сопровождаться соответствующим валидатором. Подробности см. в описании класса.Любой пользовательский агент резервного копирования, включенный в ПЗУ, должен увеличивать свой код версии всякий раз, когда в формат данных резервного копирования вносятся несовместимые изменения, и убедиться, что
restoreAnyVersion = false(значение по умолчанию), если его агент не готов обрабатывать данные резервного копирования из будущей версии своего кода.
Предприятие
Улучшение управляемого профиля
Изменения в пользовательском интерфейсе управляемых профилей упрощают пользователям идентификацию, доступ и управление управляемым профилем.
Приостановить OTA-обновления
Новая функция @SystemApi позволяет владельцам устройств бессрочно приостанавливать обновления по воздуху (OTA) , включая обновления безопасности.
Производительность
Здоровье 2.0
В Android 9 и более поздних версиях используется интерфейс HAL android.hardware.health 2.0, являющийся крупным обновлением по сравнению с health@1.0 HAL. Для получения дополнительной информации см. следующие страницы:
решение для кэширования APK
Android 9 и более поздние версии включают решение для кэширования APK-файлов , позволяющее быстро устанавливать предустановленные приложения на устройствах, поддерживающих разделы A/B. Производители могут размещать предустановленные и популярные приложения в кэше APK-файлов, который в основном хранится в пустом разделе B на новых устройствах с разделами A/B, без влияния на объем данных, доступных пользователю.
Оптимизация на основе профиля
Android 9 и более поздние версии поддерживают использование оптимизации на основе профилирования (PGO) в Clang для нативных модулей Android, имеющих правила сборки на основе шаблонов.
Упреждающая запись в журнал
Специальный режим SQLiteDatabase, называемый режимом предварительного логирования совместимости (WAL), позволяет базе данных использовать journal_mode=WAL сохраняя при этом максимум одно соединение на базу данных.
Время загрузки
В Android 9 внесены изменения в оптимизацию времени загрузки, как описано в разделе «Оптимизация времени загрузки» .
Власть
фоновые ограничения
В Android 9 и более поздних версиях реализованы ограничения фоновой работы , позволяющие пользователям блокировать приложения, которые могут расходовать заряд батареи. Система также может предлагать отключить приложения, негативно влияющие на состояние устройства.
устройства без батареек
В Android 9 обработка устройств без батареи осуществляется более элегантно, чем в предыдущих версиях. В Android 9 удален код, который по умолчанию предполагал наличие батареи, заряженной на 100% и находящейся в исправном состоянии с нормальными показаниями температуры на терморезисторе.