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
Mục đích của trạng thái FLAG_STOPPED
của gói (người dùng có thể tham gia vào các bản dựng AOSP bằng cách nhấn và giữ biểu tượng ứng dụng rồi chọn "Buộc dừng") luôn là giữ ứng dụng ở trạng thái này cho đến khi người dùng xoá ứng dụng khỏi trạng thái này một cách rõ ràng bằng cách trực tiếp khởi chạy ứng dụng hoặc tương tác gián tiếp với ứng dụng (thông qua trang chia sẻ nội dung hoặc tiện ích, chọn ứng dụng làm hình nền động, v.v.). Trên Android 15, chúng tôi sẽ cập nhật hành vi của hệ thống để phù hợp với hành vi dự kiến này. Bạn chỉ nên xoá ứng dụng khỏi trạng thái đã dừng thông qua thao tác trực tiếp hoặc gián tiếp của người dùng.
Để hỗ trợ hành vi dự kiến, ngoài các hạn chế hiện có, hệ thống cũng huỷ mọi ý định đang chờ xử lý khi ứng dụng chuyển sang trạng thái đã dừng trên thiết bị chạy Android 15. Khi các thao tác của người dùng xoá ứng dụng khỏi trạng thái đã dừng, thông báo truyền tin ACTION_BOOT_COMPLETED
sẽ được gửi đến ứng dụng, mang đến cơ hội đăng ký lại mọi ý định đang chờ xử lý.
Bạn có thể gọi phương thức ApplicationStartInfo.wasForceStopped()
mới để xác nhận xem ứng dụng có được đưa vào trạng thái dừng hay không.
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).
Lợi ích và mức tăng hiệu suất
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ử.
Kiểm tra xem ứng dụng của bạn có bị ảnh hưởng không
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ó hiện tượng hồi quy ngoài dự kiế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à 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
Tệp phông chữ biểu tượng cảm xúc dựa trên PNG cũ (NotoColorEmojiLegacy.ttf
) đã được
đã bị xoá mà chỉ để 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 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 đã duy trì
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 kiếm mã của ứng dụng để tham chiếu đến
Tệp NotoColorEmojiLegacy.ttf
.
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 dưới dạng bitmap
Canvas
rồi sử dụng hình ảnh đó để 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 của bạn. Thư viện nguồn mở FreeType hỗ trợ COLRv1 trong phiên bản 2.13.0 và cao hơn.
- Khi không còn cách nào khác, 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 của bạn, 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. Cho để biết thêm thông tin, hãy xem dự án GitHub về Emoji Noto .
Tăng phiên bản SDK mục tiêu tối thiểu từ 23 lên 24
Android 15 được xây dựng dựa trên
những thay đổi đã được thực hiện trong Android 14 và mở rộng
tăng cường bảo mật. Trong Android 15, ứng dụng có
Không thể cài đặt targetSdkVersion
thấp hơn 24.
Việc yêu cầu các ứng dụng đáp ứng các cấp độ API hiện đại giúp đảm bảo tính bảo mật và
quyền riêng tư.
Phần mềm độc hại thường nhắm đến các cấp độ API thấp hơn để né tránh tính bảo mật và quyền riêng tư
được giới thiệu trong các phiên bản Android cao hơn. Ví dụ: một số ứng dụng độc hại sử dụng targetSdkVersion
22 để tránh phải tuân theo mô hình quản lý quyền khi bắt đầu chạy ra mắt năm 2015 trên Android 6.0 Marshmallow (API cấp 23). Thay đổi này của Android 15 khiến phần mềm độc hại khó tránh được bảo mật hơn
và quyền riêng tư. Đang cố cài đặt một ứng dụng nhắm đến API thấp hơn
cấp độ dẫn đến lỗi cài đặt, với một thông báo như sau
xuất hiện trong Logcat:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
Trên các thiết bị nâng cấp lên Android 15, mọi ứng dụng có targetSdkVersion
thấp hơn
vẫn còn cài đặt hơn 24.
Nếu cần kiểm thử một ứng dụng nhắm đến cấp độ API cũ hơn, hãy dùng lệnh ADB sau đây:
adb install --bypass-low-target-sdk-block FILENAME.apk
Máy ảnh và nội dung nghe nhìn
Android 15 thực hiện các thay đổi sau đây đối với hành vi của máy ảnh và nội dung nghe nhìn đối với 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
Trước Android 15, nếu một ứng dụng yêu cầu phát âm thanh trực tiếp hoặc giảm tải trong 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 chế độ phát trực tiếp hoặc giảm tải và đạt đến giới hạn về tài nguyên, hệ thống sẽ vô hiệu hoá mọi đối tượng AudioTrack
đang mở do đó ngăn cản việc thực hiện yêu cầu theo dõi mới.
(Các bản âm thanh trực tiếp và giảm tải thường được mở để phát các định dạng âm thanh nén. Một số trường hợp sử dụng phổ biến để phát âm thanh trực tiếp: phát trực tuyến âm thanh được mã hoá qua HDMI đến TV. Các bản nhạc không tải thường 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, 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
Kể từ Android 15, tuỳ chọn dành cho nhà phát triển đối với ảnh động xem trước thao tác quay lại đã bị xoá. Giờ đây, ảnh động hệ thống như quay lại màn hình chính, nhiều tác vụ và trên nhiều hoạt động sẽ xuất hiện cho các ứng dụng đã chọn sử dụng tính năng xem trước thao tác quay lại hoàn toàn hoặc ở cấp hoạt động. Nếu ứng dụng của bạn bị ảnh hưởng, hãy làm những việc sau:
- Đảm bảo rằng ứng dụng của bạn đã được di chuyển đúng cách để sử dụng cử chỉ xem trước thao tác quay lại.
- Đảm bảo rằng các hiệu ứng chuyển đổi mảnh hoạt động với tính năng điều hướng xem trước thao tác quay lại.
- Di chuyển khỏi các hiệu ứng chuyển động và khung, đồng thời sử dụng các hiệu ứng chuyển đổi ảnh động và androidx.
- Di chuyển khỏi các ngăn xếp lui mà
FragmentManager
không biết. Thay vào đó, hãy sử dụng các ngăn xếp lui doFragmentManager
quản lý hoặc bằng thành phần Điều hướng.
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 một thiết bị đang chạy Android 15, thì hệ thống sẽ tạm thời vô hiệu hoá tất cả các tiện ích của ứng dụng đó. Các tiện ích sẽ chuyển sang 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ỷ mọi ý định đang chờ xử lý của một ứng dụng khi ứng dụng bị buộc dừng.
Hệ thống sẽ bật lại những 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 bài viết Thay đổi đối với trạng thái đã dừng của gói.
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.