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

На этой странице перечислены основные функции Android 10 и приведены ссылки на дополнительную информацию. Описания функций упорядочены в соответствии с расположением документации по ним на этом сайте.

Сборка

java_sdk_library

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

Архитектура

Компоненты модульной системы

В Android 10 некоторые системные компоненты стали модульными, и теперь их можно обновлять вне стандартного цикла выпуска Android. Вот некоторые из них:

Аппаратно-зависимый уровень (HAL)

В Android 10 добавлена поддержка HAL для автоматического отключения, когда у них нет клиентов.

Kernel

ABI

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

В Android 10 также появился инструмент проверки использования ABI на основе символов. Инструмент проверки может обнаруживать устаревшие предварительно созданные двоичные файлы во время сборки, чтобы разработчики общих библиотек знали, какие предварительно созданные двоичные файлы могут быть повреждены в результате их изменения и какие предварительно созданные двоичные файлы необходимо пересобрать.

Android Live-Lock Daemon

В Android 10 включен демон Android Live-Lock (llkd), предназначенный для обнаружения и устранения взаимоблокировок ядра.

vDSO32 на ARM64

Android 10 поддерживает использование vDSO32 в 64-битных ядрах, что позволяет увеличить время работы от батареи на 0,4 % и повысить производительность.

Записи fstab для разделов, монтируемых на раннем этапе

В Android 10 для устройств необходимо указывать записи fstab для разделов, монтируемых на раннем этапе, с помощью файла fstab на виртуальном диске первого этапа.

HIDL

Разгрузка BroadcastQueue

В Android 10 к существующим очередям фоновых и активных задач добавлена новая очередь разгрузки BroadcastQueue. Очередь разгрузки имеет тот же приоритет и поведение тайм-аута, что и фоновая очередь. Чтобы не блокировать фоновую очередь, в которой могут происходить более интересные или видимые пользователю трансляции, очередь разгрузки обрабатывает трансляцию BOOT_COMPLETED, которую прослушивают многие приложения и выполнение которой может занять много времени. В настоящее время в очереди на разгрузку обрабатывается только трансляция BOOT_COMPLETED, но потенциально могут обрабатываться и другие длинные трансляции.

Сервис SystemSuspend

В Android 10 поток в libsuspend, отвечающий за запуск приостановки системы, заменен сервисом HIDL SystemSuspend. Эта реализация предлагает функциональность, эквивалентную предыдущим версиям, и в то же время использует преимущества инфраструктуры Android HIDL.

safe_union в HIDL

В Android 10 в HIDL появился тип safe_union – явно помеченное объединение.

Конфигурация

ConfigStore HAL

В Android 10 прекращена поддержка ConfigStore HAL из-за высокого потребления памяти и сложности использования. Вместо этого HAL заменен на системные свойства.

Config File Schema API

Платформа Android содержит большое количество XML-файлов для хранения данных конфигурации. Многие XML-файлы находятся в разделе vendor, но считываются в разделе system. В этом случае схема XML-файла служит интерфейсом между двумя разделами, и поэтому схема должна быть явно указана и должна развиваться обратно совместимым образом. До Android 10 в платформе не было механизмов, которые требовали бы указывать и использовать XML-схему или предотвращали бы несовместимые изменения в ней. В Android 10 для этого используется Config File Schema API.

Системные свойства как API

Системные свойства, доступные в разных разделах, схематизированы в файлах описания sysprop, а API для доступа к свойствам генерируются как конкретные функции для C++ и классы для Java.

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

VINTF

Изменения в VINTF в Android 10 включают:

  • Прекращение поддержки тегов версий AVB
  • Добавление информации о ядре в пакеты беспроводных обновлений
  • Официальное создание манифестов ODM
  • Добавление матрицы совместимости продуктов
  • Связывание записи манифеста с модулем HAL в системе сборки.

Загрузчик

Ramdisk

В Android 10 корневая файловая система больше не входит в ramdisk.img, а объединена с system.img.

Создайте разделы ODM

В Android 10 поддерживается создание разделов odm с помощью системы сборки Android. Для настроек можно использовать отдельный раздел /odm, что позволяет использовать один образ поставщика для нескольких SKU оборудования. Это позволяет производителям оригинальных разработок (ODM) настраивать пакеты поддержки платформы (BSP) от поставщиков однокристальных систем (SoC) для своих устройств (плат). Они могут реализовывать модули ядра для компонентов, относящихся к плате, демонов, относящихся к плате, или собственных функций на аппаратно-зависимых уровнях (HAL). Они также могут заменять или настраивать компоненты однокристальной системы.

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

