Как и в предыдущих версиях, Android 17 включает изменения в поведении, которые могут повлиять на ваше приложение. Следующие изменения в поведении применяются исключительно к приложениям, ориентированным на Android 17 или более поздние версии. Если ваше приложение ориентировано на Android 17 или более поздние версии, вам следует внести в него изменения для поддержки этих изменений, где это применимо.
Обязательно ознакомьтесь также со списком изменений в поведении, которые затрагивают все приложения, работающие на Android 17, независимо от targetSdkVersion вашего приложения.
Основная функциональность
В Android 17 внесены следующие изменения, которые модифицируют или расширяют различные основные возможности системы Android.
Новая реализация MessageQueue без блокировок
Начиная с Android 17, приложения, ориентированные на Android 17 и выше, получают новую реализацию android.os.MessageQueue без блокировок. Новая реализация повышает производительность и уменьшает количество пропущенных кадров, но может привести к сбоям в работе клиентов, использующих закрытые поля и методы MessageQueue .
Для получения дополнительной информации, включая стратегии смягчения последствий, см. руководство по изменению поведения в MessageQueue .
Доступность
В Android 17 внесены следующие изменения для улучшения доступности.
Поддержка доступности при вводе текста с физической клавиатуры с использованием сложных IME.
Эта функция представляет новые API AccessibilityEvent и TextAttribute для улучшения голосовой обратной связи программ чтения с экрана при вводе текста на языке CJKV. Приложения CJKV IME теперь могут сигнализировать о том, был ли выбран вариант преобразования текста во время ввода текста. Приложения с полями редактирования могут указывать типы изменений текста при отправке событий доступности, связанных с изменением текста. Например, приложения могут указать, что изменение текста произошло во время ввода текста или что изменение текста произошло в результате фиксации изменений. Это позволяет службам доступности, таким как программы чтения с экрана, предоставлять более точную обратную связь в зависимости от характера изменения текста.
внедрение приложений
Приложения IME: При установке текста для ввода в поля редактирования IME могут использовать
TextAttribute.Builder.setTextSuggestionSelected()чтобы указать, был ли выбран конкретный кандидат на конверсию.Приложения с полями редактирования: Приложения, использующие пользовательский
InputConnectionмогут получать данные о выбранных вариантах, вызываяTextAttribute.isTextSuggestionSelected(). Затем этим приложениям следует вызыватьAccessibilityEvent.setTextChangeTypes()при отправке событийTYPE_VIEW_TEXT_CHANGED. Приложения, ориентированные на Android 17 и использующие стандартныйTextViewбудут иметь эту функцию включенной по умолчанию. (То есть,TextViewбудет обрабатывать получение данных из IME и устанавливать типы изменения текста при отправке событий в службы специальных возможностей).Службы доступности: Службы доступности, обрабатывающие события
TYPE_VIEW_TEXT_CHANGEDмогут вызывать методAccessibilityEvent.getTextChangeTypes()для определения характера изменения и соответствующей корректировки своих стратегий обратной связи.
Безопасность
В Android 17 внесены следующие улучшения в безопасность устройств и приложений.
Безопасность деятельности
В Android 17 платформа продолжает переход к архитектуре «безопасность по умолчанию», внедряя ряд улучшений, призванных смягчить последствия серьезных атак, таких как фишинг, перехват взаимодействия и атаки с использованием «запутанного заместителя». Это обновление требует от разработчиков явного согласия на использование новых стандартов безопасности для обеспечения совместимости приложений и защиты пользователей.
К основным последствиям для разработчиков относятся:
- Усиление защиты BAL и улучшенная возможность включения: Мы совершенствуем ограничения на запуск фоновых действий (BAL), распространяя защиту на
IntentSender. Разработчикам необходимо отказаться от устаревшей константыMODE_BACKGROUND_ACTIVITY_START_ALLOWED. Вместо этого следует использовать более детальные средства контроля, такие какMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, которые ограничивают запуск действий сценариями, когда вызывающее приложение видимо, что значительно уменьшает поверхность атаки. - Инструменты внедрения: Разработчикам следует использовать строгий режим и обновленные проверки синтаксиса для выявления устаревших шаблонов и обеспечения готовности к будущим требованиям целевого SDK.
Защита локального хоста
Для повышения безопасности платформы и конфиденциальности пользователей в Android 17 введено новое разрешение, устанавливаемое во время установки, — USE_LOOPBACK_INTERFACE . Это изменение ограничивает обмен данными между приложениями и профилями через интерфейс обратной связи (например, 127.0.0.1 или ::1 ), который ранее неявно разрешался с помощью разрешения INTERNET . Для приложений, ориентированных на Android 17 и выше, действуют следующие правила:
- Требуется взаимное согласие: межприложениевая и межпрофильная связь теперь по умолчанию заблокирована. Для успешного установления соединения как отправляющее, так и принимающее приложение должны явно указать разрешение
USE_LOOPBACK_INTERFACEв своих манифестах. - Исключение для внутриприложенийного трафика: обмен данными по протоколу Loopback внутри одного приложения ( внутриприложенийная связь) остается без изменений и не требует этого нового разрешения.
- Поведение целевого SDK:
- Приложение предназначено для Android 17 и выше: разрешение должно быть запрошено явно. Если оно отсутствует, операции с сокетами (такие как подключение по TCP или отправка по UDP) завершаются с ошибкой
EPERM(операция не разрешена). - Приложение ориентировано на API уровня 36 или ниже: разрешение рассматривается как раздельное разрешение для
INTERNET. Приложениям, ориентированным на более низкие уровни API, это разрешение предоставляется автоматически, если они имеют доступINTERNET.
- Приложение предназначено для Android 17 и выше: разрешение должно быть запрошено явно. Если оно отсутствует, операции с сокетами (такие как подключение по TCP или отправка по UDP) завершаются с ошибкой
- Предупреждение о совместимости: если принимающее приложение обновляет целевую платформу до Android 17, но не запрашивает это разрешение, входящие соединения от других приложений будут отклонены, даже если отправляющее приложение использует более низкий уровень API.
Включить КТ по умолчанию
Если приложение ориентировано на Android 17 или более позднюю версию, прозрачность сертификатов (CT) включена по умолчанию. (На Android 16 CT доступна, но приложениям приходилось включать её вручную .)
Более безопасный коренной DCL—C
Если ваше приложение ориентировано на Android 17 или выше, то защита Safer Dynamic Code Loading (DCL), представленная в Android 14 для файлов DEX и JAR, теперь распространяется и на нативные библиотеки.
Все файлы, загружаемые с помощью System.load() должны быть помечены как доступные только для чтения. В противном случае система выдаст UnsatisfiedLinkError .
Мы рекомендуем приложениям по возможности избегать динамической загрузки кода, поскольку это значительно увеличивает риск взлома приложения путем внедрения или изменения кода.
форм-факторы устройств
В Android 17 внесены следующие изменения для улучшения пользовательского опыта на устройствах различных размеров и форм-факторов.
Изменения в API платформы позволяют игнорировать ограничения по ориентации, масштабируемости и соотношению сторон на больших экранах (sw>=600dp).
В Android 16 мы внесли изменения в Platform API, позволяющие игнорировать ограничения по ориентации, соотношению сторон и масштабируемости на больших экранах (sw >= 600dp) для приложений, ориентированных на API уровня 36 или выше. Разработчики могут отказаться от этих изменений в SDK 36, но эта возможность больше не будет доступна для приложений, ориентированных на Android 17 или выше.
Для получения дополнительной информации см. раздел «Ограничения на ориентацию и изменение размера игнорируются» .