Thay đổi về hành vi: tất cả ứng dụng

Nền tảng Android 15 có các thay đổi về hành vi có thể ảnh hưởng đến ứng dụng của bạn. Những thay đổi về hành vi sau đây áp dụng cho tất cả ứng dụng chạy trên Android 15, bất kể targetSdkVersion. Bạn nên kiểm thử ứng dụng rồi sửa đổi để hỗ trợ những thay đổi này cho phù hợp (nếu cần).

Ngoài ra, hãy nhớ tham khảo danh sách thay đổi về hành vi chỉ ảnh hưởng đến những ứng dụng nhắm đến Android 15.

Chức năng cốt lõi

Android 15 sửa đổi hoặc mở rộng nhiều chức năng cốt lõi của hệ thống Android.

Thay đổi trạng thái gói đã dừng

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

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

您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已进入停止状态。

Hỗ trợ kích thước trang 16 KB

Trước đây, Android chỉ hỗ trợ kích thước trang bộ nhớ 4 KB, vốn có tối ưu hoá hiệu suất bộ nhớ hệ thống cho tổng dung lượng bộ nhớ trung bình Các thiết bị Android thường có. Kể từ Android 15, AOSP hỗ trợ các thiết bị được định cấu hình để sử dụng kích thước trang là 16 KB (16 KB thiết bị). Nếu ứng dụng của bạn dùng thư viện NDK, hãy trực tiếp hoặc gián tiếp thông qua SDK, thì bạn sẽ phải tạo lại ứng dụng để hoạt động trên các thiết bị 16 KB này.

Khi nhà sản xuất thiết bị tiếp tục tạo ra các thiết bị có số lượng lớn bộ nhớ vật lý (RAM), nhiều thiết bị trong số này sẽ sử dụng 16 KB (và lớn hơn) để tối ưu hoá hiệu suất của thiết bị. Đang thêm khả năng hỗ trợ các thiết bị có kích thước trang 16 KB cho phép ứng dụng của bạn chạy trên trên thiết bị và giúp ứng dụng của bạn hưởng lợi từ hiệu suất tương ứng. các điểm cải tiến khác. Nếu không biên dịch lại, các ứng dụng có thể không hoạt động trên các thiết bị 16 KB khi chúng được sản xuất trong các bản phát hành Android sau này.

Để giúp bạn tăng cường hỗ trợ cho ứng dụng của mình, chúng tôi đã cung cấp hướng dẫn về cách kiểm tra nếu ứng dụng của bạn bị ảnh hưởng thì làm cách nào để xây dựng lại ứng dụng (nếu có) và cách kiểm thử ứng dụng trong môi trường 16 KB bằng trình mô phỏng (bao gồm cả Android 15) hình ảnh hệ thống cho Trình mô phỏng Android).

优势和性能提升

Các thiết bị được định cấu hình với kích thước trang 16 KB sử dụng nhiều bộ nhớ hơn một chút trung bình, nhưng cũng có nhiều điểm cải tiến về hiệu suất cho cả hệ thống và ứng dụng:

  • Giảm thời gian khởi chạy ứng dụng khi hệ thống chịu áp lực về bộ nhớ: Trung bình thấp hơn 3,16%, với mức cải thiện đáng kể hơn (lên đến 30%) đối với một số ứng dụng mà chúng tôi đã thử nghiệm
  • Giảm mức tiêu thụ điện năng trong quá trình khởi chạy ứng dụng: trung bình giảm 4,56%
  • Khởi động máy ảnh nhanh hơn: trung bình khởi động nóng nhanh hơn 4,48% và khởi động nguội nhanh hơn 6,60%
  • Cải thiện thời gian khởi động hệ thống: trung bình cải thiện 8% (khoảng 950 mili giây)

Những cải tiến này dựa trên thử nghiệm ban đầu của chúng tôi và kết quả trên các thiết bị thực tế có thể sẽ khác. Chúng tôi sẽ phân tích thêm về những lợi ích có thể xảy ra đối với ứng dụng trong quá trình kiểm thử.

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

Nếu ứng dụng sử dụng bất kỳ mã gốc nào, thì bạn nên tạo lại ứng dụng để hỗ trợ các thiết bị 16 KB. Nếu không chắc chắn rằng ứng dụng của mình có sử dụng mã gốc hay không, bạn có thể sử dụng Công cụ phân tích APK để xác định xem có mã gốc nào hay không, sau đó kiểm tra việc căn chỉnh các phân đoạn ELF cho mọi thư viện dùng chung mà bạn tìm thấy.

