Perubahan perilaku: semua aplikasi

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 modifikasi 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

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

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

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

Dukungan untuk ukuran halaman 16 KB

Sebelumnya, Android hanya mendukung ukuran halaman memori 4 KB, yang telah mengoptimalkan performa memori sistem untuk jumlah total memori rata-rata yang biasanya dimiliki perangkat Android. Mulai dari Android 15, AOSP mendukung perangkat yang dikonfigurasi untuk menggunakan ukuran halaman 16 KB (perangkat 16 KB). Jika aplikasi Anda menggunakan library NDK, baik secara langsung maupun tidak langsung melalui SDK, Anda harus membangun ulang aplikasi agar dapat berfungsi di perangkat 16 KB ini.

Seiring produsen perangkat terus membuat perangkat dengan jumlah memori fisik (RAM) yang lebih besar, banyak perangkat ini akan mengadopsi ukuran halaman 16 KB (dan pada akhirnya lebih besar) untuk mengoptimalkan performa perangkat. Menambahkan dukungan untuk perangkat dengan ukuran halaman 16 KB memungkinkan aplikasi Anda berjalan di perangkat ini dan membantu aplikasi Anda mendapatkan manfaat dari peningkatan performa terkait. Tanpa dikompilasi ulang, aplikasi tidak akan berfungsi di perangkat 16 KB dalam rilis Android mendatang.

Untuk membantu Anda menambahkan dukungan bagi aplikasi, kami telah memberikan panduan tentang cara memeriksa apakah aplikasi Anda terpengaruh, cara membangun ulang aplikasi (jika berlaku), dan cara menguji aplikasi Anda di lingkungan 16 KB menggunakan emulator (termasuk image sistem Android 15 untuk Android Emulator).

Manfaat dan peningkatan performa

Perangkat yang dikonfigurasi dengan ukuran halaman 16 KB menggunakan memori yang sedikit lebih banyak secara rata-rata, tetapi juga mendapatkan berbagai peningkatan performa untuk sistem dan aplikasi:

  • Waktu peluncuran aplikasi lebih rendah saat sistem berada dalam tekanan memori: rata-rata 3,16% lebih rendah, dengan peningkatan yang lebih signifikan (hingga 30%) untuk beberapa aplikasi yang kami uji
  • Mengurangi penggunaan daya selama peluncuran aplikasi: Pengurangan rata-rata 4,56%
  • Peluncuran kamera lebih cepat: rata-rata hot start 4,48% lebih cepat dan cold start 6,60% lebih cepat
  • Waktu booting sistem yang lebih baik: rata-rata meningkat sebesar 8% (sekitar 950 milidetik)

Peningkatan ini didasarkan pada pengujian awal kami, dan hasil pada perangkat aktual kemungkinan akan berbeda. Kami akan memberikan analisis tambahan tentang potensi keuntungan untuk aplikasi saat kami melanjutkan pengujian.

Periksa apakah aplikasi Anda terpengaruh

Jika aplikasi Anda menggunakan kode native, Anda harus membangun ulang aplikasi dengan dukungan untuk perangkat 16 KB. Jika tidak yakin apakah aplikasi Anda menggunakan kode native atau tidak, Anda dapat menggunakan APK Analyzer untuk mengidentifikasi apakah ada kode native atau tidak, lalu memeriksa perataan segmen ELF untuk library bersama yang Anda temukan. Android Studio juga menyediakan fitur yang membantu Anda mendeteksi masalah perataan secara otomatis.

Jika aplikasi Anda hanya menggunakan kode yang ditulis dalam bahasa pemrograman Java atau di Kotlin, termasuk semua library atau SDK, berarti aplikasi Anda sudah mendukung perangkat 16 KB. Namun, sebaiknya Anda menguji aplikasi di lingkungan 16 KB untuk memverifikasi bahwa tidak ada regresi perilaku aplikasi yang tidak terduga.

