В Android 13 появились новые функции и API для разработчиков. В разделах ниже вы найдете информацию о функциях для приложений и о том, как начать работу с соответствующими API.
Подробный список новых, измененных и удаленных API можно найти в отчете о различиях API. Подробную информацию о новых API можно найти в документации по Android API. Новые API выделены для удобства. Чтобы узнать, как изменения платформы могут повлиять на ваши приложения, ознакомьтесь с изменениями в поведении Android 13 для приложений, предназначенных для Android 13, и для всех приложений.
Продуктивность разработчиков и инструменты
Тематические значки приложений
Начиная с Android 13, вы можете включить тематические значки приложений. При этом значки приложений в поддерживаемых лаунчерах Android окрашиваются в цвета обоев и других тем, выбранных пользователем.
Чтобы поддерживать эту функцию, в приложении должен быть адаптивный значок приложения и монохромный значок приложения, а также ссылка на монохромный значок приложения из элемента <adaptive-icon> в манифесте. Если пользователь включил тематические значки приложений (то есть активировал переключатель Тематические значки в системных настройках) и лаунчер поддерживает эту функцию, система использует цвета выбранных пользователем обоев и темы, чтобы определить оттенок, который затем применяется к монохромному значку приложения.
Тематический значок приложения НЕ будет показываться на главном экране (вместо него будет использоваться адаптивный или стандартный значок) в следующих случаях:
- Если пользователь не включил тематические значки приложений
- Если в приложении нет одноцветного значка приложения
- Если лаунчер не поддерживает тематические значки приложений
Подробнее об адаптивных значках…
Языковые настройки для отдельных приложений
Часто пользователи, говорящие на нескольких языках, устанавливают один из них, например английский, как системный, но в некоторых приложениях хотят выбрать другой язык (нидерландский, китайский, хинди и т. п.). Чтобы приложения были удобнее для таких пользователей, в Android 13 появились следующие функции:
Системные настройки. Централизованный раздел, в котором пользователи могут выбрать предпочитаемый язык для каждого приложения.
Чтобы сообщить системе, что приложение поддерживает несколько языков, в его манифесте необходимо объявить атрибут
android:localeConfig. Подробнее о том, как создать файл ресурсов и объявить его в файле манифеста приложения…Дополнительные API. Эти общедоступные API, например методы
setApplicationLocales()иgetApplicationLocales()вLocaleManager, позволяют приложениям устанавливать язык, отличный от системного, во время выполнения.Эти 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" с TextView.
Обновления библиотеки 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 Developers
- Добавление цветных векторных шрифтов COLRv1 в Chrome (видео)
- Спецификация таблицы COLR
API для размещения быстрых настроек
Быстрые настройки на панели уведомлений позволяют пользователям менять настройки и выполнять действия, не выходя из приложения. Мы упростили поиск и добавление специальных элементов в быстрые настройки. Благодаря новому API размещения параметров приложение может предлагать пользователю добавить параметр быстрых настроек в набор активных. Новое системное диалоговое окно позволяет пользователю добавить плитку за один шаг, не выходя из приложения, вместо того, чтобы переходить в быстрые настройки для добавления плитки.

