Perubahan perilaku: Aplikasi yang menargetkan Android 17 atau yang lebih tinggi

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.

Kolom akhir statis kini tidak dapat diubah

Aplikasi yang berjalan di Android 17 atau yang lebih tinggi yang menargetkan Android 17 atau yang lebih tinggi tidak dapat mengubah kolom static final. Jika aplikasi mencoba mengubah kolom static final menggunakan refleksi, aplikasi tersebut akan menyebabkan IllegalAccessException. Mencoba mengubah salah satu kolom ini melalui API JNI (seperti SetStaticLongField()) akan menyebabkan aplikasi error.

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 InputConnection kustom dapat mengambil data pemilihan kandidat dengan memanggil TextAttribute.isTextSuggestionSelected(). Aplikasi ini kemudian harus memanggil AccessibilityEvent.setTextChangeTypes() saat mengirim peristiwa TYPE_VIEW_TEXT_CHANGED. Aplikasi yang menargetkan Android 17 yang menggunakan TextView standar akan mengaktifkan fitur ini secara default. (Artinya, TextView akan 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_CHANGED dapat memanggil AccessibilityEvent.getTextChangeTypes() untuk mengidentifikasi sifat modifikasi dan menyesuaikan strategi masukan mereka.

Privasi

Android 17 menyertakan perubahan berikut untuk meningkatkan privasi pengguna.

Izin jaringan lokal diperlukan untuk aplikasi yang menargetkan Android 17

Tersedia untuk diuji? (Build yang diperlukan) Ya (Android 17 atau yang lebih baru)
Perlu mengubah targetSDKVersion? (Level API) Ya (Level API "CINNAMON_BUN")
Lihat dokumentasi atribut manifes untuk mengetahui informasi selengkapnya tentang nilai ini.

Android 17 memperkenalkan izin runtime ACCESS_LOCAL_NETWORK untuk melindungi pengguna dari akses jaringan lokal yang tidak sah. Karena izin ini termasuk dalam grup izin NEARBY_DEVICES yang ada, pengguna yang telah memberikan izin NEARBY_DEVICES lainnya tidak akan diminta lagi. Persyaratan baru ini mencegah aplikasi berbahaya mengeksploitasi akses jaringan lokal yang tidak dibatasi untuk pelacakan dan pelacakan sidik jari pengguna secara diam-diam. Dengan mendeklarasikan dan meminta izin ini, aplikasi Anda dapat menemukan dan terhubung ke perangkat di jaringan area lokal (LAN), seperti perangkat smart home atau penerima transmisi.

Aplikasi yang menargetkan Android 17 atau yang lebih tinggi kini memiliki dua jalur untuk mempertahankan komunikasi dengan perangkat LAN: Menggunakan pemilih perangkat yang dimediasi sistem dan menjaga privasi untuk melewati dialog izin, atau secara eksplisit meminta izin baru ini saat runtime untuk mempertahankan komunikasi jaringan lokal.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi Izin jaringan lokal.

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 konstanta MODE_BACKGROUND_ACTIVITY_START_ALLOWED lama. Sebagai gantinya, Anda harus menerapkan kontrol terperinci seperti MODE_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.

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.