Android 9 (level API 28) memperkenalkan fitur dan API baru yang dapat Anda manfaatkan dalam aplikasi, serta perubahan perilaku baru. Dokumen ini memberi Anda ringkasan langkah-langkah untuk memigrasikan 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
build dengan fitur Android 9
Setelah siap memanfaatkan fitur baru platform, update
targetSdkVersion
ke28
, pastikan aplikasi terus berfungsi seperti yang diharapkan, lalu mulai gunakan 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 setelan pabrik untuk perangkat Pixel. Petunjuk umum untuk melakukan flash image sistem tercantum di sini.
Anda juga bisa download citra sistem Android 9 untuk Android Emulator. Image sistem terdapat di SDK Manager di Android API 28 sebagai Google APIs Intel x86 Atom System Image.
Catatan: Image 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
Tujuannya di sini adalah untuk memastikan bahwa aplikasi Anda yang ada berfungsi sebagaimana mestinya di
Android 9. Karena beberapa perubahan platform mungkin memengaruhi perilaku aplikasi,
beberapa penyesuaian mungkin diperlukan, tetapi Anda tidak perlu menggunakan API baru atau
mengubah targetSdkVersion
.
Melakukan pengujian kompatibilitas
Secara umum, pengujian kompatibilitas dengan Android 9 memerlukan jenis pengujian yang sama dengan yang Anda lakukan saat mempersiapkan rilis aplikasi. Ini adalah 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 platform
Android yang dapat memengaruhi perilaku aplikasi atau menghentikan aplikasi sama sekali, meskipun Anda tidak mengubah
targetSdkVersion
. Karena alasan ini, penting bagi Anda untuk meninjau perubahan utama
pada tabel 1, dan menguji semua perbaikan yang Anda implementasikan untuk mengakomodasi perubahan tersebut.
Ubah | Ringkasan |
---|---|
Batasan terkait antarmuka non-SDK |
Akses ke antarmuka non-SDK tertentu kini diblokir, baik akses secara langsung, melalui
JNI, atau melalui refleksi. Upaya untuk mengakses antarmuka yang dibatasi akan menghasilkan error seperti
NoSuchFieldException dan NoSuchMethodException .
Lihat Pembatasan 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 daftar perubahan perilaku yang lebih lengkap 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 mengupdate targetSdkVersion
ke 28
dan menambahkan fitur baru yang tersedia di Android 9.
Selain menawarkan API baru, Android 9 juga memperkenalkan beberapa perubahan
perilaku saat Anda mengupdate targetSdkVersion
ke 28. Karena beberapa perubahan perilaku
mungkin memerlukan perubahan kode untuk menghindari kerusakan, Anda harus terlebih dahulu memahami bagaimana aplikasi mungkin
terpengaruh saat mengubah targetSdkVersion
dengan meninjau semua perubahan perilaku untuk aplikasi yang menargetkan Android 9.
Catatan: Langkah-langkah yang dijelaskan di atas untuk memastikan kompatibilitas platform adalah 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 membuat aplikasi dengan Android 9 menggunakan Android Studio 3.1 atau yang lebih tinggi. Jika belum memerlukan fitur baru di Android 9, dan hanya ingin melakukan kompilasi terhadap versi platform tersebut, Anda dapat menggunakan Android Studio 3.1. Android Studio 3.2 menyediakan dukungan lengkap untuk fitur Android 9.
Menguji aplikasi Android 9 Anda
Setelah menyelesaikan persiapan di atas, Anda dapat membangun aplikasi dan mengujinya lebih lanjut untuk memastikan bahwa aplikasi berfungsi dengan baik saat menargetkan Android 9 (API level 28). Ini juga merupakan waktu yang tepat untuk meninjau Pedoman Kualitas Aplikasi Inti dan Praktik Terbaik untuk Pengujian.
Saat Anda mem-build aplikasi dengan targetSdkVersion
yang ditetapkan ke P,
ada beberapa perubahan platform spesifik yang harus Anda ketahui. Beberapa
perubahan ini dapat memengaruhi perilaku aplikasi Anda secara signifikan atau bahkan
merusak aplikasi sama sekali, meskipun Anda tidak menerapkan fitur
baru di Android 9.
Tabel 2 menyediakan daftar perubahan ini bersama link ke informasi selengkapnya.
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, jadi sistem akan otomatis memberikannya ke aplikasi yang meminta. Memulai layanan latar depan tanpa izin akan menampilkan SecurityException. |
Penghentian cipher Bouncy Castle |
Android 9 menghentikan penggunaan beberapa cipher dari penyedia Bouncy Castle dan menggantinya dengan cipher yang disediakan oleh penyedia Conscrypt. Panggilan ke getInstance() yang meminta penyedia Bouncy Castle akan menghasilkan error NoSuchAlgorithmException . Untuk mengatasi error, jangan
tentukan penyedia dalam getInstance() (yaitu, minta implementasi default).
|
Penghapusan akses langsung ke Build.serial
|
Aplikasi yang memerlukan ID Build.serial kini harus meminta izin READ_PHONE_STATE ,
lalu menggunakan 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 lain 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 direktori data pribadi aplikasi. Mengakses direktori data aplikasi lain secara langsung berdasarkan jalur kini tidak diizinkan. Aplikasi dapat terus berbagi data menggunakan mekanisme IPC, termasuk dengan meneruskan FD. |
Untuk daftar perubahan perilaku yang lebih lengkap bagi 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.