相容性架構異動 (Android Disney13)

圖 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) 以上版本的應用程式,系統現在會根據媒體工作階段的 PlaybackState,而非通知動作,顯示根據 Notification.MediaStyle 通知顯示的媒體控制項。

如要進一步瞭解這項變更,請參閱 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 時未指定連接埠索引時,即使裝置本身已啟用 MEP eUICC,系統也會一律使用連接埠索引 0,保留現有行為。

SWITCH_WITHOUT_PORT_INDEX_EXCEPTION_ON_DISABLE

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

針對指定 Android 13 (API 級別 33) 以上版本為目標版本的應用程式,只要呼叫 switchToSubscription() 時未使用 portIndex 停用訂閱項目,系統就會擲回例外狀況。

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」套件使用元件別名。