相容性架構異動 (Android 13)

圖 1. 開發人員選項中的「應用程式相容性變更」畫面會列出可切換的變更。

本頁說明在 Android 13 (API 級別 33) 相容性架構中可切換的變更。當您準備好支援 Android 13 並指定其為目標版本時,請使用此清單搭配開發人員選項和 ADB 指令,為應用程式進行測試與偵錯。

您可以使用相容性架構工具進行下列操作:

  • 在不必實際變更應用程式 targetSdkVersion 的情況下,對鎖定的變更進行測試。您可以使用切換按鈕,強制啟用鎖定的特定行為變更,藉此評估該變更對現有應用程式的影響。
  • 僅對特定變更進行測試。如果在以指定版本為目標的變更中,您只想測試其中某些變更,則可使用切換按鈕停用不想測試的其他變更,不需要一次處理所有變更。
  • 透過 ADB 管理切換按鈕。您可以在自動化測試環境中使用 ADB 指令啟用及停用可切換的變更。
  • 使用標準變更 ID 加快偵錯速度。每個可切換的變更均有專屬的 ID 和名稱,可用於在記錄檔輸出中快速找出錯誤的起因。

如需此類用途的詳細工具使用說明,請參閱相容性架構工具一文。

相容性架構中的行為變更

本節中的清單說明 Android 13 相容性架構中包含的可切換變更。

您可以按預設狀態篩選變更清單。

Android 13 相容性架構中的可切換變更

ACCOUNT_ACCESS_CHECK_CHANGE_ID

變更 ID:201794303
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

若為指定 Android 13 (API 級別 33) 以上版本的應用程式,則在所有與同步處理相關的 API 上,啟用檢查呼叫 UID 的帳戶存取權。

ALLOW_COPY_SOLID_COLOR_VIEW

變更 ID:205907456
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本的應用程式,即使啟動畫面只顯示單色,應用程式仍可接收 SplashScreen.OnExitAnimationListener.onSplashScreenExit(SplashScreenView) 回呼。

ALLOW_SECURE_ACTIVITY_DISPLAY_ON_REMOTE_DEVICE

變更 ID:201712607
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式,可視需要在遠端裝置上顯示安全活動。

BORINGLAYOUT_FALLBACK_LINESPACING

變更 ID:210923482
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本,請為 BoringLayout 啟用備用文字行距 (行高)。

CALL_REDIRECTION_AUDIO_MODES

變更 ID:189472651
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本,允許使用音訊模式重新導向呼叫音訊。

CAMERA_MIC_INDICATORS_NOT_PRESENT

變更 ID:162547999
預設狀態:已為所有應用程式停用。

表示此裝置支援攝影機和麥克風指示燈。如果有顯示的話,將會是 false,因為如果未顯示變更 ID,則 CompatChanges#isChangeEnabled 方法會傳回 true

CLEAR_SHOW_FORCED_FLAG_WHEN_LEAVING

變更 ID:214016041
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本,請防止 SHOW_FORCED 旗標生效,除非呼叫端目前聚焦。

DEFER_BOOT_COMPLETED_BROADCAST_CHANGE_ID

變更 ID:203704822
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本為目標,請將 LOCKED_BOOT_COMPLETEDBOOT_COMPLETED 廣播延遲到 UID 中第一次啟動任何程序為止。

DISALLOW_DEADLINES_FOR_PREFETCH_JOBS

變更 ID:194532703
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本為目標,則無法針對預先擷取工作 (JobInfo.Builder.setPrefetch(boolean)) 設定期限 (使用 JobInfo.Builder.setOverrideDeadline(long))。預先擷取工作應於下次應用程式啟動時執行,因此無法設定期限。不過,系統不會捨棄或取消任何設有期限的預先排定預先擷取工作。

應用程式無法保留永久排程的預先擷取工作,且沒有期限。系統會執行設有期限的預先擷取工作,而設有此限制的應用程式將無法安排新的預先擷取工作。如果透過使用 JobService.jobFinished(JobParameters, boolean)JobService.onStopJob(JobParameters) 的傳回值提供 true 來重新安排工作時間,系統會捨棄期限。定期工作須符合所有限制,因此這些限制不適用於期限。

DOWNSCALED

變更 ID:168419799
預設狀態:已為所有應用程式停用。

這項變更可為所有依應用程式緩衝區降階的變更把關。啟用這項變更即可套用下列縮放比例係數:

