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
Android 过去仅支持 4 KB 内存页面大小, 优化了系统内存性能,以针对 Android 设备通常具备的功能。从 Android 15 开始,AOSP 支持 配置为使用 16 KB (16 KB) 页面大小的设备 设备)。如果您的应用使用任何 NDK 库,请直接使用 或者通过 SDK 间接创建,那么,您需要重新构建自己的应用 支持这些 16KB 设备。
随着设备制造商不断打造出 物理内存 (RAM),许多此类设备都会采用 16KB(以及 页面大小以优化设备的性能。正在添加 支持 16 KB 页面大小的设备,可使您的应用在这些设备上运行 并有助于您的应用从相关的广告效果中获益 改进。如果不重新编译,应用可能无法在 16KB 设备上运行 在未来的 Android 版本中正式推出。
为帮助您为应用添加支持,我们提供了有关如何检查 如果您的应用受到影响 重新构建您的应用(如果适用),以及如何在 Google Play 中 使用模拟器(包括 Android 15)的 16 KB 环境 系统映像)。
优势和性能提升
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ư
Không gian riêng tư là một tính năng mới trong Android 15, cho phép người dùng tạo một không gian riêng biệt trên thiết bị của họ để bảo vệ các ứng dụng nhạy cảm khỏi những ánh mắt tò mò, thông qua một lớp xác thực bổ sung. Vì các ứng dụng trong không gian riêng tư bị hạn chế chế độ hiển thị, nên một số loại ứng dụng cần thực hiện thêm các bước để có thể xem và tương tác với các ứng dụng trong không gian riêng tư của người dùng.
Tất cả ứng dụng
Vì các ứng dụng trong không gian riêng tư được lưu giữ trong một hồ sơ người dùng riêng biệt, tương tự như hồ sơ công việc, nên các ứng dụng không được giả định rằng mọi bản sao đã cài đặt của ứng dụng không có trong hồ sơ chính đều nằm trong hồ sơ công việc. Nếu ứng dụng của bạn có logic liên quan đến các ứng dụng hồ sơ công việc đưa ra giả định này, bạn cần điều chỉnh logic này.
Ứng dụng y tế
Khi người dùng khoá không gian riêng tư, tất cả ứng dụng trong không gian riêng tư sẽ bị dừng và các ứng dụng đó không thể thực hiện hoạt động trên nền trước hoặc nền sau, bao gồm cả việc hiển thị thông báo. Hành vi này có thể ảnh hưởng nghiêm trọng đến việc sử dụng và chức năng của các ứng dụng y tế được cài đặt trong không gian riêng tư.
Trải nghiệm thiết lập không gian riêng tư cảnh báo người dùng rằng không gian riêng tư không phù hợp với những ứng dụng cần thực hiện các hoạt động quan trọng trên nền trước hoặc nền, chẳng hạn như hiển thị thông báo từ các ứng dụng y tế. Tuy nhiên, các ứng dụng không thể xác định xem chúng có đang được sử dụng trong không gian riêng tư hay không, vì vậy, các ứng dụng không thể hiển thị cảnh báo cho người dùng trong trường hợp này.
Vì những lý do này, nếu bạn phát triển một ứng dụng y tế, hãy xem xét mức độ ảnh hưởng của tính năng này đến ứng dụng của bạn và thực hiện các hành động thích hợp (chẳng hạn như thông báo cho người dùng không cài đặt ứng dụng của bạn trong không gian riêng tư) để tránh làm gián đoạn các chức năng quan trọng của ứng dụng.
Ứng dụng trình chạy
Nếu phát triển ứng dụng trình chạy, bạn phải làm như sau thì các ứng dụng trong không gian riêng mới hiển thị:
- Ứng dụng của bạn phải được chỉ định làm ứng dụng trình chạy mặc định cho thiết bị, nghĩa là sở hữu vai trò
ROLE_HOME
. - Ứng dụng phải khai báo quyền thông thường
ACCESS_HIDDEN_PROFILES
trong tệp kê khai của ứng dụng.
Các ứng dụng trình chạy khai báo quyền ACCESS_HIDDEN_PROFILES
phải xử lý các trường hợp sử dụng không gian riêng tư sau:
- Ứng dụng của bạn phải có vùng chứa trình chạy riêng cho các ứng dụng được cài đặt trong không gian riêng tư. Sử dụng phương thức
getLauncherUserInfo()
để xác định loại hồ sơ người dùng đang được xử lý. - Người dùng phải có thể ẩn và hiện vùng chứa không gian riêng tư.
- Người dùng phải có thể khoá và mở khoá vùng chứa không gian riêng tư. Sử dụng phương thức
requestQuietModeEnabled()
để khoá (bằng cách truyềntrue
) hoặc mở khoá (bằng cách truyềnfalse
) không gian riêng tư. Khi khoá, không có ứng dụng nào trong vùng chứa không gian riêng tư sẽ hiển thị hoặc được phát hiện thông qua các cơ chế như tìm kiếm. Ứng dụng của bạn phải đăng ký một trình thu cho các thông báo truyền tin
ACTION_PROFILE_AVAILABLE
vàACTION_PROFILE_UNAVAILABLE
, đồng thời cập nhật giao diện người dùng trong ứng dụng khi trạng thái khoá hoặc mở khoá của vùng chứa không gian riêng thay đổi. Cả hai thông báo truyền tin này đều bao gồmEXTRA_USER
mà ứng dụng của bạn có thể dùng để tham chiếu đến người dùng hồ sơ riêng tư.Bạn cũng có thể sử dụng phương thức
isQuietModeEnabled()
để kiểm tra xem hồ sơ không gian riêng tư có bị khoá hay không.
Ứng dụng trên cửa hàng ứng dụng
Không gian riêng tư có một nút "Cài đặt ứng dụng" sẽ khởi chạy một ý định ngầm ẩn để cài đặt ứng dụng vào không gian riêng tư của người dùng. Để ứng dụng của bạn nhận được ý định ngầm ẩn này, hãy khai báo <intent-filter>
trong tệp kê khai của ứng dụng bằng <category>
của 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
Nếu người dùng buộc dừng một ứng dụng trên thiết bị chạy Android 15, thì hệ thống sẽ tạm thời tắt tất cả tiện ích của ứng dụng đó. Các tiện ích có màu xám và người dùng không thể tương tác với các tiện ích đó. Lý do là kể từ Android 15, hệ thống sẽ huỷ tất cả ý định đang chờ xử lý của ứng dụng khi ứng dụng bị buộc dừng.
Hệ thống sẽ bật lại các tiện ích đó vào lần tiếp theo người dùng khởi chạy ứng dụng.
Để biết thêm thông tin, hãy xem phần Thay đổi đối với trạng thái gói đã dừng.
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á.

检查您的应用是否受到影响
默认情况下,您的应用会包含状态栏条状标签,并会在锁定屏幕激活时自动暂停屏幕投影。
如需详细了解如何针对这些用例测试应用,请参阅状态栏条状标签和自动停止。
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.