В Android 10 заголовок загрузочного образа обновлен до версии 2, в которой есть раздел для хранения образа дерева устройств (DTB). Тесты VTS для Android 10 проверяют, что на всех устройствах с Android 10 используется заголовок загрузочного образа версии 2 и что в загрузочный образ и образ для восстановления включен действительный образ DTB.

Образы для восстановления на устройствах без разделов A/B

В Android 9 и более поздних версиях образ для восстановления устройства должен содержать информацию из оверлейного образа. Производители устройств могут использовать DeviceTree или ACPI (Advanced Configuration and Power Interface), чтобы описать все необнаруживаемые устройства. В Android 10 и более поздних версиях поддерживаются архитектуры, в которых вместо DTBO используется ACPI.

Стабильный AIDL

В Android 10 добавлена поддержка стабильного языка описания интерфейсов Android (AIDL) – нового способа отслеживания интерфейса прикладного программирования (API) и двоичного интерфейса приложений (ABI), предоставляемых интерфейсами AIDL.

Переместить fastboot в пользовательское пространство

В Android 10 добавлена поддержка разделов с изменяемым размером за счет переноса реализации fastboot из загрузчика в пользовательское пространство.

Экран

Воспроизведение HDR-видео

Android 10 поддерживает воспроизведение HDR10, VP9 и HDR10+.

Классификация текста

Классификация текста использует методы машинного обучения, чтобы помочь разработчикам классифицировать текст. В Android 10 в TextClassifier API добавлены два метода: suggestConversationActions и detectLanguage. Метод suggestConversationActions генерирует готовые ответы и действия на основе заданного разговора, а метод detectLanguage определяет язык текста.

Поддержка рендеринга шрифта Zawgyi

Zawgyi – самый популярный шрифт в Мьянме. Android 9 и более ранние версии не поддерживают его, поскольку он не соответствует стандарту Unicode. В Android 10 эта проблема решена за счет добавления шрифта Unicode, который может отображать как бирманский язык в кодировке Unicode, так и Zawgyi. Для поддержки шрифта Zawgyi на устройствах с Android 10 не требуется никаких дополнительных действий. Если на ваших устройствах используется специальная реализация для поддержки Zawgyi, вы можете:

Ограничения на скрытие значков приложений

В Android 10 ограничена возможность скрывать значки приложений. Если в приложении не включен объект activity для запуска, система показывает в панели запуска синтезированный объект activity, который представляет страницу приложения в настройках системы.

Дополнительную информацию о логике, используемой для показа значков приложений, включая типы приложений, значки которых не показываются, можно найти в документации по getActivityList() в справочнике по API.

Настройки

Для улучшения специальных возможностей в Android 10 включены настраиваемые пользователем параметры времени ожидания. Изменения в API и настройках вступают в силу с выходом Android 10. Если вы меняете настройки, убедитесь, что эта функция поддерживается. Если на вашем устройстве есть элементы интерфейса, для которых задано время ожидания, используйте для них API Timeouts. Дополнительную информацию можно найти в руководстве по специальным возможностям для разработчиков Android.

Совместимость

Документ с определением совместимости Android (CDD)

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

Тесты

Compatibility Test Suite (CTS)

Для Android CTS есть отдельная страница с примечаниями к выпуску, на которой перечислены многие важные изменения в Android 10.

Скачивания CTS

Пакеты CTS, поддерживающие Android 10, доступны на странице Скачивание CTS. Код включенных тестов можно синхронизировать с деревом хранилища с открытым исходным кодом, используя тег android-cts-10_r1.

CTS shim APEX

В Android 10 появился пакет CtsShimApex, который должен быть предустановлен на устройстве, чтобы можно было писать CTS-тесты для управления APEX.

Режим с тестовой программой

Режим тестовой программы CTS помогает разработчикам автоматизировать тестирование одного или нескольких устройств.

Режим приложений с мгновенным запуском

Начиная с Android 10 CTS запускается в режиме приложений с мгновенным запуском. Это значит, что тестовый APK-файл устанавливается как приложение с мгновенным запуском, а затем выполняются тесты.

В Android 10, помимо режима CTS для приложений с мгновенным запуском, есть CTS Verifier для приложений с мгновенным запуском.

Тест CTS Verifier для профессионального аудио

В Android 10 добавлен тест CTS Verifier для проверки соответствия требованиям Pro Audio.

