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

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

Строить

java_sdk_library

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

Архитектура

Модульные системные компоненты

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

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

В Android 10 добавлена ​​поддержка автоматического завершения работы HAL-интерфейсов при отсутствии у них клиентов.

Ядро

АБИ

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

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

Демон блокировки Android Live-Lock

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

vDSO32 на ARM64

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

записи в файле fstab для ранее смонтированных разделов

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

HIDL

Выгрузить очередь рассылки

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

Служба SystemSuspend

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

safe_union в HIDL

В Android 10 в HIDL представлен тип объединения safe_union , явно помеченный тегом.

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

ConfigStore HAL

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

API схемы файла конфигурации

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

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

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

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

ВИНТФ

В Android 10 произошли следующие изменения в VINTF:

  • Устаревшие теги версий AVB
  • Добавление информации о ядре в OTA-пакеты
  • Официально разрабатываются манифесты ODM.
  • Добавление матрицы совместимости продуктов
  • Связывание записи манифеста с модулем HAL в системе сборки.

Загрузчик

Ramdisk

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

Создание ODM-разделов

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

версионирование заголовка загрузочного образа

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

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

В Android 9 и более поздних версиях образ восстановления устройства должен содержать информацию из образа наложения . Производители устройств могут использовать DeviceTree или Advanced Configuration and Power Interface (ACPI) для описания всех устройств, которые невозможно обнаружить. Android 10 и более поздние версии включают поддержку архитектур, использующих ACPI вместо DeviceTree blob для наложения (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 и 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 работает в режиме мгновенных приложений , что означает установку тестового APK-файла как мгновенного приложения и запуск тестов.

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

Тестирование звука CTS Verifier pro

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

Тесты CTS Verifier MIDI

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

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

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

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

Тестирование VTS с использованием отладочного оперативного диска

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

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

Проверка с помощью Hardware Composer

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

Отладка

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

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

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

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

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

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

аутентификация по лицу

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

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

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

Шифрование

OEMCrypto

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

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

BoundsSanitizer

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

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

Санитаризация целочисленного переполнения

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

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

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

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

Захват воспроизведения аудио

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

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

MIDI

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 камеры.

Camera HAL динамическое физическое переключение камер

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

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

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

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

В Android 10 добавлена ​​поддержка 5G non-standalone (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 в WifiManager появился необязательный метод API под названием setDeviceMobilityState() , который увеличивает интервал между сканированием в режиме предпочтительной разгрузки сети (PNO), когда устройство находится в неподвижном состоянии, для снижения энергопотребления.

Оператор 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-сервер" компонент 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 больше не требуется, а следующие интерфейсы и методы объявлены устаревшими.

Интерфейсы:

Методы:

Для использования 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 внесены обновления в API нейронных сетей и HAL нейронных сетей. Краткое описание изменений см. в разделе «Нейронные сети» .

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

Датчики

Датчики HAL 2.0

Sensors 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.

Разрешения

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

Информация о контактах поставщика услуг и партнерских отношениях.

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

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

Среда выполнения Android (ART)

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

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

Производительность

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

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

Low Memory Killer Daemon (lmkd)

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

Власть

управление энергопотреблением платформы

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

Режим экономии заряда батареи

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:

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 .

Обновления

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.