行為變更:所有應用程式

Android 15 平台包含可能影響應用程式的行為變更。無論 targetSdkVersion 為何,當應用程式在 Android 15 上執行時,以下行為變更將會套用至所有應用程式。您應測試應用程式,並視需要修改,以便在適當情況下支援新版本功能。

請務必查看只會影響指定 Android 15 為目標版本應用程式的行為變更清單。

核心功能

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

套件已停止狀態變更

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 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. 您的应用必须为安装在私密空间中的应用提供单独的启动器容器。
  2. 用户必须能够隐藏和显示私密空间容器。
  3. 用户必须能够锁定和解锁私密空间容器。
  4. 处于锁定状态时,私密空间容器中的任何应用都不应通过搜索等机制可见或发现。

应用商店应用

私密空间包含一个“安装应用”按钮,该按钮可启动隐式 intent,以将应用安装到用户的私密空间中。为了让应用接收此隐式 intent,请在应用的清单文件中声明 <intent-filter>,并将 <category> 设为 CATEGORY_APP_MARKET

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

Android 15 基于 Android 14 中发生的变更构建,并进一步扩展了这种安全性。在 Android 15 中,targetSdkVersion 低于 24 的应用将无法安装。要求应用满足现代 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 低于 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 的官方支援,但開發人員仍可以繼續使用這些 API。如要進一步瞭解這個 Android 版本中的重要淘汰項目,請參閱淘汰頁面