Тесты MIDI в CTS Verifier

В Android 10 тест CTS Verifier MIDI проверяет работу MIDI с интерфейсами USB MIDI, Bluetooth MIDI и виртуальным MIDI-устройством.

Интерпретация результатов теста CTS

В Android 10 обновлен механизм интерпретации результатов CTS.

Vendor Test Suite (VTS)

Тестирование VTS с отладочным виртуальным диском

В Android 10 общий образ системы (GSI), используемый для тестирования на соответствие CTS-on-GSI/VTS, меняется с userdebug на user, поскольку GSI подписан для выпуска. Однако команда adb root, которая предоставляет хосту root-права на тестируемом устройстве Android, недоступна в пользовательской сборке. Это проблема, поскольку для работы VTS требуется adb root.

Виртуальный диск отладки позволяет использовать adb root, если устройство разблокировано. Это упрощает процесс тестирования, поскольку используется одна и та же сборка system.img (GSI или system.img от OEM).

Проверка Hardware Composer

В Android 10 добавлен новый класс тестирования VTS для проверки Hardware Composer через интерфейс readback в IComposerClient.hal. Если поставщики не реализуют readback, тесты будут пройдены автоматически.

Отладка

Загрузка общих библиотек с помощью разных загрузчиков классов

В Android 9 и более ранних версиях приложения загружали связанные общие библиотеки Java в загрузчик классов приложения. В Android 10 фреймворк использует загрузчик классов, отличный от загрузчика классов приложения, чтобы загружать общие библиотеки Java, связанные через uses-library или uses-static-library.

Как правило, приложения не должны зависеть от конкретного загрузчика классов, поэтому это изменение не должно повлиять на их работу. Однако если приложение использует один загрузчик классов, то оно не будет работать. Кроме того, по-прежнему поддерживается видимость классов в одном пакете, но не в общих библиотеках.

При тестировании устройств с Android 10 производители могут столкнуться с проблемами совместимости приложений.

Функции безопасности

Более полный список улучшений, связанных с безопасностью и конфиденциальностью, можно найти на странице Улучшения безопасности и конфиденциальности в Android 10.

Распознавание лица

Фейсконтроль позволяет пользователям разблокировать устройство, посмотрев на его переднюю панель. В Android 10 добавлена поддержка нового стека аутентификации по лицу, который может безопасно обрабатывать кадры камеры, сохраняя безопасность и конфиденциальность во время аутентификации по лицу на поддерживаемом оборудовании. Кроме того, в Android 10 можно легко интегрировать приложения для выполнения транзакций, например в интернет-банкинге или других сервисах.

Расширенный доступ

Агенты доверия, которые используются в механизмах третичной аутентификации, например Smart Lock, могут только продлевать разблокировку в Android 10. Агенты доверия больше не могут разблокировать устройство, а только поддерживают его в разблокированном состоянии не более четырех часов.

Шифрование

OEMCrypto

В Android 10 используется OEMCrypto API версии 15.

Тестирование

BoundsSanitizer

В Android 10 в Bluetooth и кодеках используется BoundsSanitizer (BoundSan). BoundSan использует санитайзер границ UBSan. Эта мера защиты включается на уровне модуля. Она помогает защищать важные компоненты Android, и ее не следует отключать. BoundSan включен в следующих кодеках:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Очистка при переполнении целого числа

В Android 10 включена очистка переполнения целых чисел (IntSan) в программных кодеках. Убедитесь, что качество воспроизведения приемлемо для всех кодеков, которые не поддерживаются аппаратным обеспечением устройства. IntSan включен в следующих кодеках:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Память только для выполнения

По умолчанию разделы исполняемого кода для системных двоичных файлов AArch64 помечены как предназначенные только для выполнения (нечитаемые). Это мера защиты от атак с повторным использованием кода JIT. Код, в котором смешаны данные и код, а также код, который целенаправленно проверяет эти разделы (без предварительного переназначения сегментов памяти как доступных для чтения), больше не работает. Проблема затрагивает приложения с целевым SDK Android 10 (API уровня 29 или выше), если они пытаются прочитать разделы кода системных библиотек с включенной памятью только для выполнения (XOM), не пометив раздел как доступный для чтения.

Scudo

Scudo – это динамический распределитель памяти в пользовательском режиме, который обеспечивает повышенную защиту от уязвимостей, связанных с кучей. Он предоставляет стандартные примитивы выделения и освобождения памяти для C и C++.

