targetSdkVersion
ke API level 28 atau
yang lebih tinggi harus memodifikasi
aplikasi mereka untuk mendukung perilaku ini dengan benar, bila memungkinkan pada aplikasi tersebut.Untuk perubahan yang memengaruhi semua aplikasi yang berjalan pada Android 9, API level apa pun yang ditargetkannya, lihat Perubahan perilaku: semua aplikasi.
Layanan Latar Depan
Aplikasi yang menargetkan Android 9 atau yang lebih tinggi dan menggunakan layanan latar depan harus meminta izinFOREGROUND_SERVICE
. Ini adalah izin normal,
jadi sistem secara otomatis memberikannya ke aplikasi yang meminta.Bila aplikasi yang menargetkan Android 9 atau yang lebih tinggi berupaya membuat layanan latar depan tanpa meminta
FOREGROUND_SERVICE
,
sistem akan memunculkan SecurityException
.Perubahan privasi
Bila aplikasi Anda menargetkan Android 9, Anda harus selalu mengingat perubahan perilaku berikut. Update serial perangkat dan informasi DNS ini meningkatkan privasi pengguna.Penghentian penggunaan nomor seri build
Dalam Android 9,Build.SERIAL
selalu
disetel ke "UNKNOWN"
untuk melindungi privasi pengguna.Bila aplikasi Anda perlu mengakses nomor seri hardware perangkat, sebagai gantinya Anda harus meminta izin
READ_PHONE_STATE
, kemudian memanggil
getSerial()
.Privasi DNS
Aplikasi yang menargetkan Android 9 harus menerima API DNS pribadi. Secara khusus, aplikasi harus memastikan bahwa, jika system resolver menggunakan DNS-daripada-TLS, setiap klien DNS bawaan harus menggunakan DNS dienkripsi ke hostname yang sama dengan sistem, atau dinonaktifkan demi system resolver.Perubahan keamanan framework
Android 9 menyertakan beberapa perubahan perilaku yang meningkatkan keamanan aplikasi Anda, tetapi perubahan ini hanya berlaku bila aplikasi Anda menargetkan API level 28 atau yang lebih tinggi.TLS jaringan diaktifkan secara default
Jika aplikasi Anda menargetkan Android 9 atau yang lebih tinggi, metodeisCleartextTrafficPermitted()
akan menampillkan false
secara default. Jika aplikasi Anda perlu mengaktifkan cleartext bagi
domain tertentu, Anda harus menyetel secara eksplisit cleartextTrafficPermitted
ke true
untuk domain itu dalam Konfigurasi
Keamanan Jaringan aplikasi Anda.Direktori data berbasis web dipisahkan oleh proses
Untuk meningkatkan stabilitas aplikasi dan integritas data di Android 9, aplikasi tidak bisa berbagi satu direktori dataWebView
di
antara
banyak proses. Biasanya,
direktori data tersebut menyimpan cookie, cache HTTP, serta penyimpanan tetap dan
sementara yang berkaitan dengan browsing web.Umumnya, aplikasi Anda harus menggunakan class dari package
android.webkit
, seperti
WebView
dan
CookieManager
, di satu proses
saja. Misalnya, Anda harus memindah semua objek
Activity
yang menggunakan WebView
ke dalam proses yang sama. Anda bisa memberlakukan lebih ketat aturan "hanya satu proses"
dengan memanggil
disableWebView()
dalam
proses lain milik aplikasi Anda. Panggilan ini mencegah WebView
dari dilakukannya inisialisasi
dalam proses lain itu secara tidak sengaja, bahkan jika dipanggil dari
library yang dependen.Jika aplikasi Anda harus menggunakan instance
WebView
dalam lebih dari satu proses,
Anda harus memberikan akhiran direktori data yang unik bagi setiap proses, dengan menggunakan metode
WebView.setDataDirectorySuffix()
, sebelum menggunakan instance WebView
yang diberikan dalam proses itu. Metode ini
menempatkan data web dari setiap proses dalam direktorinya sendiri yang berada dalam
direktori data aplikasi Anda.Catatan: Bahkan jika Anda menggunakan
setDataDirectorySuffix()
, sistem tidak akan berbagi
cookie dan data web lainnya di semua batas proses aplikasi Anda. Jika beberapa
proses di aplikasi Anda membutuhkan akses ke data web yang sama, Anda perlu menyalinnya sendiri
di antara proses-proses itu. Misalnya, Anda bisa memanggil
getCookie()
dan
setCookie()
untuk mentransfer data cookie secara manual dari satu proses ke proses lainnya.Domain SELinux per aplikasi
Aplikasi yang menargetkan Android 9 atau yang lebih tinggi tidak bisa berbagi data dengan aplikasi lain menggunakan izin Unix yang dapat diakses bebas. Perubahan ini meningkatkan integritas Android Application Sandbox, khususnya persyaratan bahwa data pribadi aplikasi hanya bisa diakses oleh aplikasi itu.Untuk berbagi file dengan aplikasi lain, gunakan penyedia konten.
Perubahan konektivitas
Penghitungan data konektivitas dan multipath
Dalam aplikasi yang menargetkan Android 9 atau yang lebih tinggi, sistem menghitung traffic jaringan pada jaringan yang bukan merupakan setelan default saat ini—seperti traffic seluler ketika perangkat berada dalam Wi-Fi—dan menyediakan metode dalam classNetworkStatsManager
untuk melakukan kueri lalu lintas tersebut.Secara khusus, sekarang
getMultipathPreference()
menunjukkan nilai berdasarkan traffic jaringan yang disebutkan tadi. Mulai
Android 9, metode menunjukkan true
untuk data seluler, tetapi ketika jumlah
traffic yang terakumulasi melebihi batas tertentu dalam sehari, ia mulai menunjukkan false
. Aplikasi yang berjalan di
Android 9 harus memanggil metode dan menerima petunjuk ini.Class
ConnectivityManager.NetworkCallback
sekarang mengirimkan informasi tentang VPN ke aplikasi. Perubahan ini mempermudah
aplikasi untuk mendengarkan event konektivitas tanpa harus mencampur panggilan bersamaan dan
tidak bersamaan serta menggunakan API terbatas. Selain itu, ini berarti bahwa
transfer informasi berfungsi seperti yang diharapkan ketika perangkat terhubung ke beberapa
jaringan Wi-Fi atau ke beberapa jaringan seluler secara bersamaan.Penghentian pemakaian klien HTTP Apache
Dengan Android 6.0, kami menghapus dukungan untuk klien HTTP Apache. Mulai Android 9, library tersebut dihapus dari bootclasspath dan secara default tidak tersedia bagi aplikasi.Untuk terus menggunakan klien HTTP Apache, aplikasi yang menargetkan Android 9 dan di atasnya bisa menambahkan kode berikut ke
AndroidManifest.xml
:<uses-library android:name="org.apache.http.legacy" android:required="false"/>
Catatan: Atribut android:required="false"
diperlukan untuk aplikasi yang memiliki
SDK minimal 23 atau lebih rendah, karena pada perangkat dengan API level yang lebih rendah dari 24,
library org.apache.http.legacy
tidak tersedia. (Pada perangkat tersebut, class
HTTP Apache tersedia di bootclasspath.)Sebagai alternatif menggunakan waktu proses library Apache, aplikasi bisa memaketkan versi library
org.apache.http
mereka sendiri di APK. Bila melakukan hal ini,
Anda harus mengemas ulang library (dengan utilitas seperti
Jar Jar) untuk menghindari masalah kompatibilitas class
dengan class yang disediakan dalam waktu proses.Perubahan UI
Fokus tampilan
Tampilan dengan area 0 (baik lebar maupun tinggi adalah 0) tidak lagi focusable.Selain itu, aktivitas tidak lagi secara implisit menetapkan fokus awal dalam mode-sentuh. Sebagai gantinya, terserah Anda untuk secara eksplisit meminta fokus awal, bila menginginkannya.
Penanganan nilai heksadesimal RGBA CSS
Aplikasi yang menargetkan Android 9 atau yang lebih tinggi harus mengaktifkan draf perilaku CSS Color Module Level 4 untuk menangani CSS color 4 dan 8 digit hex.CSS Color Module Level 4 telah didukung Chrome sejak rilis 52, tetapi WebView saat ini menonaktifkan fitur tersebut karena aplikasi Android yang ada diketahui memuat 32 bit warna hex dalam Android ordering (ARGB), yang akan menyebabkan error rendering.
Misalnya, warna
#80ff8080
saat ini dirender di
WebView sebagai merah
terang (#ff8080
) untuk aplikasi yang menargetkan API level 27 atau lebih rendah. Komponen
utama (yang akan ditafsirkan oleh Android sebagai komponen alfa) saat
ini diabaikan. Bila sebuah aplikasi menargetkan API level 28 atau yang lebih tinggi, #80ff8080
ditafsirkan
sebagai 50% hijau terang transparan (#80ff80
).Elemen scrolling dokumen
Android 9 menangani kejadian dengan benar ketika elemen root dokumen adalah elemen scroll. Pada versi sebelumnya, posisi scroll disetel pada elemen bodi, dan elemen root memiliki nilai scroll nol. Android 9 mengaktifkan perilaku sesuai standar dengan elemen scroll adalah elemen root.Selain itu, langsung mengakses
document.body.scrollTop
, document.body.scrollLeft
,
document.documentElement.scrollTop
atau document.documentElement.scrollLeft
akan berperilaku berbeda bergantung pada SDK target. Untuk mengakses nilai
scroll viewport, gunakan document.scrollingElement
, jika tersedia.Notifikasi dari aplikasi yang ditangguhkan
Sebelum Android 9, notifikasi dari aplikasi yang ditangguhkan dibatalkan. Mulai Android 9, notifikasi dari aplikasi yang ditangguhkan akan disembunyikan hingga aplikasi dilanjutkan.Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Source :
Perubahan perilaku: aplikasi yang menargetkan API level 28+
No comments:
Post a Comment