Изменения в системе совместимости (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 если Change ID отсутствует.

DOWNSCALED

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

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

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

DOWNSCALED_INVERSE

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

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

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

DOWNSCALE_30

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

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

DOWNSCALE_35

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

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

DOWNSCALE_40

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

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

DOWNSCALE_45

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

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

DOWNSCALE_50

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

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

DOWNSCALE_55

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

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

DOWNSCALE_60

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

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

DOWNSCALE_65

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

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

DOWNSCALE_70

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

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

DOWNSCALE_75

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

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

DOWNSCALE_80

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

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

DOWNSCALE_85

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

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

DOWNSCALE_90

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

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

ENFORCE_STRICT_QUERY_BUILDER

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

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

FORCE_DISABLE_HEVC_SUPPORT

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

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

FORCE_ENABLE_HEVC_SUPPORT

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

Принудительное включение поддержки приложением медиавозможностей 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

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

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

NATIVE_MEMTAG_ASYNC

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

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

NATIVE_MEMTAG_SYNC

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

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

OVERRIDE_ANY_ORIENTATION

Изменить идентификатор: 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

Изменить идентификатор: 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

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

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

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

Изменить идентификатор: 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

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

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

RATE_LIMIT_TOASTS

Изменить идентификатор: 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

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

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