ShadowCallStack

ShadowCallStack (SCS) – это режим инструментирования LLVM, который защищает от перезаписи адреса возврата (например, при переполнении буфера стека). Для этого адрес возврата функции сохраняется в отдельно выделенном экземпляре ShadowCallStack в прологе нелистовых функций и загружается из экземпляра ShadowCallStack в эпилоге функции.

Аудио

Аппаратно-зависимый уровень аудио

В Android 10 добавлены следующие возможности для аудио HAL:

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Добавлены дополнительные требования к реализации HAL и подсистемы аудио.

Эффекты предварительной обработки

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

Менеджер правил для аудио

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

Аудио высокого разрешения

В Android 10 улучшена поддержка аудио высокого разрешения.

  • Поддержка плавающих чисел
  • Поддержка частоты 192 кГц
  • Поддержка восьми каналов
  • Включение информации о времени

Одновременная съемка

В Android 10 улучшена функция параллельной записи, которая позволяет одновременно записывать несколько аудиопотоков.

AudioPlaybackCapture

В Android 10 появился новый API AudioPlaybackCapture, который позволяет приложениям копировать аудио, воспроизводимое другими приложениями. Эта функция похожа на запись экрана, но только для аудио. Основная цель – позволить стриминговым приложениям записывать звук из игр.

API захвата не влияет на задержку приложения, аудио которого захватывается.

MIDI

В Android 10 стало проще переносить профессиональные аудиоприложения, использующие MIDI, на платформу Android с помощью AMidi NDK API.

Камера

Обзор изменений в API камеры, HAL камеры и модуле камеры, представленных в Android 10, см. в разделе Обновления камеры Android 10.

Улучшена конфиденциальность фреймворка камеры.

В Android 10 улучшена конфиденциальность фреймворка камеры. Чтобы избежать раскрытия потенциально конфиденциальной информации о статической камере в CameraCharacteristics без согласия пользователя, приложения должны получить разрешение CAMERA на извлечение статических метаданных с тегом конфиденциальности с помощью метода getCameraCharacteristics.

Чтобы получить список ключей характеристик камеры, для которых требуется разрешение CAMERA, вызовите метод getKeysNeedingPermission.

Запрос на изменение конфигурации сеанса

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

API управления буфером Camera HAL3

В Android 10 появились необязательные API управления буфером HAL3 камеры, которые позволяют реализовать логику управления буфером, чтобы достичь разных компромиссов между памятью и задержкой съемки в реализациях HAL камеры.

Динамический физический переключатель камеры HAL

В Android 10 добавлен тег динамических метаданных ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, который указывает на активную физическую камеру логического устройства камеры. Подробнее о поддержке нескольких камер…

Поддержка скрытия физических камер

В Android 10 аппаратно-зависимый уровень камеры может уменьшить количество физических камер, которые приложение может открыть напрямую. Подробнее о поддержке нескольких камер…

Camera2 VNDK API

В Android 10 модули поставщиков могут получать доступ к камерам и управлять ими через два новых стандартных интерфейса HIDL: android.frameworks.cameraservice.service@2.0 и android.frameworks.cameraservice.device@2.0. Чтобы упростить использование интерфейсов HIDL, в Android 10 также добавлена библиотека libcamera2_vendor, доступная поставщикам. Эта библиотека похожа на библиотеку Camera NDK, но имеет несколько незначительных отличий.

Конфигурации потоков

В Android 10 добавлены функции, позволяющие производителям камер рекламировать рекомендуемые видео с камеры клиентам и поддерживать API для запроса комбинаций видео.

Требования к комбинациям видео с камеры

На устройствах с Android 10 больше не требуется поддержка комбинаций потоков с потоками физических субкамер. Однако устройства с Android 10 и HAL-устройством камеры версии 3.5 должны поддерживать isStreamCombinationSupported(), чтобы приложения могли запрашивать, поддерживается ли комбинация потоков, содержащая физические потоки.

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

поддержка [изображений] HEIF

В Android 10 добавлена встроенная поддержка формата HEIF, который обеспечивает более высокое качество изображений и меньший размер файлов по сравнению с JPEG. Для поддержки изображений HEIF на устройствах должен быть кодировщик HEIC или HEVC.

Монохромные камеры

В Android 10 добавлена поддержка формата потока Y8, статических метаданных массива цветных фильтров для монохромных и ближних инфракрасных камер, а также функций DngCreator для монохромных камер.

Функции связи

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

Номера экстренных служб и экстренные вызовы

