В 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.