Perubahan yang diperlukan agar beberapa aplikasi mendukung ruang privasi

Ruang privasi adalah fitur baru di Android 15 yang memungkinkan pengguna membuat ruang terpisah di perangkat mereka tempat mereka dapat menjaga aplikasi sensitif agar tidak dilihat orang lain, di bawah lapisan autentikasi tambahan. Karena aplikasi di ruang pribadi memiliki visibilitas terbatas, beberapa jenis aplikasi perlu mengambil langkah tambahan agar dapat melihat dan berinteraksi dengan aplikasi di ruang pribadi pengguna.

Semua aplikasi

Karena aplikasi di ruang pribadi disimpan dalam profil pengguna terpisah, mirip dengan profil kerja, aplikasi tidak boleh mengasumsikan bahwa salinan aplikasi yang diinstal yang tidak ada di profil utama berada di profil kerja. Jika aplikasi Anda memiliki logika yang terkait dengan aplikasi profil kerja yang membuat asumsi ini, Anda harus menyesuaikan logika ini.

Aplikasi medis

Saat pengguna mengunci ruang pribadi, semua aplikasi di ruang pribadi akan dihentikan, dan aplikasi tersebut tidak dapat melakukan aktivitas latar depan atau latar belakang, termasuk menampilkan notifikasi. Perilaku ini dapat berdampak signifikan pada penggunaan dan fungsi aplikasi medis yang diinstal di ruang privasi.

Pengalaman penyiapan ruang privasi memperingatkan pengguna bahwa ruang privasi tidak cocok untuk aplikasi yang perlu melakukan aktivitas latar depan atau latar belakang penting, seperti menampilkan notifikasi dari aplikasi medis. Namun, aplikasi tidak dapat menentukan apakah aplikasi tersebut digunakan di ruang pribadi atau tidak, sehingga aplikasi tidak dapat menampilkan peringatan kepada pengguna untuk kasus ini.

Karena alasan ini, jika Anda mengembangkan aplikasi medis, tinjau pengaruh fitur ini terhadap aplikasi Anda dan ambil tindakan yang sesuai—seperti memberi tahu pengguna untuk tidak menginstal aplikasi Anda di ruang pribadi—untuk menghindari gangguan pada kemampuan aplikasi yang penting.

Aplikasi peluncur

Jika mengembangkan aplikasi peluncur, Anda harus melakukan hal berikut sebelum aplikasi di ruang pribadi dapat dilihat:

  1. Aplikasi Anda harus ditetapkan sebagai aplikasi peluncur default untuk perangkat, yaitu memiliki peran ROLE_HOME.
  2. Aplikasi Anda harus mendeklarasikan izin normal ACCESS_HIDDEN_PROFILES di file manifes aplikasi Anda.

Aplikasi peluncur yang mendeklarasikan izin ACCESS_HIDDEN_PROFILES harus menangani kasus penggunaan ruang pribadi berikut:

  1. Aplikasi Anda harus memiliki penampung peluncur terpisah untuk aplikasi yang diinstal di ruang pribadi. Gunakan metode getLauncherUserInfo() untuk menentukan jenis profil pengguna yang ditangani.
  2. Pengguna harus dapat menyembunyikan dan menampilkan penampung ruang pribadi.
  3. Pengguna harus dapat mengunci dan membuka kunci penampung ruang pribadi. Gunakan metode requestQuietModeEnabled() untuk mengunci (dengan meneruskan true) atau membuka kunci (dengan meneruskan false) ruang pribadi.
  4. Saat terkunci, tidak ada aplikasi di penampung ruang pribadi yang dapat dilihat atau ditemukan melalui mekanisme seperti penelusuran. Aplikasi Anda harus mendaftarkan penerima untuk siaran ACTION_PROFILE_AVAILABLE dan ACTION_PROFILE_UNAVAILABLE serta memperbarui UI di aplikasi Anda saat status penampung ruang pribadi terkunci atau tidak terkunci berubah. Kedua siaran ini menyertakan EXTRA_USER, yang dapat digunakan aplikasi Anda untuk merujuk ke pengguna profil pribadi.

    Anda juga dapat menggunakan metode isQuietModeEnabled() untuk memeriksa apakah profil ruang pribadi terkunci atau tidak.

