Изменения в системе совместимости (Android 16)

Рисунок 1. На экране «Изменения совместимости приложений» в параметрах разработчика перечислены изменения, которые можно включить.

На этой странице описаны отключаемые изменения, являющиеся частью фреймворка совместимости в Android 16 (уровень API 36). Используйте этот список вместе с параметрами разработчика и командами ADB для тестирования и отладки вашего приложения в процессе подготовки к поддержке и переходу на Android 16.

Вот некоторые из действий, которые можно выполнить с помощью инструментов фреймворка совместимости:

  • Тестируйте целевые изменения, не изменяя targetSdkVersion приложения . Вы можете использовать переключатели для принудительного включения определённых целевых изменений поведения, чтобы оценить их влияние на ваше текущее приложение.
  • Сосредоточьте тестирование только на конкретных изменениях . Вместо того, чтобы обрабатывать все целевые изменения сразу, переключатели позволяют отключить все целевые изменения, кроме тех, которые вы хотите протестировать.
  • Управление переключателями через adb . Вы можете использовать команды adb для включения и отключения переключаемых изменений в автоматизированной тестовой среде.
  • Ускоряйте отладку, используя стандартные идентификаторы изменений . Каждое из переключаемых изменений имеет уникальный идентификатор и имя, которые можно использовать для быстрого поиска первопричины в журнале.

Полную информацию об использовании инструментов для каждого из этих вариантов использования см. в разделе Инструменты фреймворка совместимости .

Изменения поведения, включенные в структуру совместимости

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

Вы можете отфильтровать список изменений по их состоянию по умолчанию .

Переключаемые изменения в структуре совместимости в Android 16

CAMERA_MIC_INDICATORS_NOT_PRESENT

Идентификатор изменения: 162547999
Состояние по умолчанию : отключено для всех приложений.

Указывает, что это устройство поддерживает индикаторы камеры и микрофона. Значение false , если оно присутствует, поскольку метод CompatChanges#isChangeEnabled возвращает true если идентификатор изменения отсутствует.

DOWNSCALED

Идентификатор изменения: 168419799
Состояние по умолчанию : отключено для всех приложений.

Это изменение является гарантией всех изменений в уменьшении размера буфера для каждого приложения. Включение этого изменения позволяет применять следующие коэффициенты масштабирования:

При включении этого изменения для пакета приложения размер приложения принудительно изменяется до максимального разрешенного коэффициента масштабирования. Например, если включены оба значения (80% и 70% ( DOWNSCALE_80 и DOWNSCALE_70 )), используется значение 80%. Если включены и это изменение, и DOWNSCALED_INVERSE , приоритет имеет DOWNSCALED_INVERSE , а коэффициент масштабирования применяется обратно пропорционально.

DOWNSCALED_INVERSE

Изменить ID: 273564678
Состояние по умолчанию : отключено для всех приложений.

Это изменение является гарантией всех изменений обратного уменьшения масштаба буфера для каждого приложения. Включение этого изменения позволяет применять следующие коэффициенты масштабирования в обратном порядке (то есть вместо этого увеличивать разрешение):

При включении этого изменения для пакета приложения размер приложения принудительно изменяется до минимально допустимого коэффициента масштабирования. Например, если включены оба коэффициента ( DOWNSCALE_80 и DOWNSCALE_70 ), используется 80%, поскольку при обратном применении коэффициент масштабирования 80% равен 125%, что меньше, чем 142,86%, которые применяются при обратном применении коэффициента масштабирования 70%. Если включены и это изменение, и DOWNSCALED , приоритет имеет DOWNSCALED_INVERSE , и коэффициент масштабирования применяется обратно.

DOWNSCALE_30

Изменить ID: 189970040
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 30% от реального дисплея. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 333,33% от реального дисплея.

DOWNSCALE_35

Изменить ID: 189969749
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 35% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 285,71% от реального разрешения.

DOWNSCALE_40

Идентификатор изменения: 189970038
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 40% от реального дисплея. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 250% от реального дисплея.

DOWNSCALE_45

Изменить ID: 189969782
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 45% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 222,22% от реального разрешения.

DOWNSCALE_50