В Android 10 улучшена поддержка экстренных вызовов. В экстренной ситуации устройства с поддержкой IRadio HAL версии 1.4 могут инициировать экстренный вызов, используя номера экстренных служб, полученные из таких источников, как SIM-карта, сигнал сети или база данных Android. Номера можно распределить по категориям, например "Полиция", "Пожарная служба" и "Скорая помощь".

API для групповых звонков

API групповых вызовов – это расширение API eMBMS, добавленных в Android 9. Новые API определяют стандарт для приложений, которые присоединяются к групповым вызовам и транслируют их, взаимодействуя с пакетами промежуточного ПО eMBMS. Для корректной работы групповых вызовов требуется поддержка со стороны поставщика чипсета, поставщика промежуточного ПО и оператора сотовой связи. Документация для разработчиков находится на сайте developer.google.com.

Возможности удаленной SIM-карты

В Android 10 появились функции удаленной SIM-карты, которые позволяют приложениям для обмена сообщениями на хост-устройстве Android отправлять SMS через телефоны, используя такие механизмы, как Bluetooth. Дополнительную информацию можно найти в справочной документации по методу getSubscriptionType и константе SUBSCRIPTION_TYPE_REMOTE_SIM.

Несколько eSIM

В Android 10 класс EuiccManager поддерживает устройства с несколькими встроенными SIM-картами (eSIM) или eUICC.

Уведомления eSIM

Для устройств с Android 10, поддерживающих eSIM, необходимо определить массив идентификаторов слотов eUICC. Устройства также должны поддерживать IRadio HAL версии 1.4 и IRadioConfig HAL версии 1.2. Дополнительную информацию можно найти в статьях Реализация eSIM и Требования к HAL.

Неавтономные сети 5G (NSA)

В Android 10 добавлена поддержка неавтономных сетей 5G (NSA). 5G NSA – это решение для сетей 5G, в которых сеть поддерживается существующей инфраструктурой 4G. На устройствах с Android 10 при подключении к сети 5G в строке состояния может появляться значок 5G.

Предложение аккаунта на телефоне

В Android 10 появился сервис рекомендаций аккаунтов для звонков, который позволяет предлагать пользователям аккаунты для звонков при совершении вызова.

Оператор

Перенос настроек мобильной сети

В Android 10 был переработан код интерфейса настроек мобильной сети. Он был перенесен из стека телефонии в стек настроек. Чтобы обеспечить поддержку перенесенного кода, измените следующие значения конфигурации настроек мобильной сети с ресурсов Android на ресурсы CarrierConfig:

config_world_mode -> CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL

config_support_tdscdma -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL

config_support_tdscdma_roaming_on_networks -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY

config_enabled_lte -> CarrierConfigManager#KEY_LTE_ENABLED_BOOL

Идентификаторы устройства

Постоянные идентификаторы устройств (IMEI/MEID, IMSI и серийный номер сборки) защищены специальным разрешением. Доступ к ним также предоставляется приложениям владельцев устройств и профилей. Поскольку IMSI и серийный номер SIM-карты предоставляются оператором связи, доступ к этим идентификаторам предоставляется пакетам с правами оператора связи.

Wi-Fi

Выбор сети

Android постоянно оценивает качество подключенной сети и доступных сетей. В Android 10 обновлены алгоритмы и процедуры выбора сетей Wi-Fi и переключения между ними.

Сканирование сетей Wi-Fi для разгрузки сети

В Android 10 появился необязательный метод API setDeviceMobilityState() в WifiManager, который увеличивает интервал между сканированиями способа разгрузки сети, когда устройство неподвижно, чтобы снизить энергопотребление.

Wi-Fi оператора связи

В Android 10 устройства с функцией Wi-Fi оператора автоматически подключаются к настроенным сетям Wi-Fi оператора (сетям с сертификатами открытого ключа).

Wi-Fi Easy Connect

В Android 10 устройства могут использовать Wi-Fi Easy Connect, который использует протокол подготовки устройств (DPP), представленный Wi-Fi Alliance (WFA), для подготовки и настройки устройств Wi-Fi.

Режим низкой задержки Wi-Fi

В Android 10 появился режим низкой задержки Wi-Fi, который настраивает чип Wi-Fi на уменьшение задержки.

Обновлен DHCP-сервер

