В 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 .
Полный список всех интерфейсов для Android 13, не входящих в состав SDK, можно получить, загрузив следующий файл:
Файл: hiddenapi-flags.csv
Контрольная сумма SHA-256: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3
Интерфейсы, не относящиеся к SDK, которые теперь заблокированы в Android 13.
В приведенном ниже блоке кода перечислены все неподдерживаемые в Android 12 (уровень API 31) интерфейсы, не входящие в состав SDK, но заблокированные в 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.