Nếu ứng dụng chỉ sử dụng mã viết bằng ngôn ngữ lập trình Java hoặc Kotlin, bao gồm tất cả các thư viện hoặc SDK, thì ứng dụng đã hỗ trợ thiết bị 16 KB. Tuy nhiên, bạn nên kiểm thử ứng dụng trong môi trường 16 KB để xác minh rằng không có sự hồi quy không mong muốn nào trong hành vi của ứng dụng.

Những thay đổi bắt buộc đối với một số ứng dụng để hỗ trợ không gian riêng tư

私密空间是 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 广播注册接收器,并在私密空间容器的锁定或解锁状态发生变化时更新应用中的界面。这两种状态的广播都包含 EXTRA_USER,您的应用可以使用该常量来引用不公开个人资料的用户。

    您还可以使用 isQuietModeEnabled() 方法检查私密空间个人资料是否已锁定。

应用商店应用

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

Xoá phông chữ biểu tượng cảm xúc dựa trên PNG

Tệp phông chữ biểu tượng cảm xúc cũ, dựa trên PNG (NotoColorEmojiLegacy.ttf) đã bị xoá, chỉ còn lại tệp dựa trên vectơ. Kể từ Android 13 (API cấp 33), tệp phông chữ biểu tượng cảm xúc mà trình kết xuất biểu tượng cảm xúc của hệ thống sử dụng đã thay đổi từ tệp dựa trên PNG thành tệp dựa trên vectơ. Hệ thống giữ lại tệp phông chữ cũ trong Android 13 và 14 vì lý do tương thích, để các ứng dụng có trình kết xuất phông chữ riêng có thể tiếp tục sử dụng tệp phông chữ cũ cho đến khi có thể nâng cấp.

Để kiểm tra xem ứng dụng của bạn có bị ảnh hưởng hay không, hãy tìm các tệp tham chiếu đến tệp NotoColorEmojiLegacy.ttf trong mã của ứng dụng.

Bạn có thể chọn điều chỉnh ứng dụng theo một số cách:

  • Sử dụng API nền tảng để hiển thị văn bản. Bạn có thể kết xuất văn bản thành một Canvas được hỗ trợ bitmap và sử dụng văn bản đó để lấy hình ảnh thô nếu cần.
  • Thêm tính năng hỗ trợ phông chữ COLRv1 vào ứng dụng. Thư viện nguồn mở FreeType hỗ trợ COLRv1 ở phiên bản 2.13.0 trở lên.
  • Trong trường hợp cuối cùng, bạn có thể gói tệp phông chữ biểu tượng cảm xúc cũ (NotoColorEmoji.ttf) vào APK, mặc dù trong trường hợp đó, ứng dụng của bạn sẽ thiếu các bản cập nhật biểu tượng cảm xúc mới nhất. Để biết thêm thông tin, hãy xem trang dự án GitHub của biểu tượng cảm xúc Noto.

Tăng phiên bản SDK mục tiêu tối thiểu từ 23 lên 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

Bảo mật và quyền riêng tư

Android 15 引入了强大的措施来防范动态密码 (OTP) 欺诈并保护用户的敏感内容,重点是增强通知监听器服务和屏幕共享保护措施。主要增强功能包括从可供不可信应用访问的通知中隐去 OTP、在屏幕共享期间隐藏通知,以及在发布 OTP 时保护应用 activity。这些变更旨在保护用户的敏感内容,使其免受未经授权的操作者的侵害。

开发者需要注意以下事项,以确保其应用与 Android 15 中的变更兼容:

动态密码隐去

Android 会阻止实现 NotificationListenerService 的不受信任应用读取已检测到 OTP 的通知中的未隐去的内容。配套设备管理器关联等受信任应用不受这些限制。

屏幕共享保护

  • 在屏幕共享会话期间,系统会隐藏通知内容,以保护用户的隐私。如果应用实现了 setPublicVersion(),Android 会显示通知的公开版本,该版本在不安全情境中用作替换通知。否则,系统会隐去通知内容,不提供任何其他背景信息。
  • 系统会向远程观看者隐藏密码输入等敏感内容,以防止泄露用户的敏感信息。
  • 如果在屏幕共享期间检测到动态密码,系统会隐藏在该时间段内发布通知的应用的活动。应用内容在启动时会向远程查看器隐藏。
  • 除了 Android 自动识别敏感字段之外,开发者还可以使用 setContentSensitivity 手动将应用的部分标记为敏感,在屏幕共享期间,这些敏感字段会对远程观看者隐藏。
  • 开发者可以选择切换开发者选项下的停用屏幕共享防护选项,以便出于演示或测试目的豁免屏幕共享防护。默认的系统屏幕录制工具不受这些更改的影响,因为录制内容会保留在设备上。

Máy ảnh và nội dung nghe nhìn

Android 15 thực hiện những thay đổi sau đây đối với hành vi của máy ảnh và nội dung nghe nhìn cho tất cả ứng dụng.

