Melakukan Migrasi Aplikasi ke Android 9

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:

  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 membuat aplikasi dengan fitur Android 9

    Ketika Anda siap untuk memanfaatkan fitur baru platform, update targetSdkVersion Anda menjadi 28, 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.

Memastikan kompatibilitas dengan Android 9 langkah demi langkah

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.

Mengupdate versi target dan menggunakan fitur Android 9 langkah demi langkah

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.