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

    Setelah siap memanfaatkan fitur baru platform, update targetSdkVersion ke 28, 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.

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

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

Mengupdate versi target dan menggunakan fitur Android 9 langkah demi langkah

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.

Tabel 2. Perubahan penting 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 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.