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