Идентификатор изменения: 176926741
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с 50% от вертикального и горизонтального разрешения реального дисплея. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с 200% от вертикального и горизонтального разрешения реального дисплея.

DOWNSCALE_55

Изменить ID: 189970036
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 55% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 181,82% от реального разрешения.

DOWNSCALE_60

Идентификатор изменения: 176926771
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 60% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 166,67% от реального разрешения.

DOWNSCALE_65

Изменить ID: 189969744
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 65% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 153,85% от реального разрешения.

DOWNSCALE_70

Идентификатор изменения: 176926829
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 70% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 142,86% от реального разрешения.

DOWNSCALE_75

Изменить ID: 189969779
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 75% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 133,33% от реального разрешения.

DOWNSCALE_80

Идентификатор изменения: 176926753
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 80% от реального дисплея. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 125% от реального дисплея.

DOWNSCALE_85

Изменить ID: 189969734
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 85% от реального разрешения. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением по вертикали и горизонтали, составляющим 117,65% от реального разрешения.

DOWNSCALE_90

Изменить ID: 182811243
Состояние по умолчанию : отключено для всех приложений.

Если также включен DOWNSCALED , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением 90% от реального экрана по вертикали и горизонтали. Если также включен DOWNSCALED_INVERSE , включение этого изменения для пакета заставит приложение предполагать, что оно работает на дисплее с разрешением 111,11% от реального экрана по вертикали и горизонтали.

ENFORCE_STRICT_QUERY_BUILDER

Изменить ID: 143231523
Состояние по умолчанию : отключено для всех приложений.

При включении SQLiteQueryBuilder проверяет все выборки запросов CalendarProvider2 на наличие вредоносных аргументов.

FORCE_DISABLE_HEVC_SUPPORT

Идентификатор изменения: 174227820
Состояние по умолчанию : отключено для всех приложений.

Принудительно отключите поддержку HEVC в приложении. Приложения должны указывать поддерживаемые возможности HEVC в манифесте, но этот флаг можно использовать, чтобы заставить приложение не поддерживать HEVC, тем самым принудительно перекодируя медиаданные, закодированные в HEVC. Установка этого флага переопределяет любые значения по умолчанию на уровне ОС для приложений. По умолчанию он отключен, то есть приоритет имеют значения по умолчанию ОС. Если включены и этот флаг, и FORCE_ENABLE_HEVC_SUPPORT , ОС игнорирует оба флага.

FORCE_ENABLE_HEVC_SUPPORT

Изменить ID: 174228127
Состояние по умолчанию : отключено для всех приложений.

Принудительно включить поддержку HEVC в приложении. Приложения должны декларировать поддерживаемые возможности HEVC в манифесте, но этот флаг можно использовать, чтобы принудительно включить поддержку HEVC в приложении, тем самым избегая перекодирования при доступе к медиаконтенту, закодированному в HEVC. Установка этого флага переопределяет любые значения по умолчанию на уровне ОС для приложений. По умолчанию он отключен, то есть приоритет имеют значения по умолчанию ОС. Если включены и этот флаг, и FORCE_DISABLE_HEVC_SUPPORT , ОС игнорирует оба флага.

FORCE_NON_RESIZE_APP

Идентификатор изменения: 181146395
Состояние по умолчанию : отключено для всех приложений.

Принудительно делает пакеты, к которым применяется, неизменяемыми по размеру.

FORCE_RESIZE_APP

Идентификатор изменения: 174042936
Состояние по умолчанию : отключено для всех приложений.

Принудительно делает пакеты, к которым применяется, изменяемыми по размеру. Мы допускаем изменение размера только в полноэкранном оконном режиме, но не принудительно переводим приложение в многооконный режим с возможностью изменения размера.

GWP_ASAN

Идентификатор изменения: 145634846
Состояние по умолчанию : отключено для всех приложений.

Позволяет обнаруживать ошибки выборочной памяти в приложениях.

Более подробную информацию об использовании GWP-ASan см. в руководстве GWP-ASan .

NATIVE_HEAP_ZERO_INIT

Изменить ID: 178038272
Состояние по умолчанию : отключено для всех приложений.

Включить автоматическую нулевую инициализацию выделенной памяти кучи.

