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.