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

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.

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

Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.

All apps

Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.

Medical apps

When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.

The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.

For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.

Launcher apps

If you develop a launcher app, you must do the following before apps in the private space will be visible:

  1. Your app must be assigned as the default launcher app for the device—that is, possessing the ROLE_HOME role.
  2. Your app must declare the ACCESS_HIDDEN_PROFILES normal permission in your app's manifest file.

Launcher apps that declare the ACCESS_HIDDEN_PROFILES permission must handle the following private space use cases:

  1. Your app must have a separate launcher container for apps installed in the private space. Use the getLauncherUserInfo() method to determine which type of user profile is being handled.
  2. The user must be able to hide and show the private space container.
  3. The user must be able to lock and unlock the private space container. Use the requestQuietModeEnabled() method to lock (by passing true) or unlock (by passing false) the private space.
  4. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the ACTION_PROFILE_AVAILABLE and ACTION_PROFILE_UNAVAILABLE broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts include EXTRA_USER, which your app can use to refer to the private profile user.

    You can also use the isQuietModeEnabled() method to check whether the private space profile is locked or not.

App store apps

The private space includes an "Install Apps" button that launches an implicit intent to install apps into the user's private space. In order for your app to receive this implicit intent, declare an <intent-filter> in your app's manifest file with a <category> of CATEGORY_APP_MARKET.

Font emoji berbasis PNG dihapus

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.

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 introduces robust measures to combat one-time passcode (OTP) fraud and to protect the user's sensitive content, focusing on hardening the Notification Listener Service and screenshare protections. Key enhancements include redacting OTPs from notifications accessible to untrusted apps, hiding notifications during screenshare, and securing app activities when OTPs are posted. These changes aim to keep the user's sensitive content safe from unauthorized actors.

Developers need to be aware of the following to ensure their apps are compatible with the changes in Android 15:

OTP Redaction

Android will stop untrusted apps that implement a NotificationListenerService from reading unredacted content from notifications where an OTP has been detected. Trusted apps such as companion device manager associations are exempt from these restrictions.

Screenshare Protection

  • Notification content is hidden during screen sharing sessions to preserve the user's privacy. If the app implements setPublicVersion(), Android shows the public version of the notification which serves as a replacement notification in insecure contexts. Otherwise, the notification content is redacted without any further context.
  • Sensitive content like password input is hidden from remote viewers to prevent revealing the user's sensitive information.
  • Activities from apps that post notifications during screenshare where an OTP has been detected will be hidden. App content is hidden from the remote viewer when launched.
  • Beyond Android's automatic identification of sensitive fields, developers can manually mark parts of their app as sensitive using setContentSensitivity, which is hidden from remote viewers during screenshare.
  • Developers can choose to toggle the Disable screen share protections option under Developer Options to be exempted from the screenshare protections for demo or testing purposes. The default system screen recorder is exempted from these changes, since the recordings remain on-device.

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

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 by FragmentManager or by the Navigation component instead.

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.