NATIVE_MEMTAG_ASYNC

Идентификатор изменения: 145772972
Состояние по умолчанию : отключено для всех приложений.

Включить асинхронную (ASYNC) проверку тегов памяти в этом процессе. Этот флаг влияет только на оборудование, поддерживающее расширение тегирования памяти ARM (MTE).

NATIVE_MEMTAG_SYNC

Изменить ID: 177438394
Состояние по умолчанию : отключено для всех приложений.

Включает синхронную (SYNC) проверку тегов памяти в этом процессе. Этот флаг влияет только на оборудование, поддерживающее расширение тегирования памяти ARM (MTE). Если включены и NATIVE_MEMTAG_ASYNC , и этот параметр, приоритет имеет этот параметр, и MTE включается в режиме SYNC.

OVERRIDE_ANY_ORIENTATION

Изменить ID: 265464455
Состояние по умолчанию : отключено для всех приложений.

При включении это изменение позволяет применять следующие переопределения ориентации независимо от ориентации, запрошенной действием:

OVERRIDE_ANY_ORIENTATION_TO_USER

Идентификатор изменения: 310816437
Состояние по умолчанию : отключено для всех приложений.

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

OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT

Изменить идентификатор: 314961188
Состояние по умолчанию : отключено для всех приложений.

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

В режиме свободного оконного управления обработка совместимости эмулирует работу на портретном устройстве, разворачивая окно приложения в почтовый ящик и изменяя характеристики камеры на те, которые приложения обычно ожидают от портретного устройства: поворот сенсора на 90 и 270 градусов для задней и передней камер соответственно, а также устанавливая поворот дисплея на 0.

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

OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK

Изменить ID: 191514214
Состояние по умолчанию : отключено для всех приложений.

При включении этого изменения применяемые пакеты игнорируют текущее значение android:resizeableActivity , а также целевой SDK Android 6.0 или ниже (уровень API 23) и считают активность неизменяемой. В этом случае значение поворота камеры и кадрирования зависит только от необходимой компенсации с учётом текущего поворота экрана.

OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS

Идентификатор изменения: 189229956
Состояние по умолчанию : отключено для всех приложений.

При включении этого изменения пакеты, к которым оно применяется, переопределяют поведение поворота и обрезки камеры по умолчанию и всегда возвращают CaptureRequest.SCALER_ROTATE_AND_CROP_NONE .

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

Изменить идентификатор: 316897322
Состояние по умолчанию : отключено для всех приложений.

Если этот параметр включен, пользователям предоставляется возможность выбора между захватом одного приложения или всего экрана при запуске сеанса MediaProjection , что переопределяет использование MediaProjectionConfig#createConfigForDefaultDisplay .

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

Идентификатор изменения: 266124927
Состояние по умолчанию : отключено для всех приложений.

Включает SCREEN_ORIENTATION_REVERSE_LANDSCAPE для приложения, к которому он применяется. Если также не включено OVERRIDE_ANY_ORIENTATION , SCREEN_ORIENTATION_REVERSE_LANDSCAPE используется только тогда, когда действие указывает альбомную ориентацию. Включение этого изменения поможет вам протестировать поведение приложения на предмет различий между устройствами, где альбомная ориентация соответствует Surface.ROTATION_90 , и устройствами, где она соответствует Surface.ROTATION_270 .

OVERRIDE_LAYOUT_IN_DISPLAY_CUTOUT_MODE

Изменить ID: 332679525
Состояние по умолчанию : отключено для всех приложений.

При включении переопределяет поведение макета в режиме вырезания экрана. Применяется только в том случае, если не задано принудительное отображение от края до края.

OVERRIDE_MIN_ASPECT_RATIO

Идентификатор изменения: 174042980
Состояние по умолчанию : отключено для всех приложений.

Это изменение является контролёром всех изменений, устанавливающих заданное минимальное соотношение сторон. Включение этого изменения позволяет применять следующие минимальные соотношения сторон:

Если это изменение включено для пакета приложения, минимальное соотношение сторон, указанное в манифесте приложения, переопределяется наибольшим разрешенным соотношением сторон, если только значение манифеста приложения не выше.

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

