Android 13 的非 SDK 介面限制更新

基於與 Android 開發人員合作及最新的內部測試,Android 13 包含更新後的受限制非 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.