Android 13 представляет множество новых функций и API для разработчиков. Разделы ниже помогут вам узнать о новых функциях для ваших приложений и начать работу с соответствующими API.
Подробный список новых, измененных и удаленных API см. в отчете об изменениях API . Подробную информацию о новых API см. в справочнике API Android — новые API выделены для большей наглядности. Также, чтобы узнать о том, как изменения платформы могут повлиять на ваши приложения, обязательно ознакомьтесь с изменениями в поведении Android 13 для приложений, ориентированных на Android 13 , и для всех приложений .
Инструменты и средства повышения производительности разработчиков
Тематические иконки приложений

Начиная с Android 13, вы можете включить тематическую окраску значков приложений. Благодаря этой функции значки приложений в поддерживаемых лаунчерах Android будут окрашиваться в соответствии с цветом выбранных пользователем обоев и других тем.
Для поддержки этой функции ваше приложение должно предоставлять как адаптивную иконку , так и монохромную иконку приложения, и указывать на монохромную иконку приложения из элемента <adaptive-icon> в манифесте. Если пользователь включил тематические иконки приложений (то есть, активировал переключатель «Тематические иконки» в системных настройках), и лаунчер поддерживает эту функцию, система использует цветовую гамму выбранных пользователем обоев и темы для определения оттенка, который затем применяется к монохромной иконке приложения.
На главном экране НЕ отображается тематический значок приложения, а вместо этого показывается адаптивный или стандартный значок приложения в следующих случаях:
- Если пользователь не включил тематические значки приложений
- Если ваше приложение не имеет монохромной иконки
- Если лаунчер не поддерживает тематические значки приложений
Более подробную информацию и инструкции см. в разделе «Адаптивные значки» .
Языковые настройки для каждого приложения

Во многих случаях многоязычные пользователи устанавливают системный язык на один язык — например, английский — но хотят выбрать другие языки для конкретных приложений, такие как голландский, китайский или хинди. Чтобы помочь приложениям обеспечить лучший пользовательский опыт, Android 13 представляет следующие функции для приложений, поддерживающих несколько языков:
Системные настройки : централизованное место, где пользователи могут выбрать предпочтительный язык для каждого приложения.
В вашем приложении необходимо указать атрибут
android:localeConfigв манифесте приложения, чтобы сообщить системе о поддержке нескольких языков. Для получения дополнительной информации см. инструкции по созданию файла ресурсов и указанию этого атрибута в файле манифеста приложения .Дополнительные API : Эти общедоступные API, такие как методы
setApplicationLocales()иgetApplicationLocales()вLocaleManager, позволяют приложениям устанавливать язык, отличный от системного языка, во время выполнения.Эти API автоматически синхронизируются с системными настройками; поэтому приложения, использующие эти API для создания пользовательских средств выбора языка внутри приложения, обеспечат пользователям единообразный пользовательский опыт независимо от того, где они выбирают языковые предпочтения. Публичные API также помогают сократить объем шаблонного кода, поддерживают разделение APK-файлов и автоматическое резервное копирование приложений для хранения языковых настроек пользователей на уровне приложения.
Для обеспечения обратной совместимости с предыдущими версиями Android эквивалентные API также доступны в AndroidX. Мы рекомендуем использовать API, добавленные в Appcompat 1.6.0-beta01 или более поздних версиях.
Эти изменения не затронут приложения, не поддерживающие многоязычность.
Улучшена поддержка текста и языков.
В Android 13 реализован ряд улучшений текста и языка, которые помогут вам получить более качественный пользовательский опыт. Подробности описаны в следующих разделах:
Более быстрое использование переносов
Использование переноса слов упрощает чтение текста с переносом и повышает адаптивность пользовательского интерфейса. Начиная с Android 13, производительность переноса слов оптимизирована на 200%, поэтому вы можете включить его в TextView практически без влияния на производительность отрисовки. Для более быстрого переноса слов используйте частоты fullFast или normalFast в setHyphenationFrequency() .
API для преобразования текста
Люди, говорящие на таких языках, как японский и китайский, используют фонетический ввод букв, что часто замедляет поиск и работу таких функций, как автозаполнение. В Android 13 приложения могут вызывать новый API преобразования текста , чтобы пользователи могли быстрее и проще находить то, что им нужно. Ранее, например, для поиска пользователю из Японии требовалось выполнить следующие шаги:
- Введите хирагану в качестве фонетического произношения поискового запроса (например, названия места или приложения).
- Используйте клавиатуру для преобразования символов хираганы в иероглифы кандзи.
- Повторный поиск с использованием иероглифов кандзи.
- Наконец-то они получают результаты своего поиска.
Благодаря новому API для преобразования текста, японские пользователи могут вводить хирагану и сразу же видеть результаты поиска по иероглифам в режиме реального времени, минуя шаги 2 и 3.
Улучшена межстрочная высота для нелатинских шрифтов.
В Android 13 улучшено отображение нелатинских шрифтов (таких как тамильский, бирманский, телугу и тибетский) за счет использования межстрочного интервала, адаптированного для каждого языка. Новый межстрочный интервал предотвращает обрезку и улучшает позиционирование символов. Ваше приложение может воспользоваться этими улучшениями, просто ориентируясь на Android 13. Обязательно протестируйте свои приложения при использовании нового межстрочного интервала, поскольку изменения могут повлиять на пользовательский интерфейс в языках, отличных от латинского.