為應用程式套件啟用這項變更後,應用程式就會強制將大小調整為已啟用的最高比例係數。舉例來說,如果同時啟用 80% 和 70% (DOWNSCALE_80DOWNSCALE_70),系統就會使用 80%。

DOWNSCALE_30

變更 ID:189970040
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 30%。

DOWNSCALE_35

變更 ID:189969749
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 35%。

DOWNSCALE_40

變更 ID:189970038
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 40%。

DOWNSCALE_45

變更 ID:189969782
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 45%。

DOWNSCALE_50

變更 ID:176926741
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 50%。

DOWNSCALE_55

變更 ID:189970036
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 55%。

DOWNSCALE_60

變更 ID:176926771
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 60%。

DOWNSCALE_65

變更 ID:189969744
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 65%。

DOWNSCALE_70

變更 ID:176926829
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 70%。

DOWNSCALE_75

變更 ID:189969779
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 75%。

DOWNSCALE_80

變更 ID:176926753
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 80%。

DOWNSCALE_85

變更 ID:189969734
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 85%。

DOWNSCALE_90

變更 ID:182811243
預設狀態:已為所有應用程式停用。

此時如果也啟用了 DOWNSCALED,則此套件變更會使得應用程式假設當下運行螢幕的垂直和水平解析度為實際螢幕的 90%。

DUMP_IGNORES_SPECIAL_ARGS

變更 ID:149254050
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

對於指定 Android 13 (API 級別 33) 以上版本的應用程式,如果使用某些特殊引數呼叫 dumpsys activity,系統就不會呼叫 dump(String, FileDescriptor, PrintWriter, String[])

DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED

變更 ID:161145287
預設狀態:已為所有應用程式停用。

啟用之後,當應用程式要為未受保護的廣播訊息註冊接收器時,就必須明確設定 Context.RECEIVER_EXPORTEDContext.RECEIVER_NOT_EXPORTED

詳情請參閱 為已註冊使用情境的接收端提供更安全的匯出服務一節。

ENABLE_PENDING_INTENT_BAL_OPTION

變更 ID:192341120
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本為目標,可以防止 PendingIntent 遭到濫用以啟動背景活動。

ENABLE_SIMPLIFIED_DARK_MODE

變更 ID:214741472
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本為目標,允許網頁內容根據應用程式的主題和 WebView,在適當情況下透過演算法調暗來調暗網頁內容。詳情請參閱 setAlgorithmicDarkeningAllowed(boolean)

ENABLE_TOUCH_OPAQUE_ACTIVITIES

變更 ID:194480991
預設狀態:已為所有應用程式啟用。

如果應用程式是在 Android 13 (API 級別 33) 以上版本中執行,會使活動耗用工作邊界內的所有觸控動作。

ENABLE_USE_EXACT_ALARM

變更 ID:218533173
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本的應用程式,允許特定類型的應用程式使用 Manifest.permission.USE_EXACT_ALARM 排定精確鬧鐘。

ENFORCE_INTENTS_TO_MATCH_INTENT_FILTERS

變更 ID:161252188
預設狀態:已為所有應用程式啟用。

如果外部呼叫端與宣告的意圖篩選器不符,元件將停止接收其意圖。當應用程式在資訊清單中註冊匯出的元件,並新增意圖篩選器時,任何意圖都能啟動該元件,即使是與意圖篩選器不相符的元件也沒問題。事實證明,許多開發人員都認為這是一種反直覺的做法。在某些情況下,如未在元件啟動時檢查意圖,在某些情況下,這可能會允許第三方應用程式觸發僅限內部使用的功能。

ENFORCE_STRICT_QUERY_BUILDER

變更 ID:143231523
預設狀態:已為所有應用程式停用。

啟用之後,SQLiteQueryBuilder 會針對惡意引數驗證所有 CalendarProvider2 查詢選取項目。

FORCE_DISABLE_HEVC_SUPPORT

變更 ID:174227820
預設狀態:已為所有應用程式停用。

強制停用應用程式支援 HEVC 媒體功能。應用程式應該在其資訊清單中宣告支援的媒體功能,不過這個標記可用來強制禁止應用程式支援 HEVC,進而在存取以 HEVC 編碼的媒體時執行強制轉碼。設定此標記會覆寫應用程式所有 OS 級別的預設值。此設定依預設為停用狀態,表示系統會優先採用 OS 預設值。如果同時啟用此標記和 FORCE_ENABLE_HEVC_SUPPORT,OS 會忽略這兩個標記。

