Melakukan Migrasi Aplikasi ke Android 9

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:

  1. 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.

  2. Targetkan platform baru, kompilasi dengan Android 9 SDK, dan build dengan fitur Android 9

    Jika Anda sudah siap memanfaatkan fitur baru platform, update targetSdkVersion ke 28, pastikan aplikasi tetap 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 pabrik untuk perangkat Pixel. Petunjuk umum untuk melakukan flash image sistem tersedia di sini.

Anda juga bisa download citra sistem Android 9 untuk Android Emulator. ID ini tercantum di SDK Manager pada 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 mengetahui informasi selengkapnya, baca Mendapatkan Android 9 SDK.

Memastikan kompatibilitas dengan Android 9

Tujuannya di sini adalah untuk memastikan bahwa aplikasi yang ada berfungsi apa adanya 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.

Memastikan kompatibilitas dengan Android 9 langkah demi langkah

Melakukan pengujian kompatibilitas

Secara umum, pengujian kompatibilitas dengan Android 9 memerlukan jenis pengujian yang sama dengan yang Anda lakukan saat mempersiapkan rilis aplikasi. Inilah 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, Anda perlu meninjau perubahan utama pada tabel 1, dan menguji semua perbaikan yang Anda implementasikan untuk mengakomodasi perubahan tersebut.

Tabel 1. Perubahan penting 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 melalui akses langsung, melalui JNI, maupun melalui refleksi. Percobaan 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 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 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 Anda 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 ke Android 9, jadi pastikan untuk menyelesaikan langkah-langkah tersebut terlebih dahulu.

Mengupdate versi target dan menggunakan fitur Android 9 langkah demi langkah

Dapatkan Android 9 SDK

Anda bisa mendapatkan paket SDK untuk mem-build 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 memberikan dukungan lengkap untuk fitur Android 9.

Menguji aplikasi Android 9 Anda

Setelah menyelesaikan persiapan di atas, Anda dapat mem-build aplikasi dan mengujinya lebih lanjut untuk memastikan aplikasi berfungsi dengan baik saat menargetkan Android 9 (API level 28). Ini adalah 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 perubahan platform spesifik yang harus Anda ketahui. Beberapa perubahan ini dapat memengaruhi perilaku aplikasi secara signifikan atau bahkan menghentikan aplikasi sama sekali, 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 saat targetSdkVersion disetel 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, 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 menentukan penyedia dalam getInstance() (yaitu, meminta 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 dalam 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 akan error saat proses kedua memanggil metode WebView.
Akses ke direktori data aplikasi diblokir oleh SELinux Sistem memberlakukan sandbox SELinux per aplikasi dengan pembatasan SELinux per aplikasi di setiap direktori data pribadi aplikasi. Mengakses langsung direktori data aplikasi lain berdasarkan jalur kini tidak diizinkan. Aplikasi dapat terus berbagi data menggunakan mekanisme IPC, termasuk dengan meneruskan FD.

Untuk daftar perubahan perilaku selengkapnya 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.