Обновление ограничений для интерфейсов, не относящихся к 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 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.