行為變更:所有應用程式

Android 15 平台包含可能影響應用程式的行為變更。 下列行為變更適用於在 Android 15 上執行的所有應用程式。 無論 targetSdkVersion 為何。您應測試應用程式,然後進行修改 並視需要適時提供適當支援

請務必檢閱影響應用程式的行為變更清單 針對 Android 15 版本為目標

核心功能

Android 15 修改或擴充 Android 系統的各種核心功能。

套件已停止狀態變更

一律使用套件 FLAG_STOPPED 狀態 (使用者可以長按應用程式圖示並選取「強制停止」) 以此方式,讓應用程式保持處於這個狀態,直到使用者直接啟動應用程式,或間接與應用程式互動 (透過 Sharesheet 或小工具選取應用程式做為動態桌布等) 為止。在 Android 15 中,我們更新了系統行為,以配合此預期行為。請務必讓使用者直接或間接操作,讓應用程式從停止狀態中移除。

為了支援預期的行為,除了現有的限制外,當應用程式在搭載 Android 15 的裝置上進入停止狀態時,系統也會取消所有待處理意圖。使用者的動作將應用程式從已停止狀態中移除時,系統會將 ACTION_BOOT_COMPLETED 廣播傳送至應用程式,讓您的應用程式有機會重新註冊任何未完成的意圖。

您可以呼叫新的 ApplicationStartInfo.wasForceStopped() 方法,確認應用程式是否已進入停止狀態。

支援 16 KB 頁面大小

過去,Android 僅支援 4 KB 的記憶體頁面大小,可根據 Android 裝置的平均記憶體總量,最佳化系統記憶體效能。自 Android 15 起,Android 支援將頁面大小設為 16 KB (16 KB 裝置) 的裝置。

由於裝置製造商持續建構配備大量實體記憶體 (RAM) 的裝置,為提升裝置效能,許多這類裝置可能會以 16 KB (甚至更大) 頁面大小進行設定。新增對 16 KB 裝置的支援可讓應用程式在這類裝置上執行,讓應用程式從相關效能改善處獲得優勢。為協助您解決這個問題,我們提供瞭如何檢查應用程式是否受到影響、如何重新建構應用程式 (如適用) 的方法,以及如何使用模擬器和實體裝置在 16 KB 環境中測試應用程式的指引。

優點和成效提升

設定為 16 KB 頁面大小的裝置平均使用的記憶體平均會略高一些,但同時也能提升系統和應用程式的效能:

  • 系統處於記憶體壓力時,縮短應用程式啟動時間:平均降低 3.16%,針對部分我們測試的應用程式效能更顯著提升 (最高 30%),
  • 應用程式啟動時的耗電量降低:平均降低 4.56%
  • 相機啟動速度更快:熱啟動速度平均加快 4.48%,冷啟動速度平均加快 6.60%
  • 改善系統開機時間:平均可提高 1.5% (約 0.8 秒)

這些改善項目是以我們的初始測試結果為依據,因此實際裝置的結果可能會有所不同。我們會在持續測試的過程中,提供有關應用程式潛在收益的其他分析。

確認應用程式是否受到影響

如果您的應用程式使用任何原生程式碼,則應重建應用程式並支援 16 KB 裝置。如果您不確定應用程式是否使用原生程式碼,可以使用 APK 分析工具判斷是否有任何原生程式碼

如果應用程式只使用以 Java 程式設計語言或 Kotlin 編寫的程式碼 (包括所有程式庫或 SDK),則應用程式已支援 16 KB 裝置。不過,建議您在 16 KB 環境中測試應用程式,確認應用程式行為並未發生非預期的迴歸問題。

必須調整部分應用程式才能支援私人空間

「私人空間」是 Android 15 的新功能,可讓使用者在裝置上建立獨立空間,並多添一層驗證機制,防止敏感應用程式遭到有心人士窺探。由於私人空間中的應用程式瀏覽權限會受到限制,部分類型的應用程式需要採取額外的步驟,才能查看使用者私人空間中的應用程式並與之互動。

所有應用程式

由於私人空間中的應用程式會保存在獨立的使用者設定檔中 (與工作資料夾類似),因此應用程式不應假設任何非主要設定檔的已安裝複本都位於工作資料夾中。如果應用程式的邏輯與設有這個假設的工作資料夾應用程式相關,您就必須調整這個邏輯。

啟動器應用程式

如果您開發的是啟動器應用程式,您必須完成下列步驟,私人空間中的應用程式才會顯示:

  1. 應用程式必須指派為裝置的預設啟動器應用程式,也就是具備 ROLE_HOME 角色。
  2. 應用程式必須在應用程式的資訊清單檔案中宣告 ACCESS_HIDDEN_PROFILES 一般權限。

宣告 ACCESS_HIDDEN_PROFILES 權限的啟動器應用程式必須處理下列私人空間用途:

  1. 針對安裝在私人空間中的應用程式,應用程式必須設有獨立的啟動器容器。請使用 getLauncherUserInfo() 方法決定要處理的使用者個人資料類型。
  2. 使用者必須可以隱藏及顯示私人空間容器。
  3. 使用者必須能鎖定及解鎖私人空間容器。使用 requestQuietModeEnabled() 方法鎖定 (傳遞 true) 或解鎖 (藉由傳遞 false) 私人空間。
  4. 鎖定後,就不應透過搜尋等機制查看或找到私人空間容器中的應用程式。應用程式應為 ACTION_PROFILE_AVAILABLEACTION_PROFILE_UNAVAILABLE 廣播註冊接收器,並在私人空間容器的鎖定或解鎖狀態變更時更新應用程式中的 UI。這兩種廣播訊息都包含 EXTRA_USER,可供應用程式用於參照私人設定檔使用者。

    您也可以使用 isQuietModeEnabled() 方法檢查私人空間設定檔是否處於鎖定狀態。

