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) 中不支援的所有非 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.