В рамках создания сервиса IP Server удаляется dnsmasq. В Android 10 сервер DHCPv4 заменен отдельным компонентом, написанным преимущественно на Java, чтобы обеспечить лучшую интеграцию с уровнем управления фреймворка Java. Это повышает безопасность и возможность обновления для DHCP-сервера. Подробную информацию можно найти в статье packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java.

Для реализации этого изменения не требуется никаких действий: все устройства, выпускаемые и обновляемые до Android 10, по умолчанию используют DhcpServer. Если вы изменили настройки DHCP-сервера, то можете вернуться к поведению Android 9, задав глобальную настройку tether_enable_legacy_dhcp_server=1. Новый DhcpServer включен в модуль сетевых компонентов, поэтому любые изменения в функциональности DHCP-сервера должны быть внесены в основную ветку.

WPA3 и Wi-Fi Enhanced Open

В Android 10 добавлена поддержка стандартов безопасности Wi-Fi Protected Access 3 (WPA3) и Wi-Fi Enhanced Open, которые обеспечивают более высокий уровень конфиденциальности и надежную защиту от известных атак.

Wi-Fi Direct

Wi-Fi Direct, также известный как Wi-Fi P2P, позволяет поддерживающим его устройствам обнаруживать друг друга и подключаться друг к другу напрямую по протоколу Wi-Fi Direct без доступа к интернету или мобильной сети.

Улучшения в рандомизации MAC-адресов

Начиная с Android 10 рандомизация MAC-адресов включена по умолчанию для клиентского режима, SoftAp и Wi-Fi Direct. В системном интерфейсе устройств должна быть возможность включить или отключить рандомизацию MAC-адресов для каждого SSID.

Passpoint R2

В Android 10 добавлена поддержка функций Passpoint R2. В Passpoint R2 реализована онлайн-регистрация (OSU) – стандартный метод предоставления новых профилей Passpoint. Android 10 поддерживает инициализацию профилей EAP-TTLS с помощью SOAP-XML.

NFC

Безопасное использование NFC

Защита NFC позволяет включить эмуляцию карты NFC вне хоста, только когда экран устройства разблокирован. Реализация этой функции позволяет пользователям включить защиту NFC для повышения безопасности.

Поддержка Android Beam прекращена

В Android 10 функция Android Beam больше не требуется, а следующие интерфейсы и методы устарели.

Интерфейсы:

Методы:

Чтобы использовать Android Beam, укажите константу функции android.sofware.nfc.beam.

Графика

ASurfaceControl

В Android 10 добавлен новый способ приема буферов для SurfaceFlinger – ASurfaceControl.

Реализация графики

Слои OpenGL ES

В Android 10 появилась система слоев для GLES.

EGL 1.5

В Android 10 реализован интерфейс EGL 1.5. Информацию о новых функциях в EGL 1.5 можно найти в спецификации EGL 1.5 от Khronos.

Vulkan

В Android 10 добавлена поддержка графики Vulkan 1.1. Платформа также поддерживает VK_KHR_swapchain версии 70, поэтому приложение Vulkan может создать VkImage на основе памяти цепочки буферов.

Частота обновления данных об эффективности

В Android 10 добавлена поддержка частоты обновления для повышения производительности. По умолчанию эта функция отключена.

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

Android Automotive

Автомобильные аудиосистемы

В Android 10 контекст Audio HAL сопоставляется с AudioAttributes.usage для идентификации звуков. Android поддерживает один экземпляр AUDIO_DEVICE_OUT_BUS на контекст. IAudioControl HAL предоставляет расширения для Audio HAL, предназначенные для автомобилей.

Навигация с помощью жестов

В Android 10 появилась возможность полностью перейти на жестовую навигацию. Информацию о том, как подготовить приложения к использованию этой функции, можно найти на странице Навигация с помощью жестов на сайте Android для разработчиков.

Нейронные сети

В Android 10 обновлены Neural Networks API и Neural Networks HAL. Краткое описание изменений приведено в разделе Нейронные сети.

Новая и обновленная документация по нейронным сетям для Android 10:

Датчики

Sensors HAL 2.0

Sensors HAL 2.0 поддерживает использование быстрых очередей сообщений (FMQ) для отправки событий датчиков из HAL в Android Sensors Framework.

Датчики отключены

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

Если на ваших устройствах используется реализация SensorService, CameraService и AudioPolicyService по умолчанию, то дополнительная настройка референсного дизайна не требуется. Если у вас есть другие датчики, ознакомьтесь с разделом Настройка, чтобы узнать больше о поддержке этой функции.

Мультимедиа

Обновляемые медиакомпоненты

