Platform Android 15 menyertakan perubahan perilaku yang dapat memengaruhi aplikasi Anda.
Perubahan perilaku berikut ini berlaku untuk semua aplikasi saat dijalankan di Android 15,
terlepas dari targetSdkVersion
. Sebaiknya uji aplikasi Anda, lalu ubah
sesuai kebutuhan untuk mendukung perubahan ini dengan tepat, jika memungkinkan.
Selain itu, pastikan Anda meninjau daftar perubahan perilaku yang hanya memengaruhi aplikasi yang menargetkan Android 15.
Fungsi inti
Android 15 mengubah atau memperluas berbagai kemampuan inti sistem Android.
Perubahan pada status paket dihentikan
Tujuan dari status FLAG_STOPPED
paket (yang
dapat diakses pengguna dalam build AOSP dengan menekan lama ikon aplikasi dan memilih "Force
Stop") adalah untuk mempertahankan aplikasi dalam status ini hingga pengguna secara eksplisit
menghapus aplikasi dari status ini dengan meluncurkan aplikasi secara langsung atau secara tidak
langsung berinteraksi dengan aplikasi (melalui sharesheet atau widget, memilih aplikasi
sebagai wallpaper animasi, dll.). Di Android 15, kami mengupdate perilaku
sistem agar selaras dengan perilaku yang dimaksudkan ini. Aplikasi hanya boleh dihapus
dari status dihentikan melalui tindakan pengguna langsung atau tidak langsung.
Untuk mendukung perilaku yang dimaksud, selain pembatasan yang sudah ada, sistem juga membatalkan semua intent yang tertunda saat aplikasi memasuki
status berhenti di perangkat yang menjalankan Android 15. Saat tindakan pengguna menghapus
aplikasi dari status berhenti, siaran ACTION_BOOT_COMPLETED
akan dikirimkan ke aplikasi sehingga memberikan peluang untuk mendaftarkan ulang
intent yang tertunda.
Anda dapat memanggil metode
ApplicationStartInfo.wasForceStopped()
baru untuk mengonfirmasi apakah aplikasi dialihkan ke status dihentikan.
Dukungan untuk ukuran halaman 16 KB
Sebelumnya, Android hanya mendukung ukuran halaman memori 4 KB, yang memiliki performa memori sistem yang optimal untuk jumlah rata-rata total memori yang perangkat Android. Mulai Android 15, AOSP mendukung perangkat yang dikonfigurasi untuk menggunakan ukuran halaman 16 KB (16 KB perangkat). Jika aplikasi Anda menggunakan library NDK, baik secara langsung atau secara tidak langsung melalui SDK, Anda harus membangun ulang aplikasi agar berfungsi di perangkat 16 KB ini.
Karena produsen perangkat terus membuat perangkat dengan jumlah memori fisik (RAM), banyak perangkat ini akan menggunakan 16 KB (dan akhirnya lebih besar) ukuran halaman untuk mengoptimalkan performa perangkat. Menambahkan dukungan untuk perangkat ukuran halaman 16 KB memungkinkan aplikasi Anda berjalan di perangkat lain dan membantu aplikasi Anda mendapatkan manfaat dari performa terkait peningkatan performa. Tanpa kompilasi ulang, aplikasi mungkin tidak berfungsi di perangkat 16 KB saat diproduksi dalam rilis Android mendatang.
Untuk membantu menambahkan dukungan bagi aplikasi Anda, kami telah memberikan panduan tentang cara memeriksa jika aplikasi Anda terdampak, berikut cara membuat ulang aplikasi (jika ada), dan cara menguji aplikasi Anda di lingkungan berukuran 16 KB menggunakan emulator (termasuk Android 15 image sistem untuk Android Emulator).
Manfaat dan peningkatan performa
配置为使用 16 KB 页面大小的设备平均会使用略多一些的内存,但系统和应用的性能也会得到各种提升:
- 缩短了系统内存压力时的应用启动时间:平均降低了 3.16%;对于我们测试的某些应用而言,改进幅度更大(最高可达 30%)
- 应用启动期间的功耗降低:平均降低了 4.56%
- 相机启动更快:热启动速度平均提高了 4.48%,冷启动速度平均提高了 6.60%
- 缩短了系统启动时间:平均缩短了 8%(约 950 毫秒)
这些改进基于我们的初始测试,实际设备上的结果可能会有所不同。随着测试的继续进行,我们将进一步分析应用的潜在收益。
Periksa apakah aplikasi Anda terpengaruh
Jika aplikasi Anda menggunakan kode native, Anda harus mem-build ulang aplikasi dengan dukungan untuk perangkat 16 KB. Jika tidak yakin apakah aplikasi Anda menggunakan kode native, Anda dapat menggunakan APK Analyzer untuk mengidentifikasi apakah ada kode native, lalu memeriksa perataan segmen ELF untuk library bersama yang Anda temukan.
Jika aplikasi Anda hanya menggunakan kode yang ditulis dalam bahasa pemrograman Java atau di Kotlin, termasuk semua library atau SDK, berarti aplikasi tersebut sudah mendukung perangkat 16 KB. Namun, sebaiknya Anda menguji aplikasi di lingkungan 16 KB untuk memverifikasi bahwa tidak ada regresi yang tidak terduga dalam perilaku aplikasi.
Perubahan yang diperlukan untuk beberapa aplikasi agar mendukung ruang pribadi
私密空间是 Android 15 中的一项新功能,可让用户 在设备上创建一个单独的空间,以便将敏感应用拒之门外 增加了一层额外的身份验证。因为 由于私密空间的公开范围有限,因此某些类型的应用需要 需要完成一些额外步骤才能查看用户私有中的应用并与之互动 空间。
所有应用
由于私密空间中的应用保存在单独的用户个人资料中, 工作资料,则应用不应假定已安装任何 不在主资料中的应用副本位于工作资料中。如果 您的应用具有与工作资料应用相关的逻辑,这类应用会做出这种假设, 您需要调整此逻辑。
医疗应用
当用户锁定私密空间后,私密空间中的所有应用都会停止, 并且这些应用无法执行前台或后台 activity,包括 显示通知。这种行为可能会严重影响 安装在私密空间中的医疗应用的功能。
设置私密空间时,系统会警告用户私密空间 适用于需要执行关键前台或后台任务的应用 活动,例如显示来自医疗应用的通知。不过, 应用无法确定其是否被用在私密空间中; 这样他们就无法针对这种情况向用户显示警告。
出于这些原因,如果您开发了医疗应用,请查看此功能可能会给 影响您的应用并采取适当措施,例如告知用户不要 在私密空间中安装您的应用,以免干扰关键应用 功能。
启动器应用
如果您要开发启动器应用,必须先执行以下操作,然后再运行 以下私密空间:
- 您必须将应用指定为设备的默认启动器应用,
具有
ROLE_HOME
角色。 - 您的应用必须声明
ACCESS_HIDDEN_PROFILES
普通权限。
声明 ACCESS_HIDDEN_PROFILES
权限的启动器应用必须处理
私密空间的使用场景如下:
- 您的应用必须为安装在
私密空间使用
getLauncherUserInfo()
方法 确定正在处理的用户个人资料类型。 - 用户必须能够隐藏和显示私密空间容器。
- 用户必须能够锁定和解锁私密空间容器。使用
requestQuietModeEnabled()
方法锁定(通过 传递true
)或解锁(通过传递false
)私密空间。 处于锁定状态时,私密空间容器中的任何应用都不应可见或 可通过搜索等机制发现。您的应用应注册 接收器
ACTION_PROFILE_AVAILABLE
和ACTION_PROFILE_UNAVAILABLE
广播,并更新 私密空间处于锁定或解锁状态时应用中的界面 容器更改这两种广播都包含EXTRA_USER
,您的应用可以使用它来引用 个人资料用户。您还可以使用
isQuietModeEnabled()
方法 检查私密空间配置文件是否处于锁定状态。
应用商店应用
私密空间包括“安装应用”启动隐式
intent 来将应用安装到用户的私密空间中。为了让您的应用
收到此隐式 intent,请声明 <intent-filter>
在应用的清单文件中,使用 <category>
CATEGORY_APP_MARKET
。
Font emoji berbasis PNG dihapus
基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf
) 已
只留下基于矢量的文件从 Android 13 (API) 开始
级别 33),系统表情符号渲染程序使用的表情符号字体文件已从
PNG 文件转换为矢量文件。系统保留了
Android 13 和 14 中的旧版字体文件。
具有自己的字体渲染程序的应用可以继续使用旧版字体文件
直到能够升级为止
要查看您的应用是否会受到影响,请在应用的代码中搜索对
NotoColorEmojiLegacy.ttf
文件。
您可以选择以多种方式调整您的应用:
- 使用平台 API 进行文本渲染。您可以将文本渲染为基于位图的
Canvas
,并在必要时使用它获取原始图像。 - 向您的应用添加 COLRv1 字体支持。FreeType 开源库 在版本 2.13.0 中支持 COLRv1,并且 。
- 万不得已时,可以将旧版表情符号字体文件打包
(
NotoColorEmoji.ttf
) 复制到您的 APK 中, 但在这种情况下,您的应用将缺少最新的表情符号更新。对于 请参阅 Noto 表情符号 GitHub 项目 页面。
Meningkatkan versi SDK target minimum dari 23 menjadi 24
Android 15 dibuat berdasarkan
perubahan yang dibuat di Android 14 dan memperluasnya
keamanan lebih lanjut. Di Android 15, aplikasi dengan
targetSdkVersion
yang lebih rendah dari 24 tidak dapat diinstal.
Mewajibkan aplikasi memenuhi API level modern membantu memastikan keamanan dan
privasi.
Malware sering kali menargetkan API level yang lebih rendah untuk mengabaikan keamanan dan privasi
yang telah diperkenalkan di versi
Android yang lebih tinggi. Misalnya,
beberapa aplikasi malware menggunakan targetSdkVersion
dari 22 agar tidak dikenai
model izin runtime yang diperkenalkan pada tahun 2015 oleh Android 6.0 Marshmallow (API
level 23). Perubahan Android 15 ini mempersulit malware untuk menghindari keamanan
dan peningkatan privasi. Mencoba menginstal aplikasi yang menargetkan API yang lebih rendah
tingkat yang mengakibatkan kegagalan instalasi, dengan pesan seperti berikut
muncul di Logcat:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
Pada perangkat yang diupgrade ke Android 15, aplikasi apa pun dengan targetSdkVersion
lebih rendah
dari 24 unit organisasi yang
tetap terinstal.
Jika Anda perlu menguji aplikasi yang menargetkan API level lama, gunakan perintah ADB berikut:
adb install --bypass-low-target-sdk-block FILENAME.apk
Keamanan dan privasi
Android 15 引入了强大的措施来防范动态密码 (OTP) 欺诈并保护用户的敏感内容,重点是增强通知监听器服务和屏幕共享保护措施。主要增强功能包括从可供不可信应用访问的通知中隐去 OTP、在屏幕共享期间隐藏通知,以及在发布 OTP 时保护应用 activity。这些变更旨在保护用户的敏感内容,使其免受未经授权的操作者的侵害。
开发者需要注意以下事项,以确保其应用与 Android 15 中的变更兼容:
动态密码隐去
Android 会阻止实现 NotificationListenerService
的不受信任应用读取已检测到 OTP 的通知中的未隐去的内容。配套设备管理器关联等受信任应用不受这些限制。
屏幕共享保护
- 在屏幕共享会话期间,系统会隐藏通知内容,以保护用户的隐私。如果应用实现了
setPublicVersion()
,Android 会显示通知的公开版本,该版本在不安全情境中用作替换通知。否则,系统会隐去通知内容,不提供任何其他背景信息。 - 系统会向远程观看者隐藏密码输入等敏感内容,以防止泄露用户的敏感信息。
- 如果在屏幕共享期间检测到动态密码,系统会隐藏在该时间段内发布通知的应用的活动。应用内容在启动时会向远程查看器隐藏。
- 除了 Android 自动识别敏感字段之外,开发者还可以使用
setContentSensitivity
手动将应用的部分标记为敏感,在屏幕共享期间,这些敏感字段会对远程观看者隐藏。 - 开发者可以选择切换开发者选项下的停用屏幕共享防护选项,以便出于演示或测试目的豁免屏幕共享防护。默认的系统屏幕录制工具不受这些更改的影响,因为录制内容会保留在设备上。
Kamera dan media
Android 15 membuat perubahan berikut pada perilaku kamera dan media untuk semua aplikasi.
Pemutaran audio langsung dan offload akan membatalkan trek audio langsung atau offload yang sebelumnya terbuka saat batas resource tercapai
Sebelum Android 15, jika aplikasi meminta pemutaran audio langsung atau memindahkan pemutaran audio saat
aplikasi lain memutar audio dan batas resource tercapai, aplikasi
akan gagal membuka AudioTrack
baru.
Mulai Android 15, saat aplikasi meminta pemutaran langsung atau
offload dan batas resource tercapai, sistem akan membatalkan semua objek
AudioTrack
yang saat ini terbuka sehingga mencegah pemenuhan permintaan jalur baru.
(Trek audio langsung dan offload biasanya dibuka untuk pemutaran format audio yang dikompresi. Kasus penggunaan umum untuk memutar audio langsung mencakup streaming audio yang dienkode melalui HDMI ke TV. Trek offload biasanya digunakan untuk memutar audio yang dikompresi di perangkat seluler dengan akselerasi DSP hardware.)
Pengalaman pengguna dan UI sistem
Android 15 menyertakan beberapa perubahan yang dimaksudkan untuk menciptakan pengalaman pengguna yang lebih konsisten dan intuitif.
Animasi kembali prediktif diaktifkan untuk aplikasi yang ikut serta
从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:
- 确保您的应用已正确迁移,以使用预测性返回手势。
- 确保您的 fragment 转换支持预测性返回导航。
- 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
- 从
FragmentManager
不知道的返回堆栈中迁出。请改用由FragmentManager
或 Navigation 组件管理的返回堆栈。
Widget dinonaktifkan saat pengguna menghentikan paksa aplikasi
Jika pengguna menghentikan aplikasi secara paksa di perangkat yang menjalankan Android 15, sistem akan menonaktifkan semua widget aplikasi untuk sementara. Widget berwarna abu-abu, dan pengguna tidak dapat berinteraksi dengan widget tersebut. Hal ini karena mulai Android 15, sistem membatalkan semua intent tertunda aplikasi saat aplikasi dihentikan paksa.
Sistem mengaktifkan kembali widget tersebut saat pengguna meluncurkan aplikasi lagi.
Untuk mengetahui informasi selengkapnya, lihat Perubahan pada status paket dihentikan.
Chip status bar proyeksi media memberi tahu pengguna tentang berbagi layar, transmisi, dan perekaman
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.
Penghentian penggunaan
Dengan setiap rilis, API Android tertentu mungkin tidak digunakan lagi atau harus difaktorkan ulang untuk memberikan pengalaman developer yang lebih baik atau mendukung kemampuan platform baru. Dalam kasus ini, kami secara resmi menghentikan API yang tidak digunakan lagi dan mengarahkan developer ke API alternatif yang akan digunakan.
Penghentian berarti bahwa kami telah mengakhiri dukungan resmi untuk API, tetapi akan tetap tersedia bagi developer. Untuk mempelajari lebih lanjut penghentian penggunaan yang penting dalam rilis Android ini, lihat halaman penghentian penggunaan.