Идентификатор изменения: 218959984
Состояние по умолчанию : отключено для всех приложений.

Если этот параметр включен, он отменяет ограничение минимального соотношения сторон в портретном полноэкранном режиме, чтобы использовать все доступное пространство экрана.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

Идентификатор изменения: 180326787
Состояние по умолчанию : отключено для всех приложений.

Если также включено OVERRIDE_MIN_ASPECT_RATIO , включение этого изменения для пакета устанавливает минимальное соотношение сторон действия на большое значение, как определено OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE .

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

Идентификатор изменения: 180326845
Состояние по умолчанию : отключено для всех приложений.

Если также включено OVERRIDE_MIN_ASPECT_RATIO , включение этого изменения для пакета устанавливает минимальное соотношение сторон действия к среднему значению, определенному OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE .

OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA

Изменить ID: 325586858
Состояние по умолчанию : отключено для всех приложений.

Если этот параметр включен, он ограничивает обработку, принудительно устанавливающую заданное минимальное соотношение сторон, так что она применяется только в том случае, если приложение подключено к камере.

OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY

Идентификатор изменения: 203647190
Состояние по умолчанию : включено для всех приложений.

Если также включено OVERRIDE_MIN_ASPECT_RATIO , это изменение ограничивает любые другие изменения, которые принудительно устанавливают минимальное соотношение сторон действия определенным значением, — например, OVERRIDE_MIN_ASPECT_RATIO_LARGE и OVERRIDE_MIN_ASPECT_RATIO_MEDIUM — для действий, которые также имеют портретную ориентацию.

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

Идентификатор изменения: 236283604
Состояние по умолчанию : отключено для всех приложений.

При включении это изменение исключает пакеты, к которым применяется игнорирование ограничений ориентации, которые могут устанавливать производители устройств.

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

Идентификатор изменения: 265451093
Состояние по умолчанию : отключено для всех приложений.

Включает SCREEN_ORIENTATION_NOSENSOR для приложения, к которому он применяется. Если также не включено OVERRIDE_ANY_ORIENTATION , SCREEN_ORIENTATION_NOSENSOR используется только тогда, когда действие не указывает другую фиксированную ориентацию.

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

Изменить ID: 265452344
Состояние по умолчанию : отключено для всех приложений.

Включает SCREEN_ORIENTATION_PORTRAIT для приложения, к которому он применяется. Если также не включено OVERRIDE_ANY_ORIENTATION , SCREEN_ORIENTATION_PORTRAIT используется только тогда, когда в действии не указана другая фиксированная ориентация.

RATE_LIMIT_TOASTS

Изменить ID: 174840628
Состояние по умолчанию : это изменение невозможно изменить. Оно регистрируется только фреймворком совместимости.

Включает ограничение количества вызовов Toast.show() , чтобы не перегружать пользователя слишком большим количеством уведомлений за ограниченное время. Любая попытка показать больше уведомлений, чем разрешено, за определённый период времени приводит к удалению уведомления.

STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS

Идентификатор изменения: 288912692
Состояние по умолчанию : включено для приложений, предназначенных для Android 16 (уровень API 36) или выше.

Если эта опция включена, максимум одно пропущенное выполнение scheduleAtFixedRate будет выполнено немедленно, когда приложение вернется к допустимому жизненному циклу.

Более подробную информацию об этом изменении см. в разделе об оптимизации графика работы с фиксированной ставкой на странице изменений поведения Android 16.

UNIVERSAL_RESIZABLE_BY_DEFAULT

Изменить идентификатор: 357141415
Состояние по умолчанию : включено для приложений, предназначенных для Android 16 (уровень API 36) или выше.

Если этот параметр включен, ограничения по ориентации, размеру и соотношению сторон приложения игнорируются на больших экранах (ширина экранов превышает 600 точек на дюйм).

Более подробную информацию об этом изменении см. в разделе об адаптивных макетах на странице изменений поведения Android 16.

USE_EXPERIMENTAL_COMPONENT_ALIAS

Изменить ID: 196254758
Состояние по умолчанию : отключено для всех приложений.

Если эта опция включена, система разрешает пакету «android» использовать псевдонимы компонентов.