На этой странице представлен обзор основных функций Android 10 и ссылки на дополнительную информацию. Обзоры функций организованы в соответствии с расположением документации на сайте.
Строить
java_sdk_library
В Android 10 представлено java_sdk_library
— новое правило сборки для устранения проблем совместимости с общими библиотеками Java. Производители устройств могут использовать этот механизм для своих собственных общих библиотек Java для поддержания обратной совместимости со своими API.
Архитектура
Компоненты модульной системы
В Android 10 некоторые компоненты системы Android стали модульными , что позволяет обновлять их вне рамок стандартного цикла выпуска Android. Некоторые модули включают:
- Среда выполнения Android
- Конскрипт
- DNS-резолвер
- DocumentsUI
- ExtServices
- СМИ
- ModuleMetadata
- Нетворкинг
- Контроллер разрешений
- Данные о часовом поясе
Уровень аппаратной абстракции (HAL)
В Android 10 добавлена поддержка автоматического выключения HAL при отсутствии клиентов.
Ядро
ПБИ
Android 10 включает поддержку новых утилит мониторинга ABI, помогающих сравнивать, отслеживать и устранять изменения ABI ядра, влияющие на совместимость с модулями ядра.
В Android 10 также представлена функция проверки использования ABI на основе символов. Эта функция может обнаруживать устаревшие готовые двоичные файлы во время сборки, чтобы разработчики общих библиотек могли определить, какие готовые двоичные файлы могут быть повреждены в результате внесения изменений, а какие необходимо пересобрать.
Android Live-Lock Daemon
В Android 10 включен Android Live-Lock Daemon (llkd) , который предназначен для обнаружения и устранения взаимоблокировок ядра.
vDSO32 на ARM64
Android 10 поддерживает использование vDSO32 на 64-битных ядрах , что обеспечивает увеличение времени работы батареи на 0,4 процента и другие улучшения производительности.
записи fstab для ранее смонтированных разделов
Android 10 требует, чтобы устройства указывали записи fstab
для ранее смонтированных разделов с помощью файла fstab
на первом этапе ramdisk.
ХИДЛ
Разгрузить очередь вещания
В Android 10 добавлена новая очередь BroadcastQueue
для разгрузки существующих фоновой и активной очередей. Очередь разгрузки имеет тот же приоритет и режим ожидания, что и фоновая очередь. Чтобы предотвратить блокировку фоновой очереди, в которой могут происходить более интересные или видимые пользователю трансляции, очередь разгрузки обрабатывает трансляцию BOOT_COMPLETED
, которую прослушивают многие приложения, и её выполнение может занять много времени. В настоящее время очередь разгрузки обрабатывает только трансляцию BOOT_COMPLETED
, но потенциально может обрабатывать и другие длинные трансляции.
Служба SystemSuspend
В Android 10 поток в libsuspend
, отвечающий за запуск режима ожидания системы, заменяется службой SystemSuspend HIDL . Эта реализация обеспечивает функциональность, эквивалентную предыдущим версиям, и при этом использует преимущества инфраструктуры Android HIDL.
safe_union в HIDL
В Android 10 представлен safe_union
— явно помеченный тип объединения в HIDL.
Конфигурация
ConfigStore HAL
В Android 10 поддержка ConfigStore HAL прекращена из-за высокого потребления памяти и сложности использования, и HAL заменяется системными свойствами .
API схемы файла конфигурации
Платформа Android содержит большое количество XML-файлов для хранения конфигурационных данных. Многие XML-файлы находятся в разделе vendor
, но считываются из system
раздела. В этом случае схема XML-файла служит интерфейсом между двумя разделами, поэтому схема должна быть явно указана и должна развиваться с сохранением обратной совместимости. До Android 10 платформа не предоставляла механизмов, требующих указания и использования XML-схемы, а также для предотвращения несовместимых изменений в схеме. В Android 10 такой механизм, называемый API схемы файла конфигурации , реализован.
Системные свойства как API
Системные свойства, к которым осуществляется доступ через разделы, схематизируются в файлах описания sysprop
, а API для доступа к свойствам генерируются как конкретные функции для C++ и классы для Java.
Объект интерфейса поставщика (VINTF)
ВИНТФ
Изменения в VINTF в Android 10 включают:
- Устаревание тегов версии AVB
- Добавление информации о ядре в пакеты OTA
- Создание ODM-деклараций официально
- Добавление матрицы совместимости продуктов
- Связывание записи манифеста с модулем HAL в системе сборки
Загрузчик
Рамдиск
В Android 10 корневая файловая система больше не включена в ramdisk.img
и вместо этого объединена с system.img
.
Создание ODM-разделов
В Android 10 реализована поддержка сборки odm
разделов с помощью системы сборки Android. Вы можете использовать отдельный раздел /odm
для кастомизации, что позволяет использовать один образ поставщика для нескольких SKU оборудования. Это позволяет производителям оригинальных разработок (ODM) настраивать пакеты поддержки плат (BSP) для систем на кристалле (SoC) для своих конкретных устройств (плат). Они могут реализовывать модули ядра для компонентов, специфичных для конкретной платы, демоны, специфичные для конкретной платы, или собственные функции на уровнях аппаратной абстракции (HAL). Они также могут заменять или настраивать компоненты SoC.
Управление версиями заголовка загрузочного образа
В Android 10 заголовок загрузочного образа обновлен до версии 2, включающей раздел для хранения образа дерева устройств (DTB). Тесты Android 10 VTS подтверждают, что все устройства, запускаемые с Android 10, используют заголовок загрузочного образа версии 2 и включают в себя допустимый образ DTB в составе образов загрузки/восстановления.
Образы восстановления для устройств, отличных от A/B
В Android 9 и более поздних версиях образ восстановления устройства должен содержать информацию из образа наложения . Производители устройств могут использовать DeviceTree или Advanced Configuration and Power Interface (ACPI) для описания всех необнаруживаемых устройств. В Android 10 и более поздних версиях реализована поддержка архитектур, использующих ACPI вместо BLOB-объекта DeviceTree для наложения (DTBO).
Стабильный AIDL
В Android 10 добавлена поддержка стабильного языка определения интерфейса Android (AIDL) , нового способа отслеживания интерфейса прикладного программирования (API)/двоичного интерфейса приложения (ABI), предоставляемого интерфейсами AIDL.
Переместить fastboot в пространство пользователя
В Android 10 добавлена поддержка разделов изменяемого размера за счет перемещения реализации fastboot из загрузчика в пространство пользователя.
Отображать
Воспроизведение HDR-видео
Android 10 поддерживает воспроизведение HDR10, VP9 и HDR10+ .
Классификация текста
Классификация текста использует методы машинного обучения, чтобы помочь разработчикам в этом. В Android 10 в API TextClassifier появились два метода: suggestConversationActions
и detectLanguage
. Метод suggestConversationActions
генерирует предлагаемые ответы и действия на основе заданного диалога, а метод detectLanguage
определяет язык текста.
Поддержка рендеринга шрифтов Zawgyi
Zawgyi — самый популярный шрифт в Мьянме. В Android 9 и более ранних версиях шрифт Zawgyi не поддерживался, поскольку он несовместим с Unicode . В Android 10 эта проблема решена благодаря добавлению Unicode-шрифта, поддерживающего как Unicode Burmese, так и Zawgyi. Реализация поддержки шрифта Zawgyi на устройствах с Android 10 не требуется. Если на ваших устройствах реализована специальная поддержка Zawgyi, вы можете:
- Отмените эти изменения и используйте метод, поддерживаемый платформой.
- Оставьте в системе стандартный шрифт Zawgyi и используйте код локали
my-qaag
в файлеfonts.xml
. Подробнее см. в примечаниях к выпуску Unicode CLDR для Zawgyi (Qaag) .
Ограничения на скрытие значков приложений
Android 10 ограничивает возможность приложений скрывать значки на панели запуска. Если у приложения не включена активность на панели запуска, система отображает синтезированную активность на панели запуска; эта синтезированная активность представляет собой страницу сведений о приложении в системных настройках.
Дополнительную информацию о логике, используемой для отображения значков приложений, включая типы приложений, значки которых не отображаются, см. в документации по getActivityList()
в справочнике по API.
Настройки
Для улучшения доступности в Android 10 предусмотрены настраиваемые пользователем параметры тайм-аута. Изменения API и настроек появились в Android 10. При настройке настроек убедитесь, что эта функция поддерживается. Если на вашем устройстве есть элементы пользовательского интерфейса, которые требуют времени ожидания, используйте для них API тайм-аутов . Подробнее см. в руководстве по обеспечению доступности для разработчиков Android .
Совместимость
Документ определения совместимости Android (CDD)
Документ определения совместимости с Android 10 представляет собой переработку предыдущих версий с обновлениями для новых функций и изменениями требований для ранее выпущенных функций.
Тесты
Набор тестов совместимости (CTS)
У Android CTS есть отдельная страница с заметками о выпуске , на которой перечислены многие важные изменения для Android 10.
Загрузки CTS
Пакеты CTS, поддерживающие Android 10, доступны на странице загрузок CTS . Исходный код включённых тестов можно синхронизировать с тегом android-cts-10_r1
в дереве открытого исходного кода.
CTS прокладка APEX
В Android 10 представлен пакет CtsShimApex
, который необходимо предварительно установить на устройстве для написания тестов CTS для управления APEX.
Тестовый режим жгута проводов
Режим тестирования CTS помогает разработчикам автоматизировать тестирование устройства или парка устройств.
Режим мгновенных приложений
Начиная с Android 10, CTS работает в режиме Instant Apps , что означает установку тестового APK как Instant App и запуск тестов.
Помимо режима CTS для мгновенных приложений, Android 10 включает 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 .
Тестовый набор поставщика (VTS)
Тестирование VTS с отладочным ramdisk
В Android 10 тип сборки образа общей системы (GSI), используемый для тестирования соответствия CTS-on-GSI/VTS, меняется с пользовательского (userdebug) на пользовательский (user), поскольку GSI имеет статус «подписанный для выпуска». Однако команда adb root
, предоставляющая хосту права root для тестируемого устройства Android, в пользовательской сборке недоступна. Это создаёт проблему, поскольку для работы VTS требуется adb root
.
Отладочный RAM-диск добавлен для обеспечения возможности получения 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 реализован BoundsSanitizer (BoundSan) в Bluetooth и кодеках. 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 — это динамический распределитель памяти пользовательского режима, разработанный для повышения устойчивости к уязвимостям, связанным с кучей. Он предоставляет стандартные примитивы выделения и освобождения памяти C, а также примитивы C++.
ShadowCallStack
ShadowCallStack
(SCS) — это режим инструментирования LLVM , который защищает от перезаписи адреса возврата (например, переполнения буфера стека) путем сохранения адреса возврата функции в отдельно выделенном экземпляре ShadowCallStack
в прологе функции неконечных функций и загрузки адреса возврата из экземпляра ShadowCallStack
в эпилоге функции.
Аудио
Аудио HAL
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 захвата не влияет на задержку приложения, звук которого захватывается.
МИДИ
Android 10 упрощает портирование профессиональных аудиоприложений, использующих MIDI, на платформу Android с помощью API AMidi
NDK .
Камера
Краткий обзор изменений в API камеры, HAL камеры и модуле камеры, представленных в Android 10, см. в разделе Обновления камеры Android 10 .
Улучшения конфиденциальности платформы камеры
В Android 10 реализованы улучшения конфиденциальности в фреймворке камеры. Чтобы избежать раскрытия потенциально конфиденциальной статической информации о камере в CameraCharacteristics
без согласия пользователя, приложения должны получить разрешение CAMERA
для получения статических метаданных с тегом, чувствительным к конфиденциальности, с помощью метода getCameraCharacteristics
.
Чтобы получить список ключей характеристик камеры, требующих разрешения CAMERA
, вызовите метод getKeysNeedingPermission
.
Запрос на реконфигурацию сеанса
В Android 10 добавлена функция запроса на перенастройку сеанса , которая позволяет повысить производительность за счет большего контроля над внутренней логикой перенастройки параметров сеанса.
API управления буфером камеры HAL3
В Android 10 представлены дополнительные API-интерфейсы управления буфером камеры HAL3 , которые позволяют реализовать логику управления буфером для достижения различных компромиссов в отношении памяти и задержки при реализации HAL камеры.
Динамический физический переключатель камеры HAL
В Android 10 появился динамический тег метаданных ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
, который указывает активную физическую камеру логического устройства. Подробнее см. в разделе Поддержка нескольких камер .
Поддержка скрытия физических камер
В Android 10 HAL камеры может ограничить количество физических камер, которые можно открыть напрямую из приложения. Подробнее см. в разделе «Поддержка нескольких камер» .
API Camera2 VNDK
В 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 (High Efficiency Image File Format) , которые обеспечивают улучшенное качество и меньший размер по сравнению с изображениями JPEG. Для поддержки изображений HEIF устройства должны иметь кодер HEIC или HEVC.
Монохромные камеры
Android 10 обеспечивает дополнительную поддержку формата потока Y8, статических метаданных массива цветовых фильтров монохромного и ближнего инфракрасного (NIR) диапазона, а также функций DngCreator
для монохромных камер .
Связность
Звонки и сообщения
Номера экстренных служб и экстренные вызовы
Android 10 обеспечивает улучшенную поддержку экстренных вызовов . В экстренных случаях устройства с поддержкой IRadio HAL v1.4 могут инициировать экстренный вызов, используя номера экстренных служб, полученные из таких источников, как SIM-карта, сигнал сети или база данных Android. Номера можно классифицировать по категориям экстренных служб, например, полиция, пожарная служба и скорая помощь.
API групповых вызовов
API групповых вызовов являются расширением API eMBMS, добавленных в Android 9. Новые API определяют стандарт, позволяющий приложениям присоединяться к групповым вызовам Cellular Broadcast и осуществлять вещание, взаимодействуя с пакетами промежуточного программного обеспечения 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 v1.4 и IRadioConfig HAL v1.2. Подробнее см. в разделе «Реализация требований eSIM и HAL».
5G Non-Standalone (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
, который увеличивает интервал между сканированиями предпочтительной сетевой разгрузки (PNO), когда устройство неподвижно, чтобы снизить энергопотребление.
Оператор Wi-Fi
В Android 10 устройства с функцией операторского Wi-Fi автоматически подключаются к настроенным сетям операторского Wi-Fi (сетям с сертификатами открытых ключей).
Простое подключение к Wi-Fi
В Android 10 устройства могут использовать Wi-Fi Easy Connect , который использует протокол подготовки устройств (DPP), представленный Wi-Fi Alliance (WFA), для подготовки и настройки устройств Wi-Fi.
Режим Wi-Fi с низкой задержкой
В Android 10 представлен режим малой задержки Wi-Fi , который настраивает чип Wi-Fi для уменьшения задержки.
Обновленный DHCP-сервер
В рамках формирования сервисного комплекса «IP-сервер» 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 в системном интерфейсе.
Точка пропуска R2
В Android 10 реализована поддержка функций Passpoint R2 . Passpoint R2 реализует онлайн-регистрацию (OSU) — стандартный метод предоставления новых профилей Passpoint. Android 10 поддерживает предоставление профилей EAP-TTLS с помощью SOAP-XML.
НФК
Безопасный NFC
Функция Secure NFC позволяет включить эмуляцию NFC-карты вне хоста только при разблокированном экране устройства. Реализация этой функции позволяет пользователям включить Secure NFC для повышения безопасности.
Android Beam устарел
В Android 10 Android Beam больше не требуется, а следующие интерфейсы и методы устарели.
Интерфейсы:
-
NfcAdapter.CreateBeamUrisCallback
-
NfcAdapter.CreateNdefMessageCallback
-
NfcAdapter.OnNdefPushCompleteCallback
Методы:
-
createBeamUris
-
invokeBeam
-
isNdefPushEnabled
-
setBeamPushUris
-
setBeamPushUrisCallback
-
setNdefPushMessage
-
setNdefPushMessageCallback
-
setOnNdefPushCompleteCallback
-
createNdefMessageCallback
-
onNdefPushCompleteCallback
Чтобы использовать Android Beam, сообщите константу функции android.sofware.nfc.beam
.
Графика
ASurfaceControl
В Android 10 добавлен ASurfaceControl
— новый способ для SurfaceFlinger
принимать буферы.
Графическая реализация
Слои OpenGL ES
В Android 10 представлена система слоев для GLES.
EGL 1.5
В Android 10 реализован интерфейс EGL 1.5 . Информацию о новых функциях EGL 1.5 см. в спецификации Khronos Releases EGL 1.5 .
Вулкан
Android 10 поддерживает графику Vulkan 1.1. Платформа также поддерживает VK_KHR_swapchain
v70, поэтому приложение Vulkan может создавать VkImage
, подкреплённый памятью swapchain.
Частота обновления производительности
В Android 10 добавлена поддержка частоты обновления производительности. По умолчанию эта функция отключена.
Взаимодействие
Автомобильная промышленность
Автомобильная аудиосистема
В 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:
- Обзор
- A HardwareBuffer
- Пакетные выполнения и быстрые очереди сообщений
- Кэширование компиляции
- Обнаружение и назначение устройств
- Расширения поставщика
Датчики
Датчики HAL 2.0
Датчики HAL 2.0 поддерживают использование быстрых очередей сообщений (FMQ) для отправки событий датчиков из HAL в Android Sensors Framework.
Датчики выключены
В Android 10 появилась возможность для разработчиков отключить все датчики на устройстве. Эта функция помогает разработчикам тестировать работу своих приложений в ситуациях, когда эти датчики недоступны, а также предоставляет пользователям возможность управлять датчиками на своих устройствах.
Если ваши устройства используют реализацию SensorService
, CameraService
и AudioPolicyService
по умолчанию, то дополнительная настройка эталонного дизайна не требуется. Если у вас есть другие датчики, см. раздел «Настройка» для получения более подробной информации о поддержке этой функции.
СМИ
Обновляемые компоненты мультимедиа
Android 10 предоставляет обновляемые медиа-компоненты , которые позволяют обновлять связанные с мультимедиа модульные системные компоненты через инфраструктуру Google Play Store или через предоставляемый партнером механизм беспроводного обновления (OTA).
Медиа DRM
Android 10 повышает полезность и удобство использования API MediaDrm
Java и NDK.
Декодирование
Android 10 поддерживает декодирование AV1 SW.
Разрешения
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
изменено с «подпись или привилегированный» на «только подпись». Это означает, что только приложения, подписанные платформой, могут назначать другие приложения администраторами устройства.
Улучшения API совместного использования
Android 10 предоставляет ряд новых функций API платформы Android, связанных с общим доступом . Если вы изменили код Share Sheet в своей реализации, убедитесь, что она поддерживает эти новые функции. Если вы не изменяли код Share Sheet в своей реализации, вам не нужно ничего делать для поддержки этих новых функций.
Среда выполнения Android (ART)
Подписанная конфигурация
Функция Signed Config позволяет встраивать конфигурацию ограничений для интерфейсов, не относящихся к SDK, в APK-файлы. Это позволяет удалять определённые интерфейсы, не относящиеся к SDK, из чёрного списка, чтобы AndroidX мог безопасно их использовать. Благодаря этому изменению AndroidX может добавить поддержку новых функций в старых версиях Android.
Производительность
Уровень абстракции Cgroup
Android 10 includes a cgroup abstraction layer and task profiles, which developers can use to describe a set of restrictions to apply to a thread or a process.
Low Memory Killer Daemon (lmkd)
Android 10 supports a new lmkd
mode that uses kernel pressure stall information (PSI) monitors for memory pressure detection.
Власть
Platform power management
In Android 10, Doze mode can be enabled on always-on devices as well as on battery-powered devices.
Routine battery saver
Android 10 introduces a new battery saver schedule option called based on routine . Routine battery saver allows an app chosen by the OEM to provide signals to the system for more intelligent battery saver scheduling. This option requires configuration, and is optional to implement.
Power stats HAL
In Android 10, IPowerStats.hal
replaces the power stats collection APIs in IPower.hal
. While the power HAL still supports the APIs, they'll be migrated exclusively to the power stats HAL in the future.
The power stats HAL includes new APIs to support the collection of data from on-device power measurement, for supported devices. The existing power stats collection APIs are also updated to improve flexibility. The power hinting APIs remain in power HAL and aren't changing.
Thermal mitigation
The thermal framework in Android 10 abstracts device interfaces for the thermal subsystem temperature sensor, including CPU, GPU, battery, skin, and cooling device. The framework introduces a polling interface to query thermal status to initiate throttling, and a callback interface to send a message to the user when a threshold is exceeded.
Android 10 provides the new data types through the IThermalService
interface using these three new methods:
-
getCurrentThermalStatus()
returns the current thermal status of the device as an integer, unless the device is undergoing throttling. -
addThermalStatusListener()
adds a listener. -
removeThermalStatusListener()
removes a previously added listener.
Apps add and remove listeners and access temperature status in the PowerManager
class. Only a trusted system service such as an Android API or device manufacturer API can access information about associated causal events. Device manufacturers or SoC makers must implement thermal HAL 2.0
to enable the full functionality of the new thermal framework.
For a thermal mitigation implementation example, see the Reference implementation .
Updates
APEX file format
Android Pony EXpress (APEX) is a new container format used in the install flow for modular system components.
Dynamic partitions
Dynamic partitions introduce a userspace partitioning system to Android, allowing partitions to be created, resized, or destroyed during OTA updates. Device makers don't have to worry about the individual sizes of partitions, such as system
, vendor
, and product
. Instead, one big super
partition is allocated, and subpartitions can be sized dynamically within it.
Dynamic system updates
Dynamic system updates (DSU) allows you to make an Android system image that users can download from the internet and try out without the risk of corrupting the current system image.
Multiuser backup and restore
Android 10 supports backup and restore functionality for all users on a device. Previously, backup and restore was only available for the system user. Backup and restore for nonsystem users is turned off by default as it has only partial coverage for settings, wallpaper, and system components.
Overlayfs
Users working with userdebug
or eng
builds expect to be able to efficiently remount the system partition as read-write and then add or modify any number of files without reflashing the system image. You can use Overlayfs
, which automatically sets up backing storage for a writable file system as an upper reference, and mounts over the lower. These actions happen in the adb disable-verity
and adb remount
requests. For more details, see the Overlayfs README in AOSP.
Shared library support in recovery mode
In Android 10, shared libraries are available in the recovery partition, which eliminates the need for all recovery mode executables to be static. The shared libraries are located under the /system/lib
(or /system/lib64
for 64-bit devices) directory in the partition.
To add a new shared library to the recovery partition, add recovery_available: true
or recovery: true
to Android.bp
of the shared library. The former installs the library to both the system and recovery partitions, while the latter installs it only to the recovery partition.
Shared library support can't be built with Android's make-based build system. To convert an existing static executable for the recovery mode to a dynamic one, remove LOCAL_FORCE_STATIC_EXECUTABLE := true
in Android.mk
or static_executable: true
(in Android.bp
).
User Data Checkpoint (UDC)
Android 10 introduces the User Data Checkpoint (UDC) feature , which allows Android to roll back to its previous state when an Android over-the-air (OTA) update fails.