Улучшена функция переноса текста на японском языке.
Начиная с Android 13, TextViews могут переносить текст по бунсэцу (наименьшая единица слова, звучащая естественно) или фразам, а не по символам, что делает японские приложения более удобными и читабельными. Вы можете воспользоваться этой функцией переноса текста, используя android:lineBreakWordStyle="phrase" с TextViews.

Обновления библиотеки Unicode
В Android 13 добавлены последние улучшения, исправления и изменения, включенные в Unicode ICU 70 , Unicode CLDR 40 и Unicode 14.0 .
Вот несколько важных изменений:
- В английском языке (Канада)
en‑CAи английском языке (Республика Филиппины)en‑PHвместо английского языка (Великобритания)en‑GB, когда такие ресурсы отсутствуют, используются ресурсы переводаenанглийский язык (США) en. - Категория
manyчисла была введена для испанскогоes, итальянскогоit, португальскогоptи португальского (Португалия)pt‑PT. Аналогично французскому, введенному в CLDR v38 , она используется для больших чисел.
Цветные векторные шрифты

Начиная с Android 13, система включает поддержку отображения шрифтов COLR версии 1 (COLRv1) и обновляет системные эмодзи до формата COLRv1. COLRv1 — это очень компактный формат шрифтов, который быстро и четко отображается при любом размере.
Для большинства приложений система обрабатывает все автоматически, и COLRv1 просто работает. Однако, если ваше приложение реализует собственную отрисовку текста и использует системные шрифты, мы рекомендуем протестировать отрисовку эмодзи.
Чтобы узнать больше о COLRv1, ознакомьтесь со следующими ресурсами:
- Объявление в блоге разработчиков Chrome
- Внедрение цветных векторных шрифтов COLRv1 в Chrome (видео)
- Спецификация таблицы COLR
API для размещения быстрых настроек
Быстрые настройки в панели уведомлений — это удобный способ для пользователей изменять настройки или быстро выполнять действия, не покидая контекст приложения. Для приложений, предоставляющих пользовательские плитки , мы упрощаем пользователям поиск и добавление ваших плиток в Быстрые настройки. Используя новый API для размещения плиток , ваше приложение теперь может предложить пользователю напрямую добавить вашу пользовательскую плитку в набор активных плиток Быстрых настроек. Новое системное диалоговое окно позволяет пользователю добавить плитку за один шаг, не покидая ваше приложение, вместо того, чтобы переходить в Быстрые настройки для добавления плитки.

Предварительный просмотр буфера обмена
Начиная с Android 13, система отображает стандартное визуальное подтверждение при добавлении содержимого в буфер обмена. Новое подтверждение выполняет следующие действия:
- Подтверждает успешное копирование содержимого.
- Предоставляет предварительный просмотр скопированного содержимого.
Эта функция стандартизирует различные уведомления, отображаемые приложениями после копирования, и предоставляет пользователям больший контроль над буфером обмена. Для получения дополнительной информации посетите страницу функции «Копирование и вставка» .

