行為變更:所有應用程式

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() 方法: 檢查私人空間設定檔是否已鎖定。

應用程式商店應用程式

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

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

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

如要確認應用程式是否受到影響,請搜尋應用程式的程式碼,尋找與 NotoColorEmojiLegacy.ttf 檔案。

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

  • 使用平台 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 版本中有哪些淘汰項目,請參閱淘汰頁面