Предпросмотр буфера обмена
Начиная с Android 13, при добавлении контента в буфер обмена система показывает стандартное визуальное подтверждение. Новое подтверждение:
- Подтверждает, что контент был успешно скопирован.
- Показывает предварительный просмотр скопированного контента.
Эта функция стандартизирует различные уведомления, показываемые приложениями после копирования, и предлагает пользователям больше контроля над буфером обмена. Дополнительную информацию можно найти на странице, посвященной функции копирования и вставки.
Предпросмотр для жеста "Назад"
В Android 13 появился предпросмотр для жеста "Назад" на устройствах Android, например телефонах, складных устройствах и устройствах с большим экраном. Чтобы поддерживать эту функцию, вам нужно обновить приложение.
Подробную информацию вы найдете в статье Обновление приложения с добавлением поддержки предпросмотра для жеста "Назад". Вы также можете выполнить практическую работу.
Bluetooth LE Audio
LE Audio – это беспроводная технология передачи аудио, которая должна заменить классический Bluetooth и обеспечить поддержку определенных сценариев использования и топологий подключения. Она позволяет пользователям делиться аудио с друзьями и семьей, а также подписываться на общедоступные трансляции для получения информации, развлечения или специальных возможностей. Она позволяет пользователям слушать аудио высокого качества, не беспокоясь о заряде батареи, и легко переключаться между разными сценариями использования, которые не поддерживаются в Bluetooth Classic. Начиная с Android 13, в систему встроена поддержка LE Audio, поэтому разработчики получают эти возможности бесплатно на совместимых устройствах.
MIDI 2.0
Начиная с Android 13, система включает поддержку стандарта MIDI 2.0, включая возможность подключения оборудования MIDI 2.0 через USB. Этот стандарт предлагает такие функции, как повышенное разрешение для контроллеров, улучшенная поддержка неевропейской интонации и более выразительное исполнение с использованием контроллеров для каждой ноты.
Повышение эффективности заставок
В Android 13 повышена эффективность анимированных заставок в SplashScreen API:
Система определяет длительность анимации непосредственно из
AnimatedVectorDrawable. В версиях до Android 13 нужно было задаватьwindowSplashScreenAnimationDurationнапрямую.Используйте новый атрибут
windowSplashScreenBehavior, чтобы управлять показом значка приложения на заставке в Android 13 и более поздних версиях.
Подробную информацию вы найдете в статье Заставки.
Оптимизация ART
В Android 13 (уровень API 33) и более поздних версиях ART ускоряет переключение на нативный код и обратно, а вызовы JNI выполняются до 2, 5 раза быстрее. Обработка ссылок во время выполнения также была переработана, чтобы сделать ее в основном неблокирующей, что еще больше снижает задержки. Кроме того, вы можете использовать общедоступный API Reference.refersTo(), чтобы быстрее восстанавливать недоступные объекты. Интерпретатор теперь работает быстрее благодаря оптимизированному поиску классов и методов. Кроме того, ART выполняет больше проверок байт-кода во время установки, что позволяет избежать затрат на проверку во время выполнения и ускорить запуск приложений.
Конфиденциальность и безопасность
Безопасный экспорт приемников, зарегистрированных в контексте
Чтобы повысить безопасность приемников, в Android 13 добавлена возможность указывать, должен ли зарегистрированный широковещательный приемник быть экспортирован и виден другим приложениям на устройстве. В предыдущих версиях Android любое приложение на устройстве могло отправить незащищенную трансляцию динамически зарегистрированному получателю, если он не был защищен разрешением на подпись.
Эта конфигурация экспорта доступна для приложений, которые выполняют хотя бы одно из следующих действий:
- Используйте класс
ContextCompatиз библиотеки AndroidX Core версии 1.9.0 или более поздней. - Ориентируйтесь на Android 13 или более поздней версии.
Выбор фотографий
В Android 13 (уровень API 33) и более поздних версиях есть окно выбора фотографий. Когда приложение запускает окно выбора фотографий, пользователи могут выбрать определенные изображения и видео, например фото профиля, и предоставить приложению доступ только к ним, а не ко всей медиатеке. Это рекомендуемый способ доступа к фотографиям и видео пользователя.
Инструмент выбора фотографий обеспечивает повышенную конфиденциальность пользователей, поскольку вашему приложению не нужно объявлять динамические разрешения. Кроме того, в инструменте выбора фотографий есть встроенный стандартизированный интерфейс для приложений, который делает работу с ними более удобной.
Новое динамическое разрешение для устройств Wi-Fi поблизости
В Android 13 (уровень API 33) появилось новое динамическое разрешение в группе разрешений NEARBY_DEVICES для приложений, которые управляют подключениями устройства к ближайшим точкам доступа по Wi-Fi. В таких приложениях необходимо объявить новое разрешение NEARBY_WIFI_DEVICES при вызове нескольких разных API Wi-Fi.
Кроме того, если приложения не определяют физическое местоположение с помощью Wi-Fi API, им не нужно запрашивать разрешение ACCESS_FINE_LOCATION при использовании Android 13 или более поздней версии.
Подробнее о разрешении на поиск устройств Wi-Fi поблизости…
Новое разрешение на использование функции выполнения операций в точное время
Если ваше приложение предназначено для Android 13 или более поздней версии, вы можете использовать разрешение USE_EXACT_ALARM, которое предоставляется автоматически. Однако для этого приложение должно соответствовать хотя бы одному из следующих критериев:
- Приложение выполняет функции будильника или таймера.
- Приложение выполняет функции календаря с уведомлениями о предстоящих событиях.
Если ваше приложение выполняет операции в точное время, но не соответствует ни одному из описанных выше случаев, продолжайте запрашивать разрешение SCHEDULE_EXACT_ALARM и будьте готовы к тому, что пользователь может запретить доступ.
Разрешения, назначаемые разработчиком
Начиная с Android 13 приложение может отзывать доступ к неиспользуемым динамическим разрешениям. Этот API позволяет вашему приложению выполнять задачи, повышающие конфиденциальность, например:
- Удалите неиспользуемые разрешения.
- Соблюдайте рекомендации по работе с разрешениями, чтобы повысить доверие пользователей. Вы можете показать пользователям диалоговое окно со списком разрешений, которые вы упреждающе отозвали.
Схема подписи APK версии 3.1
В Android 13 добавлена поддержка схемы подписания APK версии 3.1, которая является улучшенной версией схемы подписания APK версии 3. Она устраняет некоторые известные проблемы со сменой ключей, которые возникали при использовании схемы подписания APK версии 3. В частности, схема подписи версии 3.1 поддерживает таргетинг на версию SDK, что позволяет использовать ротацию для более поздних версий платформы.
В схеме подписи версии 3.1 используется идентификатор блока, который не распознается в 12L и более ранних версиях. Поэтому платформа применяет следующее поведение подписывающего лица:
- Устройства с Android 13 или более поздней версией используют ротированный ключ подписи в блоке v3.1.
- Устройства с более ранними версиями Android игнорируют ротированный ключ и используют исходный ключ в блоке версии 3.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, поведение которых определяется с помощью языка AGSL (Android Graphics Shading Language). Синтаксис AGSL во многом совпадает с GLSL, но AGSL работает в движке рендеринга Android, чтобы настраивать рисование на холсте Android и фильтрацию контента View.
Android использует эти шейдеры для реализации эффекта ряби, размытия и эффекта достижения конца прокрутки.
В Android 13 и более поздних версиях вы можете создавать похожие эффекты для своего приложения.
Улучшения в Choreographer
В Android 13 появились общедоступные методы API для Choreographer и ASurfaceControl, которые предоставляют приложениям больше информации о возможных временных шкалах кадров и добавляют больше контекста в SurfaceFlinger о жизненном цикле кадров. Как и раньше, приложения могут отправлять обратный вызов в Choreographer и получать информацию о временной шкале кадров. В Android 13 (уровень API 33) Choreographer возвращает несколько возможных значений времени показа и соответствующие им сроки кадров. Приложения могут выбирать время показа и затем уведомлять SurfaceFlinger о своем выборе. SurfaceFlinger не пытается применить транзакции или зафиксировать буферы до желаемого времени показа.
Камера
Запись видео в формате HDR
Начиная с Android 13 Camera2 API поддерживает съемку видео в расширенном динамическом диапазоне (HDR). Это позволяет просматривать и записывать видеоконтент HDR с помощью камеры. По сравнению со стандартным динамическим диапазоном (SDR) HDR предлагает более широкий диапазон цветов и увеличивает динамический диапазон компонента яркости (с текущих 100 кд/м2 до 1000 кд/м2). Это позволяет получить более реалистичное качество видео с насыщенными цветами, яркими светлыми участками и глубокими тенями.
Подробнее о записи видео в формате HDR…
Мультимедиа
Пространственное звучание
Пространственное звучание – это технология, которая позволяет сделать звук более реалистичным. Подробную информацию об интеграции с этой функцией можно найти в документации по пространственному звучанию.
Упреждающая маршрутизация аудио
Чтобы мультимедийные приложения могли определять, как будет направляться их аудио, в Android 13 добавлены API маршрутизации аудио в классе AudioManager. API getAudioDevicesForAttributes() позволяет получить список устройств, которые можно использовать для воспроизведения указанного аудио, а API getDirectProfilesForAttributes() помогает понять, можно ли воспроизвести аудиопоток напрямую. Используйте эти API, чтобы определить, какой AudioFormat лучше всего подходит для вашей аудиодорожки.
Специальные возможности
Аудиодескрипция
В Android 13 (уровень API 33) появилась новая настройка специальных возможностей, которая позволяет включить аудиодескрипцию во всех приложениях. Аудиодескрипция – это дополнительная звуковая дорожка, на которой диктор описывает происходящее на экране во время пауз в речи.
Приложения могут следовать настройкам пользователя в отношении аудиосопровождения, запрашивая их с помощью isAudioDescriptionRequested(), как показано в следующем фрагменте кода:
Kotlin
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:
Kotlin
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()в классахjava.utilOptional,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до OpenJDK 11 API с помощьюVarHandle.
Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.