Предсказательный жест назад
В Android 13 появилась функция предиктивного ввода жеста «назад» для устройств Android, таких как телефоны, устройства с большими экранами и складные устройства. Для поддержки этой функции необходимо обновить приложение.
Для получения подробной документации см. раздел «Обновите приложение, чтобы оно поддерживало предиктивный жест возврата» . Вы также можете попробовать наши практические занятия .
Аудио Bluetooth LE
Технология Low Energy (LE) Audio — это беспроводное аудио, созданное для замены классического Bluetooth и обеспечения возможности использования в определенных сценариях и топологиях подключения. Она позволяет пользователям делиться своим аудио с друзьями и семьей, а также подписываться на публичные трансляции для получения информации, развлечений или обеспечения доступности. Технология разработана для обеспечения высококачественного звука без ущерба для заряда батареи и позволяет плавно переключаться между различными сценариями использования, недоступными при использовании классического Bluetooth. Начиная с Android 13, система включает встроенную поддержку LE Audio, поэтому разработчики получают эти возможности бесплатно на совместимых устройствах.
MIDI 2.0
Начиная с Android 13, система включает поддержку стандарта MIDI 2.0, в том числе возможность подключения оборудования MIDI 2.0 через USB. Этот стандарт предлагает такие возможности, как повышенное разрешение для контроллеров, улучшенная поддержка неевропейской интонации и более выразительное исполнение с использованием контроллеров для каждой ноты.
Улучшения эффективности заставки
В Android 13 повышена эффективность анимированных заставок в API Splash Screen:
Система определяет продолжительность анимации непосредственно из объекта
AnimatedVectorDrawable. До Android 13 для этого требовалось напрямую устанавливать значение параметраwindowSplashScreenAnimationDuration.Используйте новый атрибут
windowSplashScreenBehaviorдля более полного управления отображением значка на заставке вашего приложения в Android 13 и выше.
Подробную документацию см. в разделе «Заставки» .
Оптимизация ART
В Android 13 (уровень API 33) и выше ART значительно ускоряет переключение между нативным и нативным кодом, а вызовы JNI теперь выполняются до 2,5 раз быстрее. Обработка ссылок во время выполнения также была переработана, чтобы сделать её в основном неблокирующей, что ещё больше уменьшает задержки. Кроме того, вы можете использовать публичный API Reference.refersTo() для более быстрого освобождения недоступных объектов, и вы заметите, что интерпретатор теперь работает быстрее благодаря оптимизированному поиску классов и методов. ART также выполняет больше проверок байт-кода во время установки, избегая затрат на проверку во время выполнения и поддерживая быстрое время запуска приложения.
Конфиденциальность и безопасность
Более безопасный экспорт контекстно-зависимых приемников
Для повышения безопасности приемников во время выполнения Android 13 предоставляет приложению возможность указывать, следует ли экспортировать и отображать зарегистрированный широковещательный приемник другим приложениям на устройстве. В предыдущих версиях Android любое приложение на устройстве могло отправлять незащищенный широковещательный сигнал динамически зарегистрированному приемнику, если этот приемник не был защищен разрешением на использование подписи .
Данная конфигурация экспорта доступна в приложениях, которые выполняют хотя бы одно из следующих действий:
- Используйте класс
ContextCompatначиная с версии 1.9.0 или выше, из библиотеки AndroidX Core . - Целевая платформа: Android 13 или выше.
Выбор фотографий
В Android 13 (уровень API 33) и выше есть функция выбора фотографий . При запуске приложения пользователи выбирают конкретные изображения и видео для публикации в приложении, например, фотографии профиля, вместо того, чтобы предоставлять приложению доступ ко всей медиатеке. Это рекомендуемый способ доступа к фотографиям и видео пользователя.
Инструмент выбора фотографий обеспечивает повышенную конфиденциальность пользователей, поскольку вашему приложению не нужно объявлять какие-либо разрешения во время выполнения. Кроме того, инструмент выбора фотографий предоставляет встроенный стандартизированный пользовательский интерфейс для приложений, что обеспечивает более единообразный пользовательский опыт.
Новое разрешение во время выполнения для находящихся поблизости устройств Wi-Fi.
В Android 13 (уровень API 33) введено новое разрешение времени выполнения в группе разрешений NEARBY_DEVICES для приложений, управляющих подключением устройства к ближайшим точкам доступа по Wi-Fi. Эти приложения должны объявлять новое разрешение NEARBY_WIFI_DEVICES при вызове нескольких различных API Wi-Fi . Кроме того, если приложения не получают данные о физическом местоположении из API Wi-Fi, им не нужно объявлять разрешение ACCESS_FINE_LOCATION при использовании Android 13 или выше.
Узнайте больше о разрешении для находящихся поблизости устройств Wi-Fi .
Новое разрешение на использование точных сигналов тревоги.
Если ваше приложение ориентировано на Android 13 или выше, вы можете использовать разрешение USE_EXACT_ALARM , которое предоставляется вашему приложению автоматически. Однако для использования этого разрешения ваше приложение должно удовлетворять хотя бы одному из следующих критериев:
- Ваше приложение — это будильник или таймер.
- Ваше приложение — это календарь, который отображает уведомления о предстоящих событиях.
Если ваше приложение устанавливает точные оповещения, но не удовлетворяет ни одному из случаев, описанных в предыдущем списке, продолжайте объявлять разрешение SCHEDULE_EXACT_ALARM и будьте готовы к ситуации, когда пользователь запретит доступ к вашему приложению.
Разработчик может понизить уровень разрешений.
Начиная с Android 13, ваше приложение может отзывать доступ к неиспользуемым разрешениям во время выполнения . Этот API позволяет вашему приложению выполнять задачи, повышающие конфиденциальность, такие как:
- Удалите неиспользуемые разрешения.
- Соблюдайте лучшие практики управления правами доступа, это повысит доверие пользователей. Возможно, стоит показать пользователям диалоговое окно с информацией о правах доступа, которые вы отозвали заблаговременно.
Схема подписи APK v3.1
В Android 13 добавлена поддержка схемы подписи APK v3.1, которая улучшает существующую схему подписи APK v3 . Эта схема устраняет некоторые известные проблемы схемы подписи APK v3, касающиеся поворота экрана. В частности, схема подписи v3.1 поддерживает целевую версию SDK, что позволяет поворачивать экран на более позднюю версию платформы.
В схеме подписи версии 3.1 используется идентификатор блока, который не распознается в версиях 12L и ниже. Поэтому платформа применяет следующее поведение подписывающего лица:
- Устройства, работающие под управлением Android 13 или выше, используют повернутую подпись в блоке v3.1.
- Устройства, работающие под управлением более старых версий Android, игнорируют повернутую подпись и вместо этого используют исходную подпись из блока v3.0.
Приложениям, которые еще не сменили ключ подписи, никаких дополнительных действий не требуется. Когда эти приложения решат сменить ключ, система по умолчанию будет применять схему подписи версии 3.1.
Приложениям, которые уже прошли ротацию ключа подписи и хотят продолжать использовать свой ротированный ключ в блоке подписи версии 3.0, необходимо обновить вызов apksigner :
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
...где API_LEVEL равен 32 или ниже.
Улучшена система отслеживания ошибок в Keystore и KeyMint.
Для приложений, генерирующих ключи, Keystore и KeyMint теперь предоставляют более подробные и точные индикаторы ошибок. Мы добавили иерархию классов исключений в java.security.ProviderException , содержащую исключения, специфичные для Android, включая коды ошибок Keystore/KeyMint и информацию о возможности повторной попытки обработки ошибки. Вы также можете изменить методы генерации ключей и использовать их (подписание, шифрование) для генерации новых исключений. Улучшенная отчетность об ошибках не ограничивается генерацией ключей и теперь должна предоставлять вам всю необходимую информацию для повторной попытки генерации ключей.
Поддержка планшетов и больших экранов
Android 13 развивает оптимизации для планшетов, представленные в Android 12 и обновлении 12L, включая оптимизации системного интерфейса, улучшенную многозадачность и улучшенные режимы совместимости. В рамках тестирования убедитесь, что ваши приложения выглядят наилучшим образом на планшетах и других устройствах с большими экранами.
Для получения более подробной информации о новых функциях и рекомендуемых к тестированию функциях, посетите страницу поддержки планшетов и устройств с большими экранами .
Графика
Программируемые шейдеры