FORCE_ENABLE_HEVC_SUPPORT

變更 ID:174228127
預設狀態:已為所有應用程式停用。

強制允許應用程式支援 HEVC 媒體功能應用程式應在其資訊清單中宣告支援的媒體功能,不過這個標記可用來強制要求應用程式支援 HEVC,進而避免在存取以 HEVC 編碼的媒體時進行轉碼。設定此標記會覆寫應用程式所有 OS 級別的預設值。此設定依預設為停用狀態,表示系統會優先採用 OS 預設值。如果同時啟用此標記和 FORCE_DISABLE_HEVC_SUPPORT,OS 會忽略這兩個標記。

FORCE_NON_RESIZE_APP

變更 ID:181136395
預設狀態:已為所有應用程式停用。

將已套用的套件強制設為無法調整大小。

FORCE_RESIZE_APP

變更 ID:174042936
預設狀態:已為所有應用程式停用。

強制要求已套用的套件可調整大小。我們僅允許在全螢幕模式下調整視窗大小,不會強制要求應用程式套用可調整大小的多視窗模式。

GET_API_SIGNATURES_FROM_UICC_PORT_INFO

變更 ID:202110963
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本,即可允許 SIM 卡同時啟用多個 ICCID。這項支援是由多個已啟用的設定檔 (MEP) 提供。

GWP_ASAN

變更 ID:135634846
預設狀態:已為所有應用程式停用。

在應用程式中啟用取樣的原生記憶體錯誤偵測功能。

如要進一步瞭解如何使用 GWP-ASan,請參閱 GWP-ASan 指南

ICC_CLOSE_CHANNEL_EXCEPTION_ON_FAILURE

變更 ID:208739934
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本的應用程式,現在只要 ICC 關閉管道作業失敗,系統就會擲回例外狀況。

MEDIA_CONTROL_SESSION_ACTIONS

變更 ID:203800354
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式,以 Notification.MediaStyle 通知為依據的媒體控制項,現在會根據媒體工作階段的 PlaybackState 執行動作,而非通知的動作。

如要進一步瞭解這項變更,請參閱 Android 13 行為變更頁面中的 媒體控制項變更一節。

NATIVE_HEAP_ZERO_INIT

變更 ID:178038272
預設狀態:已為所有應用程式停用。

啟用原生堆積記憶體配置的自動零初始化功能。

NATIVE_MEMTAG_ASYNC

變更 ID:135772972
預設狀態:已為所有應用程式停用。

在此程序中啟用非同步 (ASYNC) 記憶體標記檢查。此標記只會影響支援 ARM Memory Tagging Extension (MTE) 的硬體。

NATIVE_MEMTAG_SYNC

變更 ID:177438394
預設狀態:已為所有應用程式停用。

在此程序中啟用同步 (SYNC) 記憶體標記檢查。此標記只會影響支援 ARM Memory Tagging Extension (MTE) 的硬體。若同時啟用 NATIVE_MEMTAG_ASYNC 和此選項,則會以此選項為優先,並在 SYNC 模式下啟用 MTE。

NOTIFICATION_LOG_ASSISTANT_CANCEL

變更 ID:195579280
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如為指定 Android 13 (API 級別 33) 以上版本的應用程式,可讓事件監聽器瞭解從 Google 助理取消通知的具體原因,而非使用較通用的 REASON_LISTENER_CANCEL

NOTIFICATION_PERM_CHANGE_ID

變更 ID:194833441
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本的應用程式,可針對通知的執行階段權限啟用相關的行為變更。

如要進一步瞭解這項變更,請參閱新 通知執行階段權限的頁面。

NOTIFICATION_TRAMPOLINE_BLOCK_FOR_EXEMPT_ROLES

變更 ID:227752274
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本為目標,Activity為了回應通知,並開始來自廣播接收器或服務,系統會基於使用者體驗和先前豁免角色容器 (瀏覽器) 的效能因素封鎖通知動作點擊。

OVERRIDABLE_COMPONENT_CALLBACKS

變更 ID:193247900
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本的應用程式,registerComponentCallbacks(ComponentCallbacks) 會將 ComponentCallbacks 新增至 ActivityContextWrapper.getBaseContext(),而不是一律新增至 getApplicationContext()

OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK

變更 ID:191513214
預設狀態:已為所有應用程式停用。

啟用後,此變更 ID 會強制其套用的套件忽略 android:resizeableActivity 當前的值,並且指定與 M 相等或更低的 SDK,並將活動視為無法調整大小。在此情況下,基於目前螢幕旋轉方向的考量,相機旋轉和裁剪的值將僅取決於所需的補償。

OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS

變更 ID:189229956
預設狀態:已為所有應用程式停用。

啟用後,此變更 ID 會強制其套用的套件覆寫預設的相機旋轉和裁剪行為,並一律傳回 CaptureRequest.SCALER_ROTATE_AND_CROP_NONE。下表將討論預設行為以及所有可能的覆寫組合。

OVERRIDE_MIN_ASPECT_RATIO

變更 ID:174042980
預設狀態:已為所有應用程式停用。

這項變更負責為所有強制執行特定最小顯示比例的變更把關。啟用這項變更即可套用下列最小顯示比例:

為應用程式套件啟用此變更後,除非應用程式資訊清單中的值較大,否則應用程式資訊清單中指定的最小顯示比例將被覆寫為可啟用的最大顯示比例。

OVERRIDE_MIN_ASPECT_RATIO_LARGE

變更 ID:180326787
預設狀態:已為所有應用程式停用。

此時如果也啟用了 OVERRIDE_MIN_ASPECT_RATIO,則此套件變更會將活動的最小顯示比例設定為由 OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE 所定義的較大值。

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

變更 ID:180326845
預設狀態:已為所有應用程式停用。

此時如果也啟用了 OVERRIDE_MIN_ASPECT_RATIO,則此套件變更會將活動的最小顯示比例設定為由 OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE 所定義的中等值。

OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY

變更 ID:203647190
預設狀態:已為所有應用程式啟用。

此時如果也啟用了 OVERRIDE_MIN_ASPECT_RATIO,則這項變更會限制其他強制將活動最小顯示比例為特定值的變更,例如 OVERRIDE_MIN_ASPECT_RATIO_LARGEOVERRIDE_MIN_ASPECT_RATIO_MEDIUM 時,也限制為同樣具備直向螢幕方向的活動。

RATE_LIMIT_TOASTS

變更 ID:174840628
預設狀態:您無法切換此變更。此變更僅可由相容性架構記錄。

Toast.show() 的呼叫次數啟用頻率限制,以免使用者在某段時間內收到大量浮動式訊息。若嘗試在特定時間範圍內顯示超過許可數量的浮動式訊息,系統將會捨棄浮動式訊息。

REQUEST_LISTENING_MUST_MATCH_PACKAGE

變更 ID:172251878
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本為目標,呼叫 TileService.requestListeningState(Context, ComponentName) 會檢查呼叫套件 (UID) 和目標 ComponentName 套件是否相符。系統也會檢查背景資訊,是否能代表目前使用者執行操作。

RETURN_ADVANCED_VIDEO_PROFILES

變更 ID:206033068
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本,請控制 getAll(String, int) 傳回的影片設定檔類型。

SHOULD_RESOLVE_PORT_INDEX_FOR_APPS

變更 ID:224562872
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

如果應用程式指定 Android 13 (API 級別 33) 以上版本,即可允許 SIM 卡在不同通訊埠上啟用多個啟用的設定檔 (MEP)。為了保留電信業者應用程式的回溯相容性,當指定 API 級別 32 以下版本的應用程式呼叫 switchToSubscription 或下載 API 時,但未指定通訊埠索引,系統會一律使用通訊埠索引 0 保留現有行為,即使裝置本身已啟用 MEP eUICC 也一樣。

SWITCH_WITHOUT_PORT_INDEX_EXCEPTION_ON_DISABLE

變更 ID:218393363
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

針對指定 Android 13 (API 級別 33) 以上版本的應用程式,在沒有 portIndex 的情況下呼叫 switchToSubscription() 時,系統會擲回例外狀況,停用訂閱功能。

THROW_ON_INVALID_PRIORITY_VALUE

變更 ID:140852299
預設狀態:已針對指定 Android 13 (API 級別 33) 以上版本為目標的應用程式啟用。

對於指定 Android 13 (API 級別 33) 以上版本為目標的應用程式,當應用程式使用 JobInfo.Builder.setPriority(int) 提供無效的優先順序值時,系統會擲回例外狀況。 舊版應用程式可能無法正確使用 API,因此如果繼續使用 API,呼叫就會失敗,而且不會顯示相關通知。

USE_EXPERIMENTAL_COMPONENT_ALIAS

變更 ID:196254758
預設狀態:已為所有應用程式停用。

啟用後,系統將允許「android」套件使用元件別名。