В Android 10 есть обновляемые медиакомпоненты, которые позволяют обновлять модульные системные компоненты, связанные с медиаконтентом, через инфраструктуру Google Play или беспроводной механизм, предоставленный партнером.

DRM для медиаконтента

В Android 10 улучшены полезность и удобство использования API Java и NDK для MediaDrm.

Декодирование

Android 10 поддерживает программное декодирование AV1.

Разрешения

В Android 10 предусмотрены дополнительные настройки разрешений, которые обеспечивают прозрачность и конфиденциальность пользователей.

Поставщик контактов и информация о связях

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

Ожидается, что изменения в Android 10 окажут значительное влияние на API. Если в ваших приложениях используются устаревшие функции, упомянутые в разделах "Поставщик контактов" и "Информация о связях", вам может потребоваться обновить приложения, чтобы компенсировать изменения. Если вы используете форк поставщика контактов, его также необходимо обновить.

Три варианта доступа к данным о местоположении

Трехпозиционные разрешения на доступ к данным о местоположении в Android 10 позволяют пользователям лучше контролировать, как приложения получают доступ к данным о местоположении устройства.

Напоминание о доступе к данным о местоположении в фоновом режиме

В Android 10 есть напоминание о доступе к местоположению в фоновом режиме. Оно позволяет пользователям лучше понимать, как приложения получают доступ к местоположению устройства, и контролировать этот процесс.

Ограничить местоположения, выбранные по усмотрению системы

Когда приложение запрашивает местоположение устройства, оно может либо дождаться ответа на запрос, либо получить обновление местоположения, используя активные прослушиватели местоположения. Начиная с Android 10, чтобы получать обновления местоположения по запросу, разработчики должны указать, что им нужны пассивные обновления местоположения из класса FusedLocationProviderClient.

Запуск фоновых приложений

В Android 10 непривилегированные приложения без видимого окна не могут автоматически запускаться на переднем плане. Это изменение блокирует всплывающие окна с рекламой и вредоносные захваты. Никаких действий с вашей стороны не требуется.

Изолированная среда для приложений

В Android 10 приложения имеют ограниченный доступ к файловой системе и не могут напрямую обращаться к путям, таким как /sdcard/DCIM. Однако у приложений сохраняется полный доступ к путям, относящимся к их пакетам, которые возвращаются любыми применимыми методами, такими как Context.getExternalFilesDir(). Приложения по-прежнему имеют полный доступ к своим путям, зависящим от пакета.

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

Ограничить доступ приложений к буферу обмена

В Android 10 доступ к буферу обмена изменился, поэтому его содержимое нельзя просматривать, вызывая метод ClipboardManager.getPrimaryClip или добавляя прослушиватель onPrimaryClipChangedListener для уведомления об изменении буфера обмена. Это повышает конфиденциальность пользователей и не позволяет вредоносным приложениям изменять содержимое буфера обмена.

В Android 10 доступ на чтение предоставляется только приложению, которое находится в фокусе ввода, или текущей клавиатуре. Теперь вызов прослушивателя ClipboardManager.onPrimaryClipChanged() срабатывает только для приложений, соответствующих этим ограничениям. ClipboardManager.getPrimaryClip и ClipboardManager.getPrimaryClipDescription возвращают null, если запрашивающее приложение не является редактором метода ввода (IME) по умолчанию или не имеет фокуса ввода.

Динамические разрешения включают распознавание действий

Теперь, когда приложение получает доступ к данным о местоположении устройства в фоновом режиме, пользователи видят диалоговое окно распознавания действий. Динамические разрешения со строгими ограничениями должны быть правильно добавлены в белый список в Android 10.

Разрешение MANAGE_DEVICE_ADMINS

В Android 10 разрешение MANAGE_DEVICE_ADMINS изменено с signature или privileged на signature. Это означает, что только приложения, подписанные платформой, могут назначать другие приложения администраторами устройства.

Улучшения Sharing API

В Android 10 появилось несколько новых функций API платформы Android, связанных с обменом контентом. Если вы изменили код листа обмена в своей реализации, убедитесь, что она поддерживает эти новые функции. Если вы не изменяли код Share Sheet в своей реализации, вам не нужно ничего делать для поддержки этих новых функций.

Android Runtime (ART)

Подписанная конфигурация

Функция Signed Config позволяет встраивать конфигурацию ограничений интерфейса, не относящегося к SDK, в APK-файлы. Это позволяет удалять определенные интерфейсы, не относящиеся к SDK, из черного списка, чтобы AndroidX мог безопасно их использовать. Это изменение позволит AndroidX поддерживать новые функции в более старых версиях Android.

