Примечания к выпуску 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 (llkd) , который предназначен для обнаружения и устранения взаимоблокировок ядра.

vDSO32 на ARM64

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

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

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

ХИДЛ

Разгрузка BroadcastQueue

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

Служба системной приостановки

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

Safe_union в HIDL

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

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

Магазин конфигураций HAL

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

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

Платформа Android содержит большое количество XML-файлов для хранения данных конфигурации. Многие файлы XML находятся в разделе vendor , но считываются они в system разделе. В этом случае схема файла XML служит интерфейсом между двумя разделами, и поэтому схема должна быть явно указана и должна развиваться обратно совместимым образом. До Android 10 платформа не предоставляла механизмов, требующих указания и использования схемы XML или предотвращения несовместимых изменений в схеме. Android 10 предоставляет этот механизм, называемый Config File Schema 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, которая включает раздел для хранения образа BLOB-объекта дерева устройств (DTB). Тесты Android 10 VTS подтверждают, что все устройства, запускаемые с Android 10, используют заголовок загрузочного образа версии 2 и включают действительный образ DTB как часть образов загрузки/восстановления.

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

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

В 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 с отладочным виртуальным диском

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

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

Проверка аппаратного обеспечения 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.

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

ГраницыДезинфицирующее средство

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

Скудо

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

ТеньВызовСтек

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

Аудио

Аудио ХАЛ

Android 10 включает следующие новые возможности для аудио HAL .

  • AudioSource
  • AudioFormat
  • AudioChannelMask

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

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

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

Менеджер аудиополитики

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

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

Android 10 включает следующие улучшения для звука высокого разрешения .

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

Одновременный захват

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

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

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 может уменьшить количество физических камер, которые могут быть открыты напрямую из приложения. Дополнительные сведения см. в разделе Поддержка нескольких камер .

Камера2 ВНДК 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. Устройства должны иметь кодировщик HEIC или HEVC для поддержки изображений HEIF.

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

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 v1.4 и IRadioConfig HAL v1.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 , который увеличивает интервал между сканированиями предпочтительной разгрузки сети (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

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

Wi-Fi прямой

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.

ЭГЛ 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 , поддерживаемый памятью цепочки обмена.

Частота обновления производительности

В 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

Датчики 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, доступ к данным, связанным с контактами, управляемым компонентом Contacts Provider , осуществляется иначе, чем в 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 позволяет встраивать в APK-файлы настройки ограничений интерфейса, отличных от SDK. Это позволяет удалить из черного списка определенные интерфейсы, не относящиеся к SDK, чтобы AndroidX мог безопасно их использовать. Благодаря этому изменению AndroidX может добавить поддержку новых функций в старых версиях Android.

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

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

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

Демон-убийца нехватки памяти (lmkd)

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

Власть

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

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

Обычная экономия заряда батареи

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

Статистика мощности HAL

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

Статистика Power HAL включает в себя новые API для поддержки сбора данных из измерения мощности на устройстве для поддерживаемых устройств. Существующие APIS STATS Collection также обновляются для повышения гибкости. Намекающие на питание API остаются в силе HAL и не меняются.

Тепловое смягчение

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

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

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

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

Для примера реализации теплового смягчения см. Рекомендацию .

Обновления

Формат файла вершины

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

Динамические перегородки

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

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

Dynamic System Updates (DSU) позволяет создавать изображение системы Android, которое пользователи могут загружать из Интернета, и попробовать без риска повреждения текущего изображения системы.

Multiumer Sakep and Restore

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

Oplayfs

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

Общая библиотечная поддержка в режиме восстановления

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

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

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

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

Android 10 представляет функцию контрольно-пропускной пункты пользователя (UDC) , которая позволяет Android возвращаться в свое предыдущее состояние, когда обновление Android Over-Air (OTA) не удается.