Android 13 包含基于与 Android 开发者合作和最新的内部测试而更新的受限非 SDK 接口列表。在限制非 SDK 接口之前,我们会尽可能确保提供公共替代方案。
如果您的应用并非面向 Android 13,则这些更改可能不会立即影响您。但是,虽然您目前可以使用一些非 SDK 接口(取决于您应用的目标 API 等级),但使用任何非 SDK 方法或字段始终存在较高的应用崩溃风险。
如果您不确定您的应用是否使用了非 SDK 接口,您可以测试您的应用以了解情况。如果您的应用依赖于非 SDK 接口,则应开始规划迁移到 SDK 替代方案。但是,我们了解某些应用有使用非 SDK 接口的有效用例。如果您找不到应用中某个功能的非 SDK 接口的替代方案,则应请求新的公共 API。
Android 13 的列表更改
Android 13 中的列表更改属于以下类别
- 在 Android 12(API 等级 31)中不受支持但在Android 13 中被阻止的非 SDK 接口。
要获取 Android 13 所有非 SDK 接口的完整列表,请下载以下文件
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.