Android 13 中非 SDK 接口限制的更新

Android 13 包含了基于与 Android 开发者协作和最新内部测试更新的受限制非 SDK 接口列表。在限制非 SDK 接口之前,我们总是尽可能地确保提供公共替代方案。

如果您的应用不以 Android 13 为目标平台,这些更改可能不会立即影响您。然而,尽管您目前可以使用某些非 SDK 接口(取决于您的应用目标 API 级别),使用任何非 SDK 方法或字段始终存在导致应用崩溃的高风险。

如果您不确定您的应用是否使用非 SDK 接口,可以测试您的应用以查找。如果您的应用依赖于非 SDK 接口,您应该开始计划迁移到 SDK 替代方案。尽管如此,我们理解某些应用在使用非 SDK 接口方面有合理的用例。如果您无法为应用中的某个功能找到使用非 SDK 接口的替代方案,您应该请求新的公共 API

Android 13 的列表更改

Android 13 中的列表更改属于以下类别

要获取 Android 13 所有非 SDK 接口的完整列表,请下载以下文件

文件:hiddenapi-flags.csv

SHA-256 校验和:233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3

在 Android 13 中现已阻止的非 SDK 接口

以下代码框列出了所有在 Android 12 (API 级别 31) 中不受支持但在 Android 13 (API 级别 33) 中被阻止的非 SDK 接口。也就是说,这些接口属于 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.