行為變更:所有應用程式

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

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

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

Benefits and performance gains

以 16 KB 頁面大小設定的裝置平均會耗用較多記憶體,但系統和應用程式也能獲得各種效能改善:

  • 系統面臨記憶體壓力時,應用程式啟動時間越短:平均低 3.16%,部分受測的應用程式還大幅改善 (最多提升 30%)
  • 應用程式啟動期間的耗電量降幅:平均減少 4.56%
  • 相機啟動速度更快:熱啟動速度平均快了 4.48%,冷啟動速度平均快了 6.60%
  • 縮短系統啟動時間:縮短 8% (平均約 950 毫秒)

這些改善項目是根據初步測試結果而來,實際裝置上的結果可能會有所不同。我們會在持續測試的過程中,針對應用程式可能獲得的效益提供額外分析。

Check if your app is impacted

如果應用程式使用任何原生程式碼,則應重新建構應用程式,以支援 16 KB 裝置。如果您不確定應用程式是否使用原生程式碼,可以使用 APK 分析工具來判斷是否存在原生程式碼,然後檢查所找到的任何共用程式庫的 ELF 區段是否對齊

如果應用程式只使用以 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_APP_MARKET<category>

已移除以 PNG 為基礎的表情符號字型

我们移除了基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf),只保留了基于矢量的文件。从 Android 13(API 级别 33)开始,系统表情符号渲染程序使用的表情符号字体文件已从基于 PNG 的文件更改为基于矢量的文件。出于兼容性原因,系统在 Android 13 和 14 中保留了旧版字体文件,以便具有自己的字体渲染程序的应用在能够升级之前继续使用旧版字体文件。

如需检查您的应用是否受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf 文件的引用。

您可以通过多种方式自适应应用:

  • 使用平台 API 进行文本渲染。您可以将文本渲染到基于位图的 Canvas,并在必要时使用该 Canvas 获取原始图片。
  • 为您的应用添加 COLRv1 字体支持。FreeType 开源库在 2.13.0 版及更高版本中支持 COLRv1。
  • 作为最后的手段,您可以将旧版表情符号字体文件 (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 introduces robust measures to combat one-time passcode (OTP) fraud and to protect the user's sensitive content, focusing on hardening the Notification Listener Service and screenshare protections. Key enhancements include redacting OTPs from notifications accessible to untrusted apps, hiding notifications during screenshare, and securing app activities when OTPs are posted. These changes aim to keep the user's sensitive content safe from unauthorized actors.

Developers need to be aware of the following to ensure their apps are compatible with the changes in Android 15:

OTP Redaction

Android will stop untrusted apps that implement a NotificationListenerService from reading unredacted content from notifications where an OTP has been detected. Trusted apps such as companion device manager associations are exempt from these restrictions.

Screenshare Protection

  • Notification content is hidden during screen sharing sessions to preserve the user's privacy. If the app implements setPublicVersion(), Android shows the public version of the notification which serves as a replacement notification in insecure contexts. Otherwise, the notification content is redacted without any further context.
  • Sensitive content like password input is hidden from remote viewers to prevent revealing the user's sensitive information.
  • Activities from apps that post notifications during screenshare where an OTP has been detected will be hidden. App content is hidden from the remote viewer when launched.
  • Beyond Android's automatic identification of sensitive fields, developers can manually mark parts of their app as sensitive using setContentSensitivity, which is hidden from remote viewers during screenshare.
  • Developers can choose to toggle the Disable screen share protections option under Developer Options to be exempted from the screenshare protections for demo or testing purposes. The default system screen recorder is exempted from these changes, since the recordings remain on-device.

相機和媒體

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

當達到資源限制時,直接和卸載音訊播放功能會使先前開啟的直接或卸載音訊曲目失效

在 Android 15 之前,如果某个应用在另一个应用播放音频且达到资源限制时请求直接或分流音频播放,该应用将无法打开新的 AudioTrack

从 Android 15 开始,当应用请求直接播放或分流播放且达到资源限制时,系统会使任何当前打开的 AudioTrack 对象失效,以防止执行新轨道请求。

(直接音轨和分流音轨通常会打开,以播放压缩音频格式。播放直接音频的常见用例包括通过 HDMI 将编码的音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)

使用者體驗和系統使用者介面

Android 15 包含一些變更,旨在打造更一致、直覺的使用者體驗。

為已選擇加入的應用程式啟用預測返回動畫

從 Android 15 開始,預測返回動畫的開發人員選項已遭移除。對於已全面或在活動層級啟用預測返回手勢功能的應用程式,現在會顯示返回首頁、跨工作和跨活動等系統動畫。如果您的應用程式受到影響,請採取下列行動:

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

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

如果用户在搭载 Android 15 的设备上强制停止应用,系统会暂时停用该应用的所有微件。这些 widget 会灰显,用户无法与其互动。这是因为,从 Android 15 开始,当系统强制停止应用时,会取消应用的所有待处理 intent。

系统会在用户下次启动应用时重新启用这些微件。

如需了解详情,请参阅对软件包停止状态的更改

媒體投放狀態列方塊會提醒使用者分享螢幕畫面、投放內容和錄製畫面

屏幕投影漏洞会泄露用户的私密数据(例如财务信息),因为用户不知道自己的设备屏幕正在共享。

对于搭载 Android 15 QPR1 或更高版本的设备上运行的应用,系统会在状态栏中显示一个醒目的大条状标签,以提醒用户正在进行的任何屏幕投影。用户可以点按该条状标签,停止共享、投放或录制其屏幕。此外,当设备屏幕锁定时,屏幕投影会自动停止。

用於螢幕分享、投放和錄製的狀態列方塊。

检查您的应用是否受到影响

默认情况下,您的应用会包含状态栏条状标签,并会在锁定屏幕激活时自动暂停屏幕投影。

如需详细了解如何针对这些用例测试应用,请参阅状态栏条状标签和自动停止

淘汰項目

每次發布時,特定 Android API 都可能會淘汰,或需要重構,以提供更優質的開發人員體驗,或支援新的平台功能。在這種情況下,我們會正式淘汰過時的 API,並引導開發人員改用其他 API。

淘汰是指我們已終止對 API 的官方支援,但開發人員仍可繼續使用這些 API。如要進一步瞭解此 Android 版本中的重要淘汰項目,請參閱淘汰項目頁面