Начиная с Android 13, система включает поддержку программируемых объектов RuntimeShader , поведение которых определяется с помощью языка графических шейдеров Android ( AGSL ). AGSL во многом разделяет синтаксис с GLSL, но работает в рамках механизма рендеринга Android, позволяя настраивать отрисовку на холсте Android, а также фильтровать содержимое View. Внутри Android эти шейдеры используются для реализации эффектов ряби , размытия и растяжения при прокрутке . Android 13 и более поздние версии позволяют создавать аналогичные расширенные эффекты для вашего приложения.
Улучшения в хореографии
В Android 13 добавлены публичные API-методы для Choreographer и ASurfaceControl , которые предоставляют приложениям больше информации о возможных временных рамках кадров и добавляют контекст в SurfaceFlinger относительно жизненного цикла кадра. Как и раньше, приложения могут отправлять обратный вызов в Choreographer и получать информацию о временных рамках кадров. В Android 13 (уровень API 33) Choreographer возвращает несколько возможных времен отображения и соответствующие им крайние сроки кадров. Приложения могут выбрать время отображения и впоследствии уведомить SurfaceFlinger о своем выборе. После этого SurfaceFlinger не пытается применять транзакции или блокировать буферы до желаемого времени отображения.

Камера
Запись HDR-видео
Начиная с Android 13, API Camera2 поддерживают захват видео с расширенным динамическим диапазоном (HDR), что позволяет просматривать и записывать HDR-видеоконтент с помощью камеры. По сравнению со стандартным динамическим диапазоном (SDR), HDR предлагает более широкий диапазон цветов и увеличивает динамический диапазон компонента яркости (с текущих 100 кд/м² до тысяч кд/м²). Это приводит к качеству видео, более точно соответствующему реальной жизни, с более насыщенными цветами, более яркими бликами и более темными тенями.
Чтобы узнать больше о захвате HDR-видео, ознакомьтесь с документацией по захвату HDR-видео .
СМИ
Пространственный звук
Пространственное аудио — это эффект полного погружения в звук, который делает медиаконтент более реалистичным для ваших пользователей. Подробную информацию об интеграции с этой функцией см. в нашей документации по пространственному аудио .
Предварительная маршрутизация звука
Чтобы помочь медиаприложениям определить, как будет передаваться их аудиопоток, Android 13 вводит API маршрутизации аудио в классе AudioManager . API getAudioDevicesForAttributes() позволяет получить список устройств, которые могут быть использованы для воспроизведения указанного аудио, а API getDirectProfilesForAttributes() помогает понять, можно ли воспроизвести ваш аудиопоток напрямую. Используйте эти API, чтобы определить наилучший AudioFormat для вашей звуковой дорожки.
Доступность
Аудиоописание
В Android 13 (уровень API 33) появилась новая общесистемная настройка специальных возможностей, позволяющая пользователям включать аудиоописание во всех приложениях. Аудиоописание — это дополнительная звуковая дорожка, состоящая из голоса диктора, описывающего происходящее на экране во время естественных пауз в аудио. Приложения могут отслеживать предпочтения пользователя относительно звуковых дорожек, запрашивая их с помощью isAudioDescriptionRequested() , как показано в следующем фрагменте кода:
Котлин
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
Приложения могут отслеживать изменения пользовательских предпочтений, добавив слушатель в AccessbilityManager :
Котлин
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
Основная функциональность
Обновления OpenJDK 11
В Android 13 начинается работа по обновлению основных библиотек Android в соответствии с релизом OpenJDK 11 LTS, включая как обновления библиотек, так и поддержку языка Java 11 для разработчиков приложений и платформ. Изменения в основных библиотеках, представленные в Android 13, также будут доступны для устройств Android 12 через системное обновление Google Play до модуля ART Mainline.
В Android 13 внесены следующие изменения в основные библиотеки:
- Поддержка ключевого слова
varдля локальных переменных и в качестве параметров лямбда-выражений. Новые методы в классе String:
-
isBlank() -
lines() -
repeat() -
strip() -
stripLeading() -
stripTrailing()
-
Добавлена поддержка метода
Collection.toArray(IntFunction), упрощающая адаптацию коллекции к массиву.Поддержка методов
ifPresentOrElse(),isEmpty(),orElseThrow()иstream()в классахOptional,OptionalDouble,OptionalIntиOptionalLongjava.util.Расширена поддержка
SocketOptions, включая повторное использование сокетов.Функции
ReaderNullReader,NullWriter,InputStream,OutputStreamиtransferTo()передают прочитанные символы в объектWriter.Добавлена функциональность для кодирования и декодирования URL-адресов с использованием
Charsets.Функциональность
CharsetдляFileReader,FileWriter,PrintStreamиPrintWriter.Добавлены новые функции
transferTo(),readNBytes(),readAllBytes()иwriteBytes()дляByteArrayInputилиOutputStreamиInputилиOutputStream.Поддержка
java.lang.invoke.VarHandleво время выполнения и компиляции.Обновляет
java.util.concurrentдо API OpenJDK 11, используя внутреннийVarHandle.
Java и OpenJDK являются товарными знаками или зарегистрированными товарными знаками Oracle и/или ее дочерних компаний.