相容性架構異動 (Android 16)

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

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

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

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

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

相容性架構中的行為變更

本節中的清單說明相容性架構中包含的可切換變更,這些變更與 Android 16 相關,可協助進行一般應用程式測試。

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

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

CAMERA_MIC_INDICATORS_NOT_PRESENT

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

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

DOWNSCALED

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

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

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

DOWNSCALED_INVERSE

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

這項變更可為所有依應用程式緩衝區反向降階的變更把關。啟用這項變更後,即可反向套用下列縮放比例係數 (也就是將解析度向上縮放):

為應用程式套件啟用這項變更後,應用程式就會強制將大小調整為已啟用的最低比例係數。舉例來說,如果同時啟用 80% 和 70% (DOWNSCALE_80DOWNSCALE_70),系統就會使用 80%,因為在反向套用時,80% 縮放比例係數等於 125%,低於反向套用 70% 縮放比例係數時套用的 142.86% 縮放比例。當這項變更和 DOWNSCALED 同時啟用時,系統會優先採用 DOWNSCALED_INVERSE,並以相反的方式套用比例係數。

DOWNSCALE_30

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

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

DOWNSCALE_35

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

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

DOWNSCALE_40

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

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

DOWNSCALE_45

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

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

DOWNSCALE_50

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

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

DOWNSCALE_55

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

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

DOWNSCALE_60

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

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

DOWNSCALE_65

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

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

DOWNSCALE_70

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

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

DOWNSCALE_75

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

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

DOWNSCALE_80

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

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

DOWNSCALE_85

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

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

DOWNSCALE_90

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

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

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:181146395
預設狀態:已為所有應用程式停用。

強制要求已套用的套件禁止調整大小操作。

FORCE_RESIZE_APP

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

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

GWP_ASAN

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

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

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

NATIVE_HEAP_ZERO_INIT

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

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

NATIVE_MEMTAG_ASYNC

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

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

NATIVE_MEMTAG_SYNC

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

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

OVERRIDE_ANY_ORIENTATION

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

啟用這項變更後,無論活動要求的方向為何,系統都會套用下列方向覆寫值:

OVERRIDE_ANY_ORIENTATION_TO_USER

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

啟用後,系統會啟用 SCREEN_ORIENTATION_USER,覆寫活動要求的任何方向。在啟用 ignoreOrientationRequest 且套用此覆寫值的大螢幕裝置上,可將固定方向應用程式覆寫為全螢幕。

OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT

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

啟用後,系統會在固定方向應用程式的自由格式視窗模式中,將套用覆寫值的套件從相機相容性處理程序中排除。

在自由格式視窗模式中,相容性處理會模擬在直向裝置上執行的情況,方法是將應用程式視窗加上黑邊,並將相機特性變更為應用程式在直向裝置中通常預期的情況:分別為後置鏡頭和前置鏡頭提供 90 度和 270 度的感應器旋轉角度,並將顯示旋轉角度設為 0。

使用這個標記,可針對無法順利回應相容性處理的應用程式停用相容性處理。

OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK

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

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

OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS

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

啟用後,此變更會強制其套用的套件覆寫預設的相機旋轉和裁剪行為,並且一律會傳回 CaptureRequest.SCALER_ROTATE_AND_CROP_NONE

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

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

啟用後,系統會在使用者啟動 MediaProjection 工作階段時,提供選擇擷取單一應用程式或整個螢幕畫面的選項,覆寫 MediaProjectionConfig#createConfigForDefaultDisplay 的使用方式。

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

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

為所套用的應用程式啟用 SCREEN_ORIENTATION_REVERSE_LANDSCAPE。除非同時啟用 OVERRIDE_ANY_ORIENTATION,否則只有在活動指定橫向方向時,系統才會使用 SCREEN_ORIENTATION_REVERSE_LANDSCAPE。啟用這項變更後,您就能測試應用程式行為,瞭解在橫向螢幕方向對應 Surface.ROTATION_90Surface.ROTATION_270 的裝置之間的差異。

OVERRIDE_LAYOUT_IN_DISPLAY_CUTOUT_MODE

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

啟用後,系統會覆寫螢幕凹口模式的版面配置行為。這項設定僅適用於未強制採用全螢幕模式的情況。

OVERRIDE_MIN_ASPECT_RATIO

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

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

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

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

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

啟用後,系統會在直向全螢幕模式下覆寫最小顯示比例限制,以便使用所有可用的螢幕空間。

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_ONLY_FOR_CAMERA

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

啟用後,系統會限制強制套用特定最小顯示比例的處置,只在應用程式連上相機時套用。

OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY

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

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

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

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

啟用後,這項變更會從裝置製造商可設定的忽略方向限制中,排除套用至該限制的套件。

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

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

為所套用的應用程式啟用 SCREEN_ORIENTATION_NOSENSOR。除非同時啟用 OVERRIDE_ANY_ORIENTATION,否則只有在活動未指定其他固定方向時,系統才會使用 SCREEN_ORIENTATION_NOSENSOR

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

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

為所套用的應用程式啟用 SCREEN_ORIENTATION_PORTRAIT。除非同時啟用 OVERRIDE_ANY_ORIENTATION,否則只有在活動未指定其他固定方向時,系統才會使用 SCREEN_ORIENTATION_PORTRAIT

RATE_LIMIT_TOASTS

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

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

STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS

變更 ID:288912692
預設狀態:已針對指定 Android 16 以上版本為目標的應用程式啟用。

啟用後,應用程式會在返回有效生命週期時立即執行最多一次遺漏的 scheduleAtFixedRate 執行作業。

如要進一步瞭解這項變更,請參閱 Android 16 行為變更頁面中的「 固定費率工作排程最佳化」一節。

UNIVERSAL_RESIZABLE_BY_DEFAULT

變更 ID:357141415
預設狀態:已針對指定 Android 16 以上版本為目標的應用程式啟用。

啟用後,系統會忽略大螢幕 (寬度大於 600dp) 上的應用程式方向、大小調整和顯示比例限制。

如要進一步瞭解這項變更,請參閱 Android 16 行為變更頁面中的「 自動調整式版面配置」一節。

USE_EXPERIMENTAL_COMPONENT_ALIAS

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

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