應用程式商店應用程式

私人空間包含「安裝應用程式」按鈕,會啟動隱含意圖,將應用程式安裝到使用者私人空間。為了讓應用程式接收這項隱含意圖,請在應用程式的資訊清單檔案中使用 CATEGORY_APP_MARKET<category> 宣告 <intent-filter>

已移除 PNG 格式表情符號字型

舊版的 PNG 表情符號字型檔案 (NotoColorEmojiLegacy.ttf) 是 移除,僅保留向量檔案。從 Android 13 (API) 開始 第 33 級),系統表情符號轉譯器使用的表情符號字型檔案,從 PNG 檔案轉換為向量檔案系統保留 基於相容性因素,Android 13 和 Android 14 的舊版字型檔案 具有專屬字型轉譯器的應用程式,可繼續使用舊版字型檔案 直到能夠升級為止

您可以選擇透過下列幾種方式調整應用程式:

  • 使用平台 API 轉譯文字。您可以將文字轉譯成支援點陣圖的 Canvas,並視需求使用該物件取得原始圖片。
  • 在應用程式中新增 COLRv1 字型支援。FreeType 開放原始碼程式庫 支援 COLRv1 (2.13.0 版)。 更高。
  • 萬不得已時,你可以將舊版表情符號字型檔案封裝 將 (NotoColorEmoji.ttf) 新增至 APK。 但您的應用程式就無法取得最新的表情符號更新。適用對象 詳情請參閱 Noto Emoji GitHub 專案 頁面

目標 SDK 版本下限已從 23 提高至 24

Android 15 是以 Android 14 所做的變更為基礎,並進一步擴充這項安全性機制。在 Android 15 中,無法安裝 targetSdkVersion 低於 24 的應用程式。要求應用程式符合新型 API 級別,有助於確保安全性和隱私更有保障。

為了規避 Android 較新版本的安全性和隱私權保護措施,惡意軟體通常會鎖定較低的 API 級別。舉例來說,某些惡意軟體應用程式會使用 22 的 targetSdkVersion,以避免受到 Android 6.0 Marshmallow (API 級別 23) 在 2015 年推出的執行階段權限模型。這項 Android 15 變更會讓惡意軟體更難躲過更嚴謹的安全性和隱私權措施。如果嘗試安裝以較低 API 級別為目標的應用程式,將導致安裝失敗,Logcat 也會顯示以下訊息:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

在升級至 Android 15 的裝置上,targetSdkVersion 低於 24 的所有應用程式均不會遭到移除。

如果您需要測試以舊版 API 級別為目標的應用程式,請使用下列 ADB 指令:

adb install --bypass-low-target-sdk-block FILENAME.apk

相機與媒體

Android 15 針對所有裝置的相機和媒體行為進行以下變更 應用程式。

現在當音訊資源達到資源上限時,直接開啟和卸載音訊播放功能將會撤銷先前開啟的直接或卸載音軌

在 Android 15 之前,如果應用程式在其他應用程式播放音訊時要求直接或卸載音訊播放,且達到資源限制,應用程式將無法開啟新的 AudioTrack

自 Android 15 起,當應用程式要求直接或卸載播放,且達到資源限制時,系統會撤銷所有目前開啟的 AudioTrack 物件,使其無法執行新測試群組要求。

(直接和卸載的音軌通常會在壓縮音訊格式播放時開啟。直接播放音訊的常見用途包括透過 HDMI 將編碼音訊串流至電視。卸載軌通常用於在具有硬體 DSP 加速功能的行動裝置上播放壓縮音訊)。

使用者體驗和系統 UI

Android 15 包含幾項變更,目的是創造更一致的體驗。 直覺的使用者體驗

針對選擇加入的應用程式,啟用預測返回動畫

從 Android 15 開始,我們移除了預測返回動畫的開發人員選項。如果應用程式已選擇啟用預測返回手勢,不論是完全或活動層級,系統現在都會顯示系統動畫,例如返回主畫面、跨工作和跨活動。如果您的應用程式受到影響,請採取下列行動:

  • 請確認應用程式已正確遷移,可使用預測返回手勢。
  • 請確保片段轉場能與預測返回導覽功能搭配運作。
  • 捨棄動畫和架構轉換,並改用動畫和 Androidx 轉場效果。
  • 捨棄 FragmentManager 不知道的返回堆疊。請改用由 FragmentManager 或 Navigation 元件管理的返回堆疊。

當使用者強制停止應用程式時停用小工具

如果使用者在搭載 Android 15 的裝置上強制停止應用程式,系統會暫時停用所有應用程式小工具。小工具會顯示為灰色,使用者無法操作。這是因為從 Android 15 開始,系統會在應用程式強制停止時,取消應用程式的所有待處理意圖。

系統會在使用者下次啟動應用程式時,重新啟用這些小工具。

詳情請參閱「套件已停止狀態的變更」。

淘汰項目

每次發布版本時,特定 Android API 可能會過時,或者必須 重構以提供更優質的開發人員體驗或支援新的平台 即便沒有技術背景,也能因這些工具的功能而受益在這種情況下,我們會正式淘汰過時的 API,並 引導開發人員改用替代 API。

淘汰意味著我們已終止對 API 的官方支援, 才能繼續向開發人員提供進一步瞭解顯著性 如要瞭解這個 Android 版本中有哪些淘汰項目,請參閱淘汰頁面