Seperti rilis sebelumnya, Android 17 menyertakan perubahan perilaku yang mungkin memengaruhi aplikasi Anda. Perubahan perilaku berikut ini berlaku khusus bagi aplikasi yang menargetkan Android 17 atau yang lebih tinggi. Jika aplikasi Anda menargetkan Android 17 atau yang lebih tinggi, Anda harus memodifikasi aplikasi untuk mendukung perilaku ini, jika berlaku.
Pastikan Anda juga meninjau daftar perubahan perilaku yang memengaruhi semua aplikasi yang berjalan di Android 17, terlepas dari targetSdkVersion aplikasi Anda.
Fungsi inti
Android 17 mencakup perubahan berikut yang mengubah atau memperluas berbagai kemampuan inti sistem Android.
Implementasi MessageQueue bebas kunci baru
Mulai Android 17, aplikasi yang menargetkan Android 17
atau yang lebih tinggi menerima penerapan bebas kunci baru dari
android.os.MessageQueue. Implementasi baru ini meningkatkan performa dan mengurangi frame yang terlewat, tetapi dapat merusak klien yang mencerminkan kolom dan metode pribadi MessageQueue.
Untuk mengetahui informasi selengkapnya, termasuk strategi mitigasi, lihat Panduan perubahan perilaku MessageQueue.
Aksesibilitas
Android 17 melakukan perubahan berikut untuk meningkatkan aksesibilitas.
Dukungan aksesibilitas untuk pengetikan keyboard fisik IME yang kompleks
Fitur ini memperkenalkan API AccessibilityEvent dan TextAttribute
baru untuk meningkatkan kualitas respons lisan pembaca layar untuk input bahasa CJKV. Aplikasi IME CJKV kini dapat memberi sinyal apakah kandidat konversi teks telah dipilih selama komposisi teks. Aplikasi dengan kolom edit dapat menentukan jenis perubahan teks saat
mengirim peristiwa aksesibilitas teks yang berubah.
Misalnya, aplikasi dapat menentukan bahwa perubahan teks terjadi selama komposisi teks, atau bahwa perubahan teks dihasilkan dari commit.
Dengan melakukannya, layanan aksesibilitas seperti pembaca layar dapat memberikan masukan yang lebih akurat berdasarkan sifat modifikasi teks.
Adopsi aplikasi
Aplikasi IME: Saat menyetel penulisan teks di kolom edit, IME dapat menggunakan
TextAttribute.Builder.setTextSuggestionSelected()untuk menunjukkan apakah kandidat konversi tertentu dipilih.Aplikasi dengan Edit Kolom: Aplikasi yang mempertahankan
InputConnectionkustom dapat mengambil data pemilihan kandidat dengan memanggilTextAttribute.isTextSuggestionSelected(). Aplikasi ini kemudian harus memanggilAccessibilityEvent.setTextChangeTypes()saat mengirim peristiwaTYPE_VIEW_TEXT_CHANGED. Aplikasi yang menargetkan Android 17 yang menggunakanTextViewstandar akan mengaktifkan fitur ini secara default. (Artinya,TextViewakan menangani pengambilan data dari IME dan menyetel jenis perubahan teks saat mengirim peristiwa ke layanan aksesibilitas).Layanan Aksesibilitas: Layanan aksesibilitas yang memproses peristiwa
TYPE_VIEW_TEXT_CHANGEDdapat memanggilAccessibilityEvent.getTextChangeTypes()untuk mengidentifikasi sifat modifikasi dan menyesuaikan strategi masukan mereka.
Keamanan
Android 17 melakukan peningkatan berikut pada keamanan perangkat dan aplikasi.
Keamanan Aktivitas
Di Android 17, platform melanjutkan peralihannya ke arsitektur "aman secara default", dengan memperkenalkan serangkaian peningkatan yang dirancang untuk memitigasi eksploitasi dengan tingkat keparahan tinggi seperti phishing, pembajakan interaksi, dan serangan wakil yang bingung. Update ini mengharuskan developer untuk secara eksplisit memilih ikut serta dalam standar keamanan baru untuk mempertahankan kompatibilitas aplikasi dan perlindungan pengguna.
Dampak utama bagi developer meliputi:
- Penguatan BAL & peningkatan keikutsertaan: Kami menyempurnakan batasan Peluncuran Aktivitas Latar Belakang (BAL) dengan memperluas perlindungan ke
IntentSender. Developer harus bermigrasi dari konstantaMODE_BACKGROUND_ACTIVITY_START_ALLOWEDlama. Sebagai gantinya, Anda harus menerapkan kontrol terperinci sepertiMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, yang membatasi peluncuran aktivitas pada skenario saat aplikasi pemanggil terlihat, sehingga secara signifikan mengurangi permukaan serangan. - Alat adopsi: Developer harus menggunakan mode ketat dan pemeriksaan lint yang diperbarui untuk mengidentifikasi pola lama dan memastikan kesiapan untuk persyaratan SDK target pada masa mendatang.
Perlindungan localhost
Untuk meningkatkan keamanan platform dan privasi pengguna, Android 17
memperkenalkan izin waktu penginstalan baru, USE_LOOPBACK_INTERFACE. Perubahan ini membatasi komunikasi antar-aplikasi dan antar-profil melalui antarmuka loopback (misalnya, 127.0.0.1 atau ::1), yang sebelumnya diizinkan secara implisit dengan izin INTERNET. Untuk aplikasi yang menargetkan
Android 17 atau yang lebih tinggi, aturan berikut berlaku:
- Izin timbal balik diperlukan: komunikasi antar-aplikasi dan antar-profil kini diblokir secara default. Agar koneksi berhasil, aplikasi pengirim dan aplikasi penerima harus secara eksplisit mendeklarasikan izin
USE_LOOPBACK_INTERFACEdalam manifesnya. - Pengecualian traffic dalam aplikasi: Komunikasi loopback dalam aplikasi yang sama (komunikasi dalam aplikasi) tetap tidak terpengaruh dan tidak memerlukan izin baru ini.
- Perilaku SDK target:
- Aplikasi menargetkan Android 17 atau yang lebih tinggi: Izin harus diminta secara eksplisit. Jika tidak ada, operasi soket (seperti
koneksi TCP atau pengiriman UDP) akan gagal, biasanya menampilkan error
EPERM(operasi tidak diizinkan). - Aplikasi menargetkan API level 36 atau yang lebih rendah: Izin
diperlakukan sebagai izin terpisah di
INTERNET. Aplikasi yang menargetkan level API yang lebih rendah akan otomatis diberi izin ini jika memilikiINTERNET.
- Aplikasi menargetkan Android 17 atau yang lebih tinggi: Izin harus diminta secara eksplisit. Jika tidak ada, operasi soket (seperti
koneksi TCP atau pengiriman UDP) akan gagal, biasanya menampilkan error
- Peringatan kompatibilitas: Jika aplikasi penerima mengupdate targetnya ke Android 17, tetapi gagal meminta izin ini, koneksi masuk dari aplikasi lain akan ditolak, meskipun aplikasi pengirim menargetkan level API yang lebih rendah.
Mengaktifkan CT secara default
Jika aplikasi menargetkan Android 17 atau yang lebih tinggi, transparansi sertifikat (CT) diaktifkan secara default. (Di Android 16, CT tersedia, tetapi aplikasi harus mengaktifkannya.)
DCL Native yang Lebih Aman—C
Jika aplikasi Anda menargetkan Android 17 atau yang lebih tinggi, perlindungan Pemuatan Kode Dinamis (DCL) yang Lebih Aman yang diperkenalkan di Android 14 untuk file DEX dan JAR kini diperluas ke library native.
Semua file native yang dimuat menggunakan System.load() harus ditandai sebagai hanya baca.
Jika tidak, sistem akan menampilkan UnsatisfiedLinkError.
Sebaiknya aplikasi menghindari pemuatan kode secara dinamis jika memungkinkan, karena hal itu akan sangat meningkatkan risiko aplikasi disusupi oleh injeksi kode atau modifikasi kode.
Faktor bentuk perangkat
Android 17 menyertakan perubahan berikut untuk meningkatkan pengalaman pengguna di berbagai ukuran dan faktor bentuk perangkat.
Perubahan API platform untuk mengabaikan batasan orientasi, perubahan ukuran, dan rasio aspek di layar besar (sw>=600dp)
Kami memperkenalkan perubahan Platform API di Android 16 untuk mengabaikan batasan orientasi, rasio aspek, dan perubahan ukuran di layar besar (sw >= 600dp) untuk aplikasi yang menargetkan level API 36 atau yang lebih tinggi. Developer memiliki opsi untuk menonaktifkan perubahan ini dengan SDK 36, tetapi penonaktifan ini tidak akan lagi tersedia untuk aplikasi yang menargetkan Android 17 atau yang lebih tinggi.
Untuk mengetahui informasi selengkapnya, lihat Pembatasan pada orientasi dan pengubahan ukuran diabaikan.