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

Android 13 包含更新后的受限制非 SDK 接口列表(基于与 Android 开发者之间的协作以及最新的内部测试)。在限制使用非 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)中不受支持的所有非 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.