行為變更:所有應用程式

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) 的裝置 裝置)。如果應用程式直接使用任何 NDK 程式庫 或者間接透過 SDK 來重建應用程式, 支援這些 16 KB 裝置

隨著裝置製造商持續開發數量更多 實體記憶體 (RAM),這類裝置中有許多 16 KB ( ,以便最佳化裝置效能。正在新增 網頁大小支援 16 KB 頁面大小的裝置,可讓您的應用程式在這些裝置上執行 ,有助應用程式享有相關效能 如未重新編譯,應用程式可能無法在 16 KB 裝置上運作 。

為協助您為應用程式添加支援服務,我們提供了指南說明 如果您的應用程式受到影響,您可以瞭解如何 重新建構應用程式 (如適用),以及如何在 使用模擬器的 16 KB 環境 (包括 Android 15) Android Emulator 的系統映像檔)。

優點和成效提升

設定為 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 中的一项新功能,可让用户 在设备上创建一个单独的空间,以便将敏感应用拒之门外 增加了一层额外的身份验证。因为 由于私密空间的公开范围有限,因此某些类型的应用需要 需要完成一些额外步骤才能查看用户私有中的应用并与之互动 空间。

所有应用

由于私密空间中的应用保存在单独的用户个人资料中, 工作资料,则应用不应假定已安装任何 不在主资料中的应用副本位于工作资料中。如果 您的应用具有与工作资料应用相关的逻辑,这类应用会做出这种假设, 您需要调整此逻辑。

医疗应用

当用户锁定私密空间后,私密空间中的所有应用都会停止, 并且这些应用无法执行前台或后台 activity,包括 显示通知。这种行为可能会严重影响 安装在私密空间中的医疗应用的功能。

设置私密空间时,系统会警告用户私密空间 适用于需要执行关键前台或后台任务的应用 活动,例如显示来自医疗应用的通知。不过, 应用无法确定其是否被用在私密空间中; 这样他们就无法针对这种情况向用户显示警告。

出于这些原因,如果您开发了医疗应用,请查看此功能可能会给 影响您的应用并采取适当措施,例如告知用户不要 在私密空间中安装您的应用,以免干扰关键应用 功能。

启动器应用

如果您要开发启动器应用,必须先执行以下操作,然后再运行 以下私密空间:

  1. 您必须将应用指定为设备的默认启动器应用, 具有 ROLE_HOME 角色。
  2. 您的应用必须声明 ACCESS_HIDDEN_PROFILES 普通权限。

声明 ACCESS_HIDDEN_PROFILES 权限的启动器应用必须处理 私密空间的使用场景如下:

  1. 您的应用必须为安装在 私密空间使用 getLauncherUserInfo() 方法 确定正在处理的用户个人资料类型。
  2. 用户必须能够隐藏和显示私密空间容器。
  3. 用户必须能够锁定和解锁私密空间容器。使用 requestQuietModeEnabled() 方法锁定(通过 传递 true)或解锁(通过传递 false)私密空间。
  4. 处于锁定状态时,私密空间容器中的任何应用都不应可见或 可通过搜索等机制发现。您的应用应注册 接收器 ACTION_PROFILE_AVAILABLEACTION_PROFILE_UNAVAILABLE 广播,并更新 私密空间处于锁定或解锁状态时应用中的界面 容器更改这两种广播都包含 EXTRA_USER,您的应用可以使用它来引用 个人资料用户。

    您还可以使用 isQuietModeEnabled() 方法 检查私密空间配置文件是否处于锁定状态。

应用商店应用

私密空间包括“安装应用”启动隐式 intent 来将应用安装到用户的私密空间中。为了让您的应用 收到此隐式 intent,请声明 <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 中, 无法安装低于 24 的 targetSdkVersion。 要求应用符合现代 API 级别有助于确保更好的安全性和 保护隐私。

恶意软件通常会以较低的 API 级别为目标平台,以绕过安全和隐私 更高的 Android 版本中引入的保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 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 级别较低的任何应用 安装在 Google Play 上

如果您需要测试以旧版 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 版本中有哪些淘汰項目,請參閱淘汰頁面