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

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

Во многих случаях многоязычные пользователи устанавливают свой системный язык на один язык, например английский, но хотят выбрать другие языки для определенных приложений, например голландский, китайский или хинди. Чтобы помочь приложениям обеспечить лучший опыт для этих пользователей, Android 13 представляет следующие функции для приложений, которые поддерживают несколько языков:
Системные настройки : централизованное место, где пользователи могут выбрать предпочитаемый язык для каждого приложения.
Ваше приложение должно объявить атрибут
android:localeConfig
в манифесте вашего приложения, чтобы сообщить системе, что оно поддерживает несколько языков. Чтобы узнать больше, см. инструкции по созданию файла ресурсов и объявлению его в файле манифеста вашего приложения .Дополнительные API : эти общедоступные API, такие как методы
setApplicationLocales()
иgetApplicationLocales()
вLocaleManager
, позволяют приложениям устанавливать язык, отличный от языка системы, во время выполнения.Эти API автоматически синхронизируются с системными настройками; поэтому приложения, которые используют эти API для создания пользовательских языков в приложениях, обеспечат своим пользователям единообразный пользовательский опыт независимо от того, где они выбирают свои языковые предпочтения. Публичные API также помогают вам сократить объем шаблонного кода, они поддерживают разделенные APK и поддерживают Auto Backup for Apps для хранения языковых настроек пользователя на уровне приложения.
Для обратной совместимости с предыдущими версиями 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 может переносить текст по Bunsetsu (наименьшая единица слов, которая звучит естественно) или фразам, а не по символам, для более отточенных и читаемых японских приложений. Вы можете воспользоваться этим переносом, используя android:lineBreakWordStyle="phrase"
с TextViews.

Обновления библиотеки Unicode
В Android 13 добавлены последние улучшения, исправления и изменения, включенные в Unicode ICU 70 , Unicode CLDR 40 и Unicode 14.0 .
Вот несколько заметных изменений:
- Английский (Канада)
en‑CA
и английский (Республика Филиппины)en‑PH
используют ресурсы перевода английский (США)en
, когда доступные ресурсы перевода отсутствуют, вместо английского (Соединенное Королевство)en‑GB
. - Категория
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-аудио с низким энергопотреблением
Low Energy (LE) Audio — это беспроводное аудио, созданное для замены Bluetooth classic и позволяющее использовать определенные варианты использования и топологии подключения. Оно позволяет пользователям делиться и транслировать свое аудио друзьям и семье или подписываться на публичные трансляции для получения информации, развлечений или доступности. Оно разработано для того, чтобы пользователи могли получать высококачественный звук без ущерба для времени работы батареи и могли легко переключаться между различными вариантами использования, которые невозможны с Bluetooth Classic. Начиная с Android 13, система включает встроенную поддержку LE Audio, поэтому разработчики получают эти возможности бесплатно на совместимых устройствах.
МИДИ 2.0
Начиная с Android 13, система включает поддержку стандарта MIDI 2.0, включая возможность подключения оборудования MIDI 2.0 через USB. Этот стандарт предлагает такие функции, как повышенное разрешение для контроллеров, улучшенную поддержку не-западной интонации и более выразительное исполнение с использованием контроллеров для каждой ноты.
Повышение эффективности заставки
Android 13 повышает эффективность анимированных заставок в API заставки:
Система выводит длительность анимации непосредственно из
AnimatedVectorDrawable
. До Android 13 приходилось устанавливатьwindowSplashScreenAnimationDuration
напрямую.Используйте новый атрибут
windowSplashScreenBehavior
для большего контроля над тем, будет ли ваше приложение всегда отображать значок на заставке в Android 13 и более поздних версиях.
Подробную документацию см. в разделе Заставки .
Оптимизации АРТ
В 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 Signature Scheme v3.1, которая улучшает существующую APK Signature Scheme v3 . Эта схема решает некоторые известные проблемы APK Signature Scheme v3 относительно ротации. В частности, схема подписи v3.1 поддерживает таргетинг версии SDK, что позволяет ротировать для таргетинга на более поздний выпуск платформы.
Схема подписи v3.1 использует идентификатор блока, который не распознается на 12L или ниже. Поэтому платформа применяет следующее поведение подписчика:
- Устройства под управлением Android 13 и выше используют измененный подписывающий элемент в блоке v3.1.
- Устройства, работающие под управлением старых версий Android, игнорируют измененный подписант и вместо этого используют исходный подписант в блоке v3.0.
Приложения, которые еще не ротировали свой ключ подписи, не требуют никаких дополнительных действий. Всякий раз, когда эти приложения решают ротировать, система по умолчанию применяет схему подписи v3.1.
Приложения, которые уже выполнили ротацию и хотят продолжить использовать свой ротированный ключ подписи в блоке подписи v3.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 Graphics Shading Language ( AGSL ). AGSL во многом разделяет синтаксис с GLSL, но работает в движке рендеринга Android для настройки рисования на холсте Android, а также фильтрации содержимого View. Android внутренне использует эти шейдеры для реализации эффектов ряби , размытия и растяжения overscroll . Android 13 и выше позволяют вам создавать подобные расширенные эффекты для вашего приложения.
Улучшения хореографа
Android 13 представляет публичные методы API для Choreographer
и ASurfaceControl
, которые предоставляют приложениям больше информации о возможных временных шкалах кадров и добавляют больше контекста в SurfaceFlinger
о жизненном цикле кадров. Как и прежде, приложения могут отправлять обратный вызов в Choreographer
и получать информацию о временной шкале кадров. В Android 13 (уровень API 33) Choreographer
возвращает несколько возможных времен представления и соответствующие им крайние сроки представления кадров. Приложения могут выбирать время представления и впоследствии уведомлять SurfaceFlinger
о выборе. Затем SurfaceFlinger
не пытается применять транзакции или защелкивать буферы до желаемого времени представления.

Камера
HDR-видеозахват
Начиная с Android 13, API Camera2 поддерживают захват видео в формате High Dynamic Range (HDR), что позволяет вам просматривать и записывать видеоконтент HDR с помощью вашей камеры. По сравнению со стандартным динамическим диапазоном (SDR), HDR предлагает более широкий диапазон цветов и увеличивает динамический диапазон компонента яркости (с текущих 100 кд/м2 до 1000 кд/м2). Это приводит к качеству видео, которое больше соответствует реальной жизни, с более насыщенными цветами, более яркими бликами и более темными тенями.
Дополнительную информацию о захвате 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 }
Ява
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) }
Ява
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 Module.
Android 13 включает следующие изменения в основных библиотеках:
- Поддержка ключевого слова
var
для локальных переменных и лямбда-выражений в качестве параметров. Новые методы в классе String:
-
isBlank()
-
lines()
-
repeat()
-
strip()
-
stripLeading()
-
stripTrailing()
-
Поддержка
Collection.toArray(IntFunction)
для упрощения адаптации коллекции к массиву.Поддержка
ifPresentOrElse()
,isEmpty()
,orElseThrow()
иstream()
в классахjava.util
Optional
,OptionalDouble
,OptionalInt
иOptionalLong
.Расширенная поддержка
SocketOptions
, включая повторное использование сокетов.NullReader
,NullWriter
,InputStream
,OutputStream
иtransferTo()
— функциональные возможностиReader
, которые передают прочитанные символы в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 и/или ее дочерних компаний.