Android 9 (API level 28) memperkenalkan fitur dan API baru yang yang dapat Anda manfaatkan di aplikasi Anda, serta perubahan perilaku baru. Dokumen ini memberi Anda ringkasan langkah-langkah untuk melakukan migrasi aplikasi ke Android 9 melalui dua fase utama:
- Memastikan kompatibilitas dasar dengan Android 9
Verifikasi bahwa aplikasi yang ada berfungsi sepenuhnya pada platform versi baru. Pada tahap ini, Anda tidak menggunakan API baru atau mengubah
targetSdkVersion
aplikasi, tetapi mungkin diperlukan perubahan kecil. - Targetkan platform baru, kompilasi dengan Android 9 SDK, dan
membuat aplikasi dengan fitur Android 9
Ketika Anda siap untuk memanfaatkan fitur baru platform, update
targetSdkVersion
Anda menjadi28
, verifikasi bahwa aplikasi berlanjut berfungsi seperti yang diharapkan, lalu mulai menggunakan API baru.
Menyiapkan perangkat yang menjalankan Android 9
Jika Anda memiliki perangkat yang kompatibel, dapatkan Image sistem Android 9 untuk perangkat Anda dari produsen; klik di sini untuk setelan pabrik untuk Perangkat Pixel. Petunjuk umum untuk mem-flash image sistem ada di sini.
Anda juga bisa download citra sistem Android 9 untuk Android Emulator. Image sistem ini dicantumkan di Pengelola SDK pada Android API 28 sebagai Google APIs Intel x86 Atom System Image.
Catatan: Citra sistem emulator Android 9 tersedia untuk didownload di Android Studio 3.1 dan yang lebih tinggi; Android Studio 3.2 memberikan kompatibilitas maksimum. Untuk informasi selengkapnya, lihat Mendapatkan Android 9 SDK.
Memastikan kompatibilitas dengan Android 9
Tujuan di sini adalah untuk memastikan bahwa aplikasi Anda saat ini berfungsi apa adanya di
Android 9. Karena beberapa perubahan platform mungkin memengaruhi cara aplikasi berperilaku,
beberapa penyesuaian mungkin diperlukan, tetapi Anda tidak perlu menggunakan API baru atau
mengubah targetSdkVersion
.
Melakukan pengujian kompatibilitas
Secara umum, menguji kompatibilitas dengan Android 9 memerlukan jenis pengujian yang sama dengan yang Anda lakukan saat menyiapkan rilis aplikasi. Tahap ini menjadi waktu yang tepat untuk meninjau Pedoman Kualitas Aplikasi Inti dan Praktik Terbaik untuk Pengujian.
Namun, ada aspek lain untuk pengujian: Android 9 memperkenalkan perubahan pada
yang bisa memengaruhi perilaku aplikasi atau menghentikan aplikasi sama sekali, meskipun Anda tidak mengubahnya
targetSdkVersion
Anda. Karena alasan ini, Anda perlu meninjau beberapa perubahan utama
dalam tabel 1, dan menguji semua perbaikan yang Anda implementasikan untuk mengakomodasi perubahan tersebut.
Tabel 1. Perubahan utama yang memengaruhi semua aplikasi yang berjalan di perangkat Android 9.
Ubah | Ringkasan |
---|---|
Batasan terkait antarmuka Non-SDK |
Akses ke antarmuka non-SDK tertentu kini diblokir, baik itu akses langsung, melalui
JNI, atau melalui refleksi. Upaya untuk mengakses antarmuka yang dibatasi
menghasilkan kesalahan seperti
NoSuchFieldException dan NoSuchMethodException .
Lihat Pembatasan
pada antarmuka non-SDK untuk mengetahui detailnya.
|
Penghapusan penyedia Crypto |
Mulai Android 9, penyedia Crypto JCA telah dihapus. Panggilan
ke SecureRandom.getInstance("SHA1PRNG", "Crypto")
akan menampilkan NoSuchProviderException .
|
Dekoder UTF-8 yang lebih ketat | Di Android 9, dekoder UTF-8 untuk bahasa Java lebih ketat dan mengikuti standar Unicode. |
Pemblokiran akses ke kamera, mikrofon, dan sensor untuk aplikasi yang tidak aktif | Saat tidak aktif, aplikasi tidak bisa lagi mengakses kamera, mikrofon, atau sensor SensorManager. |
Untuk mengetahui daftar perubahan perilaku selengkapnya bagi semua aplikasi yang berjalan di Android 9, lihat dokumen Perubahan Perilaku.
Mengupdate versi target dan menggunakan fitur Android P
Bagian ini menjelaskan cara mengaktifkan dukungan penuh untuk Android 9
dengan memperbarui targetSdkVersion
ke versi 28
dan menambahkan fitur baru yang tersedia di Android 9.
Selain menawarkan API baru, Android 9 juga memperkenalkan beberapa perilaku
berubah saat Anda mengupdate targetSdkVersion
ke versi 28. Karena beberapa perubahan perilaku
mungkin memerlukan perubahan kode untuk menghindari kerusakan, sebaiknya pahami terlebih dahulu kemungkinan pengaruh yang dialami aplikasi saat Anda mengubah targetSdkVersion
dengan meninjau semua perubahan perilaku untuk aplikasi yang menargetkan Android 9.
Catatan: Langkah-langkah yang dijelaskan di atas untuk memastikan kompatibilitas platform merupakan prasyarat untuk menargetkan aplikasi Anda ke Android 9, jadi pastikan untuk menyelesaikan langkah-langkah tersebut terlebih dahulu.
Dapatkan Android 9 SDK
Anda bisa mendapatkan paket SDK untuk membangun aplikasi dengan Android 9 menggunakan Android Studio 3.1 atau yang lebih baru. Jika Anda belum memerlukan fitur-fitur baru di Android 9, dan hanya ingin melakukan kompilasi terhadap versi platform ini, Anda dapat menggunakan Android Studio 3.1. Android Studio 3.2 menyediakan dukungan lengkap untuk Fitur Android 9.
Menguji aplikasi Android 9 Anda
Setelah semua persiapan di atas selesai, Anda bisa mem-build aplikasi, lalu mengujinya lebih lanjut untuk memastikannya berfungsi dengan benar saat menargetkan Android 9 (API level 28). Ini juga merupakan waktu yang tepat untuk meninjau Panduan Kualitas Aplikasi Inti dan Praktik Terbaik untuk Pengujian.
Saat Anda membangun aplikasi dengan targetSdkVersion
yang disetel ke P,
ada perubahan platform tertentu
yang harus Anda ketahui. Beberapa
perubahan ini dapat memengaruhi perilaku aplikasi Anda secara signifikan, atau bahkan
menghentikan aplikasi sepenuhnya, meskipun Anda tidak menerapkan fitur
baru di Android 9.
Tabel 2 menyediakan daftar perubahan ini bersama link ke informasi selengkapnya.
Tabel 2. Perubahan utama yang memengaruhi aplikasi
jika targetSdkVersion
ditetapkan ke 28.
Ubah | Ringkasan |
---|---|
Izin layanan latar depan | Aplikasi yang ingin menggunakan layanan latar depan kini harus meminta izin FOREGROUND_SERVICE terlebih dahulu. Ini adalah izin normal, sehingga sistem secara otomatis memberikannya ke aplikasi yang meminta. Memulai layanan latar depan tanpa izin akan memunculkan SecurityException. |
Penghentian cipher Bouncy Castle |
Android 9 menghentikan beberapa cipher dari penyedia Bouncy Castle dan menggunakan cipher
yang disediakan oleh penyedia Conscrypt. Panggilan ke getInstance() yang meminta penyedia Bouncy Castle akan menghasilkan error NoSuchAlgorithmException . Untuk mengatasi error ini, jangan
menentukan penyedia dalam getInstance() (yaitu, meminta implementasi default).
|
Penghapusan akses langsung ke Build.serial
|
Aplikasi yang memerlukan ID Build.serial kini harus meminta READ_PHONE_STATE
izin, lalu gunakan metode Build.getSerial() baru yang ditambahkan di Android 9.
|
Pelarangan berbagi direktori data WebView | Aplikasi tidak lagi bisa berbagi satu direktori data WebView antar proses. Jika aplikasi Anda memiliki lebih dari satu proses yang menggunakan WebView, CookieManager, atau API lainnya dalam paket android.webkit, aplikasi Anda akan error saat proses kedua memanggil metode WebView. |
Akses ke direktori data aplikasi diblokir oleh SELinux | Sistem menerapkan sandbox SELinux per aplikasi dengan pembatasan SELinux per aplikasi di setiap aplikasi direktori data pribadi aplikasi Anda. Mengakses direktori data aplikasi lain secara langsung menurut jalur sekarang tidak diizinkan. Aplikasi dapat terus berbagi data menggunakan mekanisme IPC, termasuk dengan meneruskan FD. |
Untuk mengetahui daftar perubahan perilaku selengkapnya untuk aplikasi yang menargetkan Android 9, lihat dokumen Perubahan Perilaku.
Untuk menjelajahi fitur dan API baru yang tersedia di Android 9, lihat Fitur dan API Android 9.