Обновления ограничений интерфейса, не связанных с SDK, в Android 13

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

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

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

Список изменений для Android 13

Изменения списка в Android 13 относятся к следующей категории:

  • Интерфейсы, не относящиеся к SDK, которые не поддерживались в Android 12 (уровень API 31), которые заблокированы в Android 13 .

Чтобы получить полный список всех интерфейсов без SDK для Android 13, загрузите следующий файл:

Файл: hiddenapi-flags.csv

Контрольная сумма SHA-256: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3

Интерфейсы, не относящиеся к SDK, которые теперь заблокированы в Android 13

В следующем поле кода перечислены все интерфейсы, не входящие в SDK, которые не поддерживались в Android 12 (уровень API 31), но заблокированы в Android 13 (уровень API 33). То есть эти интерфейсы принадлежат к списку max-target-s , поэтому ваше приложение может использовать эти интерфейсы только в том случае, если оно предназначено для Android 12 (уровень API 31) или ниже.

Наша цель — убедиться, что общедоступные альтернативы доступны, прежде чем мы ограничиваем интерфейсы, не относящиеся к SDK, и мы понимаем, что у вашего приложения может быть допустимый вариант использования этих интерфейсов. Если интерфейс, который ваше приложение использовало в предыдущей версии, теперь заблокирован в Android 13, вам следует запросить новый общедоступный API для этого интерфейса.

Landroid/app/Activity;->setDisablePreviewScreenshots(Z)V # Use setRecentsScreenshotEnabled() instead.
Landroid/os/PowerManager;->isLightDeviceIdleMode()Z # Use isDeviceLightIdleMode() instead.
Landroid/os/Process;->setArgV0(Ljava/lang/String;)V # In general, do not try to change the process name. If you must change the process name (for instance, for debugging), you can use pthread_setname_np() instead, though be aware that doing this might confuse the system.
Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache(I)V # Use android.accessibilityservice.AccessibilityService#clearCache() instead.