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
The intention of the package FLAG_STOPPED
state (which users
can engage in AOSP builds by long-pressing an app icon and selecting "Force
Stop") has always been to keep apps in this state until the user explicitly
removes the app from this state by directly launching the app or indirectly
interacting with the app (through the sharesheet or a widget, selecting the app
as live wallpaper, etc.). In Android 15, we've updated the behavior of the
system to be aligned with this intended behavior. Apps should only be removed
from the stopped state through direct or indirect user action.
To support the intended behavior, in addition to the existing restrictions, the
system also cancels all pending intents when the app enters the
stopped state on a device running Android 15. When the user's actions remove the
app from the stopped state, the ACTION_BOOT_COMPLETED
broadcast is delivered to the app providing an opportunity to re-register any
pending intents.
You can call the new
ApplicationStartInfo.wasForceStopped()
method to confirm whether the app was put into the stopped state.
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).
Benefits and performance gains
Devices configured with 16 KB page sizes use slightly more memory on average, but also gain various performance improvements for both the system and apps:
- Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
- Reduced power draw during app launch: 4.56% reduction on average
- Faster camera launch: 4.48% faster hot starts on average, and 6.60% faster cold starts on average
- Improved system boot time: improved by 8% (approximately 950 milliseconds) on average
These improvements are based on our initial testing, and results on actual devices will likely differ. We'll provide additional analysis of potential gains for apps as we continue our testing.
Check if your app is impacted
If your app uses any native code, then you should rebuild your app with support for 16 KB devices. If you are unsure if your app uses native code, you can use the APK Analyzer to identify whether any native code is present and then check the alignment of ELF segments for any shared libraries that you find.
If your app only uses code written in the Java programming language or in Kotlin, including all libraries or SDKs, then your app already supports 16 KB devices. Nevertheless, we recommend that you test your app in a 16 KB environment to verify that there are no unexpected regressions in app behavior.
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à 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 trên thiết bị để trẻ có thể lưu giữ các ứng dụng nhạy cảm khỏi những cặp mắt tò mò dưới một lớp xác thực bổ sung. Vì ứng dụng ở không gian riêng tư bị hạn chế chế độ hiển thị, một số loại ứng dụng cần lấy các bước bổ sung để có thể xem và tương tác với các ứng dụng trong chế độ 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 sẽ 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 ở 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, thì ứng dụng không thể xác định liệu chúng có đang được sử dụng trong không gian riêng tư hay không, để chúng không thể hiển thị cảnh báo cho người dùng đối với 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 khả năng của tính năng này tác động đến ứng dụng của bạn và có biện pháp xử lý thích hợp (chẳng hạn như thông báo cho người dù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 ứng dụng quan trọng các chức năng khác nhau.
Ứng dụng trình chạy
Nếu phát triển một ứng dụng trình chạy, bạn phải thực hiện những việc sau đây trước khi ứng dụng trong không gian riêng tư sẽ xuất hiện:
- Ứ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ị, tức là
là sở hữu vai trò
ROLE_HOME
. - Ứng dụng phải khai báo
ACCESS_HIDDEN_PROFILES
quyền thông thường trong tệp kê khai của ứng dụng.
Ứ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 đây:
- Ứng dụng của bạn phải có một 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ó khả năng 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 cần đăng ký receiver cho
ACTION_PROFILE_AVAILABLE
vàACTION_PROFILE_UNAVAILABLE
sẽ phát đi thông báo và 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 không gian riêng tư các thay đổi về vùng chứa. 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
The legacy, PNG-based emoji font file (NotoColorEmojiLegacy.ttf
) has been
removed, leaving just the vector-based file. Beginning with Android 13 (API
level 33), the emoji font file used by the system emoji renderer changed from a
PNG-based file to a vector based file. The system retained
the legacy font file in Android 13 and 14 for compatibility reasons, so that
apps with their own font renderers could continue to use the legacy font file
until they were able to upgrade.
To check if your app is affected, search your app's code for references to the
NotoColorEmojiLegacy.ttf
file.
You can choose to adapt your app in a number of ways:
- Use platform APIs for text rendering. You can render text to a bitmap-backed
Canvas
and use that to get a raw image if necessary. - Add COLRv1 font support to your app. The FreeType open source library supports COLRv1 in version 2.13.0 and higher.
- As a last resort, you can bundle the legacy emoji font file
(
NotoColorEmoji.ttf
) into your APK, although in that case your app will be missing the latest emoji updates. For more information, see the Noto Emoji GitHub project page.
Tăng phiên bản SDK mục tiêu tối thiểu từ 23 lên 24
Android 15 builds on the
the changes that were made in Android 14 and extends this
security further. In Android 15, apps with a
targetSdkVersion
lower than 24 can't be installed.
Requiring apps to meet modern API levels helps to ensure better security and
privacy.
Malware often targets lower API levels in order to bypass security and privacy
protections that have been introduced in higher Android versions. For example,
some malware apps use a targetSdkVersion
of 22 to avoid being subjected to the
runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API
level 23). This Android 15 change makes it harder for malware to avoid security
and privacy improvements. Attempting to install an app targeting a lower API
level results in an installation failure, with a message like the following one
appearing in Logcat:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
On devices upgrading to Android 15, any apps with a targetSdkVersion
lower
than 24 remain installed.
If you need to test an app targeting an older API level, use the following ADB command:
adb install --bypass-low-target-sdk-block FILENAME.apk
Bảo mật và quyền riêng tư
Android 15 ra mắt các biện pháp mạnh mẽ để chống gian lận bằng mật mã một lần (OTP) và bảo vệ nội dung nhạy cảm của người dùng, tập trung vào việc tăng cường bảo vệ Dịch vụ trình nghe thông báo và tính năng chia sẻ màn hình. Các tính năng nâng cao chính bao gồm việc loại bỏ mã OTP khỏi thông báo mà các ứng dụng không đáng tin cậy có thể truy cập, ẩn thông báo trong khi chia sẻ màn hình và bảo mật các hoạt động trong ứng dụng khi mã OTP được đăng. Những thay đổi này nhằm bảo vệ nội dung nhạy cảm của người dùng khỏi các bên không được uỷ quyền.
Nhà phát triển cần lưu ý những điều sau để đảm bảo ứng dụng của họ tương thích với các thay đổi trong Android 15:
Xoá OTP
Android sẽ ngăn các ứng dụng không đáng tin cậy triển khai NotificationListenerService
đọc nội dung chưa bị loại bỏ khỏi thông báo khi phát hiện thấy mã xác thực một lần (OTP). Các ứng dụng đáng tin cậy như hiệp hội trình quản lý thiết bị đồng hành được miễn các quy định hạn chế này.
Bảo vệ tính năng chia sẻ màn hình
- Nội dung thông báo sẽ bị ẩn trong các phiên chia sẻ màn hình để bảo vệ quyền riêng tư của người dùng. Nếu ứng dụng triển khai
setPublicVersion()
, Android sẽ hiển thị phiên bản công khai của thông báo đóng vai trò là thông báo thay thế trong các ngữ cảnh không an toàn. Nếu không, nội dung thông báo sẽ bị loại bỏ mà không có thêm ngữ cảnh nào. - Nội dung nhạy cảm như nhập mật khẩu sẽ bị ẩn khỏi người xem từ xa để ngăn việc tiết lộ thông tin nhạy cảm của người dùng.
- Hoạt động của các ứng dụng đăng thông báo trong khi chia sẻ màn hình và phát hiện thấy mã xác thực một lần sẽ bị ẩn. Nội dung ứng dụng bị ẩn khỏi trình xem từ xa khi khởi chạy.
- Ngoài tính năng tự động xác định các trường nhạy cảm của Android, nhà phát triển có thể đánh dấu thủ công các phần của ứng dụng là nhạy cảm bằng cách sử dụng
setContentSensitivity
. Phần này sẽ bị ẩn khỏi người xem từ xa trong khi chia sẻ màn hình. - Nhà phát triển có thể chọn bật/tắt tuỳ chọn Tắt tính năng bảo vệ khi chia sẻ màn hình trong phần Tuỳ chọn dành cho nhà phát triển để được miễn trừ khỏi các biện pháp bảo vệ khi chia sẻ màn hình cho mục đích minh hoạ hoặc thử nghiệm. Trình ghi màn hình hệ thống mặc định sẽ được miễn trừ khỏi những thay đổi này vì bản ghi vẫn nằm trên thiết bị.
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 âm thanh khi tải xuống 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
Before Android 15, if an app requested direct or offload audio playback while
another app was playing audio and the resource limits were reached, the app
would fail to open a new AudioTrack
.
Beginning with Android 15, when an app requests direct or offload
playback and the resource
limits are reached, the system invalidates any currently open
AudioTrack
objects which prevent fulfilling the new track request.
(Direct and offload audio tracks are typically opened for playback of compressed audio formats. Common use-cases for playing direct audio include streaming encoded audio over HDMI to a TV. Offload tracks are typically used to play compressed audio on a mobile device with hardware DSP acceleration.)
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
Beginning in Android 15, the developer option for predictive back animations has been removed. System animations such as back-to-home, cross-task, and cross-activity now appear for apps that have opted in to the predictive back gesture either entirely or at an activity level. If your app is affected, take the following actions:
- Ensure that your app has been properly migrated to use the predictive back gesture.
- Ensure that your fragment transitions work with predictive back navigation.
- Migrate away from animation and framework transitions and use animator and androidx transitions instead.
- Migrate away from back stacks that
FragmentManager
doesn't know about. Use back stacks managed byFragmentManager
or by the Navigation component instead.
Tiện ích bị tắt khi người dùng buộc dừng một ứng dụng
If a user force-stops an app on a device running Android 15, the system temporarily disables all the app's widgets. The widgets are grayed out, and the user cannot interact with them. This is because beginning with Android 15, the system cancels all an app's pending intents when the app is force-stopped.
The system re-enables those widgets the next time the user launches the app.
For more information, see Changes to package stopped state.
Khối thanh trạng thái chiếu nội dung nghe nhìn cảnh báo người dùng về việc chia sẻ màn hình, truyền và ghi
Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared. Android has until now shown screen cast and screen record icons on the status bar, but the icons are small and often overlooked. Also, stopping screen sharing or recording is cumbersome because controls are in Quick Settings.
Android 15 introduces a new status bar chip that is large and prominent, which should alert users to any in-progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded.
To provide an intuitive user experience, screen projection now automatically stops when the device screen is locked.
Benefits and performance gains
The new media projection status bar chip enhances the user experience as follows:
- Alerts users to in-progress screen sharing, casting, or recording
- Enable users to terminate screen projection by tapping the chip
Automatic suspension of screen projection when the device screen is locked ensures user privacy.
Check if your app is impacted
By default, your app includes the new status bar chip and automatically suspends
screen projection when the lock screen activates. Test your app by implementing
the
onStop()
method of the
MediaProjection.Callback
.
Verify that your app responds appropriately when the screen projection stops as
a result of the user tapping the status bar chip or when the lock screen
activates.
Ngừng sử dụng
Với mỗi bản phát hành, một số API Android cụ thể có thể không còn được dùng nữa 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ẽ vẫn đượ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.