Aplikasi app store

Ruang pribadi menyertakan tombol "Instal Aplikasi" yang meluncurkan intent implisit untuk menginstal aplikasi ke ruang pribadi pengguna. Agar aplikasi Anda menerima intent implisit ini, deklarasikan <intent-filter> dalam file manifes aplikasi dengan <category> dari CATEGORY_APP_MARKET.

Font emoji berbasis PNG dihapus

我们移除了基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf),只保留了基于矢量的文件。从 Android 13(API 级别 33)开始,系统表情符号渲染程序使用的表情符号字体文件已从基于 PNG 的文件更改为基于矢量的文件。出于兼容性原因,系统在 Android 13 和 14 中保留了旧版字体文件,以便具有自己的字体渲染程序的应用在能够升级之前继续使用旧版字体文件。

如需检查您的应用是否受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf 文件的引用。

您可以通过多种方式自适应应用:

  • 使用平台 API 进行文本渲染。您可以将文本渲染到基于位图的 Canvas,并在必要时使用该 Canvas 获取原始图片。
  • 为您的应用添加 COLRv1 字体支持。FreeType 开源库在 2.13.0 版及更高版本中支持 COLRv1。
  • 作为最后的手段,您可以将旧版表情符号字体文件 (NotoColorEmoji.ttf) 捆绑到 APK 中,但在这种情况下,您的应用将缺少最新的表情符号更新。如需了解详情,请参阅 Noto Emoji GitHub 项目页面

Meningkatkan versi SDK target minimum dari 23 menjadi 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

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 pelepasan membatalkan trek audio langsung atau pelepasan yang dibuka sebelumnya saat batas resource tercapai

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.)

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 memilih ikut serta

Mulai Android 15, opsi developer untuk animasi kembali prediktif telah dihapus. Animasi sistem seperti kembali ke layar utama, lintas tugas, dan lintas aktivitas kini muncul untuk aplikasi yang telah mengaktifkan gestur kembali prediktif secara keseluruhan atau di tingkat aktivitas. Jika aplikasi Anda terpengaruh, lakukan tindakan berikut:

  • Pastikan aplikasi Anda telah dimigrasikan dengan benar untuk menggunakan gestur kembali prediktif.
  • Pastikan transisi fragmen Anda berfungsi dengan navigasi kembali prediktif.
  • Bermigrasi dari animasi dan transisi framework, lalu gunakan transisi animator dan androidx.
  • Bermigrasi dari data sebelumnya yang tidak diketahui FragmentManager. Gunakan data sebelumnya yang dikelola oleh FragmentManager atau oleh komponen Navigasi.

Widget dinonaktifkan saat pengguna menghentikan aplikasi secara paksa

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.

Chip status bar proyeksi media memberi tahu pengguna tentang berbagi layar, transmisi, dan perekaman

屏幕投影漏洞会泄露用户的私密数据(例如财务信息),因为用户不知道自己的设备屏幕正在共享。

对于搭载 Android 15 QPR1 或更高版本的设备上运行的应用,系统会在状态栏中显示一个醒目的大条状标签,以提醒用户正在进行的任何屏幕投影。用户可以点按该条状标签,停止共享、投放或录制其屏幕。此外,当设备屏幕锁定时,屏幕投影会自动停止。

Chip status bar untuk berbagi layar, transmisi, dan perekaman.

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

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

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

Pembatasan akses jaringan latar belakang

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

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

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 penggunaan 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 penting dalam rilis Android ini, lihat halaman penghentian penggunaan.