Tính năng phát trực tiếp và phát tải xuống âm thanh sẽ vô hiệu hoá các bản âm thanh trực tiếp hoặc bản âm thanh tải xuống đã mở trước đó khi đạt đến giới hạn tài nguyên

Trước Android 15, nếu một ứng dụng yêu cầu phát trực tiếp hoặc phát âm thanh khi một ứng dụng khác đang phát âm thanh và đã đạt đến giới hạn tài nguyên, thì ứng dụng đó sẽ không mở được AudioTrack mới.

Kể từ Android 15, khi một ứng dụng yêu cầu phát trực tiếp hoặc phát tải xuống và đạt đến giới hạn tài nguyên, hệ thống sẽ vô hiệu hoá mọi đối tượng AudioTrack đang mở để ngăn việc thực hiện yêu cầu bản nhạc mới.

(Các kênh âm thanh trực tiếp và tải xuống thường được mở để phát các định dạng âm thanh nén. Các trường hợp sử dụng phổ biến để phát âm thanh trực tiếp bao gồm truyền trực tuyến âm thanh đã mã hoá qua HDMI đến TV. Các bản nhạc tải xuống thường được dùng để phát âm thanh nén trên thiết bị di động có tính năng tăng tốc DSP phần cứng.)

Trải nghiệm người dùng và giao diện người dùng hệ thống

Android 15 có một số thay đổi nhằm tạo ra trải nghiệm người dùng nhất quán và trực quan hơn.

Bật ảnh động xem trước thao tác quay lại cho các ứng dụng đã chọn sử dụng

从 Android 15 开始,预测性返回动画的开发者选项已被移除。现在,如果应用已完全或在 activity 级别选择启用预测性返回手势,则系统会为其显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到了影响,请执行以下操作:

  • 确保您的应用已正确迁移,以使用预测性返回手势。
  • 确保 fragment 转场效果可与预测性返回导航搭配使用。
  • 请弃用动画和框架过渡,改用动画和 androidx 过渡。
  • FragmentManager 不认识的返回堆栈迁移。请改用由 FragmentManager 或 Navigation 组件管理的返回堆栈。

Tiện ích bị tắt khi người dùng buộc dừng một ứng dụng

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

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

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

Khối thanh trạng thái chiếu nội dung đa phương tiện cảnh báo người dùng về việc chia sẻ màn hình, truyền và ghi

Các lỗ hổng liên quan đến tính năng chiếu màn hình làm lộ dữ liệu riêng tư của người dùng, chẳng hạn như thông tin tài chính, vì người dùng không nhận ra màn hình thiết bị của họ đang được chia sẻ.

Đối với các ứng dụng chạy trên thiết bị có Android 15 QPR1 trở lên, một khối thanh trạng thái lớn và nổi bật sẽ cảnh báo người dùng về mọi hoạt động chiếu màn hình đang diễn ra. Người dùng có thể nhấn vào khối này để ngừng chia sẻ, truyền hoặc ghi lại màn hình của họ. Ngoài ra, tính năng chiếu màn hình sẽ tự động dừng khi màn hình thiết bị bị khoá.

Khối thanh trạng thái để chia sẻ màn hình, truyền và ghi.

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

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

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

Hạn chế quyền truy cập mạng ở chế độ nền

在 Android 15 中,如果应用在有效的进程生命周期之外启动网络请求,则会收到异常。通常是 UnknownHostException 或其他与套接字相关的 IOException。在有效生命周期之外发生的网络请求通常是因为应用在不再活跃后,不知不觉地继续发出网络请求。

为缓解此异常,请使用生命周期感知型组件,确保您的网络请求具有生命周期感知功能,并在离开有效的进程生命周期时取消。如果您非常重视即使用户离开应用也要发出网络请求,请考虑使用 WorkManager 调度网络请求,或使用前台服务继续执行对用户可见的任务。

Ngừng sử dụng

Với mỗi bản phát hành, một số API Android cụ thể có thể trở nên lỗi thời hoặc cần được tái cấu trúc để mang lại trải nghiệm tốt hơn cho nhà phát triển hoặc hỗ trợ các tính năng mới của nền tảng. Trong những trường hợp này, chúng tôi chính thức ngừng sử dụng các API lỗi thời và hướng dẫn nhà phát triển sử dụng các API thay thế.

Ngừng hoạt động có nghĩa là chúng tôi đã chấm dứt việc hỗ trợ chính thức cho các API này, nhưng các API này sẽ tiếp tục được cung cấp cho nhà phát triển. Để tìm hiểu thêm về các tính năng đáng chú ý đã ngừng hoạt động trong bản phát hành Android này, hãy xem trang về các tính năng ngừng hoạt động.