Эффективность

Уровень абстракции Cgroup

В Android 10 есть уровень абстракции cgroup и профили задач, с помощью которых разработчики могут задавать ограничения для потоков и процессов.

Демон Low Memory Killer (lmkd)

В Android 10 поддерживается новый режим lmkd, в котором для обнаружения нехватки памяти используются мониторы PSI (Pressure Stall Information) ядра.

Питание

Управление питанием платформы

В Android 10 спящий режим можно включить как на устройствах, работающих от сети, так и на устройствах, работающих от батареи.

Режим энергосбережения по расписанию

В Android 10 появился новый вариант расписания режима энергосбережения – На основе действий. Режим энергосбережения по расписанию позволяет выбранному OEM-производителем приложению отправлять системе сигналы, чтобы она могла более эффективно планировать включение режима энергосбережения. Этот вариант требует настройки и не является обязательным.

HAL статистики энергопотребления

В Android 10 IPowerStats.hal заменяет API для сбора статистики энергопотребления в IPower.hal. Хотя HAL питания по-прежнему поддерживает API, в будущем они будут перенесены исключительно в HAL статистики питания.

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

Снижение температуры

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

В Android 10 новые типы данных доступны через интерфейс IThermalService с помощью следующих трех методов:

  • getCurrentThermalStatus() возвращает текущий температурный статус устройства в виде целого числа, если не происходит троттлинг.
  • addThermalStatusListener() добавляет прослушиватель.
  • removeThermalStatusListener() Удаляет ранее добавленный прослушиватель.

Приложения добавляют и удаляют прослушиватели и получают доступ к статусу температуры в классе PowerManager. Доступ к информации о связанных причинных событиях может получить только доверенный системный сервис, например API Android или API производителя устройства. Чтобы обеспечить полную функциональность нового фреймворка, производители устройств или SoC должны реализовать thermal HAL 2.0.

Пример реализации мер по снижению температуры приведен в разделе Пример реализации.

Обновления

Формат файла APEX

Android Pony EXpress (APEX) – это новый формат контейнера, используемый в процессе установки модульных системных компонентов.

Динамические разделы

Динамические разделы – это система разделов в пространстве пользователя, которая позволяет создавать, изменять и удалять разделы во время беспроводных обновлений. Производителям устройств не нужно беспокоиться о размерах отдельных разделов, таких как system, vendor и product. Вместо этого выделяется один большой раздел super, в котором можно динамически изменять размер подразделов.

Динамические обновления системы

Динамические обновления системы (DSU) позволяют создать образ системы Android, который пользователи могут скачать из интернета и протестировать без риска повредить текущий образ системы.

Резервное копирование и восстановление данных нескольких пользователей

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

Overlayfs

Пользователи, работающие со сборками userdebug или eng, ожидают, что смогут эффективно перемонтировать системный раздел в режиме чтения-записи, а затем добавлять или изменять любое количество файлов без перепрошивки образа системы. Вы можете использовать Overlayfs, который автоматически настраивает резервное хранилище для файловой системы с возможностью записи в качестве верхнего уровня и монтирует его поверх нижнего. Эти действия выполняются в запросах adb disable-verity и adb remount. Подробную информацию можно найти в файле Overlayfs README в AOSP.

Поддержка общей библиотеки в режиме восстановления

В Android 10 общие библиотеки доступны в разделе восстановления, поэтому исполняемые файлы режима восстановления не обязательно должны быть статическими. Общие библиотеки находятся в каталоге /system/lib (или /system/lib64 для 64-разрядных устройств) в разделе.

Чтобы добавить новую общую библиотеку в раздел восстановления, добавьте recovery_available: true или recovery: true в Android.bp общей библиотеки. Первый устанавливает библиотеку в системный раздел и раздел восстановления, а второй – только в раздел восстановления.

Поддержку общей библиотеки нельзя создать с помощью системы сборки Android на основе make. Чтобы преобразовать существующий статический исполняемый файл для режима восстановления в динамический, удалите LOCAL_FORCE_STATIC_EXECUTABLE := true в Android.mk или static_executable: true (в Android.bp).

Проверка пользовательских данных (UDC)

В Android 10 появилась функция контрольной точки пользовательских данных (UDC), которая позволяет восстановить предыдущее состояние Android, если беспроводное обновление не удалось.