Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Melakukan Migrasi Aplikasi ke Android 9

Android 9 (API level 28) memperkenalkan berbagai fitur dan API baru yang bisa Anda manfaatkan dalam aplikasi, serta beberapa perubahan perilaku. Dokumen ini memberi Anda ringkasan langkah-langkah untuk melakukan migrasi aplikasi ke Android 9 melalui dua tahapan utama:

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

    Bila Anda siap untuk memanfaatkan berbagai fitur baru di platform ini, update targetSdkVersion ke 28, verifikasi bahwa aplikasi tetap berfungsi sebagaimana diharapkan, kemudian mulai menggunakan API baru.

Menyiapkan perangkat yang menjalankan Android 9

Jika Anda memiliki perangkat yang kompatibel, dapatkan citra sistem Android 9 untuk perangkat Anda dari produsen; klik di sini untuk citra sistem setelan pabrik bagi perangkat Pixel. Petunjuk umum untuk mem-flash citra sistem ada di sini.

Anda juga bisa download citra sistem Android 9 untuk Android Emulator. Citra sistem ini dicantumkan di SDK Manager dalam Android 9 sebagai Google APIs Intel x86 Atom System Image.

Catatan: Citra sistem emulator Android 9 bisa 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

Yang menjadi sasaran di sini adalah memastikan bahwa aplikasi lama berfungsi apa adanya di Android 9. Karena sebagian perubahan platform mungkin memengaruhi cara perilaku aplikasi, 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 tipe pengujian yang sama dengan yang Anda lakukan saat menyiapkan rilis aplikasi. Inilah waktu yang bagus untuk meninjau Panduan Kualitas Aplikasi Inti dan Praktik Terbaik untuk Pengujian.

Akan tetapi, ada aspek lain pada pengujian: Android 9 memperkenalkan beberapa perubahan pada platform Android yang bisa memengaruhi perilaku aplikasi Anda atau menghentikan aplikasi sama sekali, sekalipun Anda tidak mengubah targetSdkVersion. Karena alasan inilah 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 pada perangkat Android 9.

Perubahan Ikhtisar
Pembatasan pada antarmuka non-SDK Akses ke antarmuka non-SDK tertentu sekarang diblokir, baik melalui akses langsung, melalui JNI, atau melalui refleksi. Upaya untuk mengakses antarmuka yang dibatasi akan menghasilkan error seperti NoSuchFieldException dan NoSuchMethodException. Lihat Pembatasan pada Antarmuka Non-SDK untuk detailnya.
Penghapusan penyedia Crypto Mulai Android 9, penyedia Crypto JCA telah dihapus. Panggilan ke SecureRandom.getInstance("SHA1PRNG", "Crypto") akan melontarkan 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 Anda dan menggunakan fitur Android P

Bagian ini menjelaskan cara mengaktifkan dukungan penuh bagi Android 9 dengan mengupdate targetSdkVersion ke 28 dan menambahkan fitur baru yang tersedia di Android 9.

Sebagai tambahan untuk menawarkan API baru kepada Anda, Android 9 memperkenalkan beberapa perubahan perilaku bila Anda melakukan update targetSdkVersion ke 28. Karena beberapa perubahan perilaku mungkin memerlukan perubahan kode untuk menghindari kerusakan, pertama-tama Anda harus memahami bagaimana aplikasi mungkin saja terpengaruh 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 adalah prasyarat guna menargetkan aplikasi Anda ke Android 9, jadi pastikan untuk menyelesaikan langkah-langkah tersebut terlebih dahulu.

Dapatkan Android 9 SDK

Anda bisa mendapatkan package SDK untuk build aplikasi Anda dengan Android 9 menggunakan Android Studio 3.1 atau yang lebih tinggi. Jika Anda belum memerlukan fitur-fitur baru di Android 9, dan hanya ingin melakukan kompilasi terhadap versi platform ini, Anda bisa menggunakan Android Studio 3.1. Android Studio 3.2 menyediakan dukungan lengkap untuk fitur Android 9.

Untuk melakukan persiapan dengan versi Android Studio apa pun, ikuti langkah-langkah yang didokumentasikan dalam Menyiapkan SDK Pratinjau.

Menguji aplikasi Android 9 Anda

Setelah semua persiapan di atas selesai, Anda bisa build aplikasi kemudian mengujinya lebih jauh untuk memastikannya berfungsi dengan benar saat menargetkan Android 9 (API level 28). Inilah waktu lain yang bagus untuk meninjau Panduan Kualitas Aplikasi Inti dan Praktik Terbaik untuk Pengujian.

Ketika Anda build aplikasi dengan targetSdkVersion disetel ke P, ada beberapa perubahan platform spesifik yang harus Anda ketahui. Sebagian dari perubahan ini bisa sangat memengaruhi perilaku aplikasi Anda atau bahkan menghentikannya sama sekali, sekalipun Anda tidak mengimplementasikan fitur baru di Android 9.

Tabel 2 menyediakan daftar perubahan ini bersama link ke informasi selengkapnya.

Tabel 2. Perubahan utama yang memengaruhi aplikasi bila targetSdkVersion disetel ke 28.

Perubahan Ikhtisar
Izin layanan latar depan Aplikasi yang ingin menggunakan layanan latar depan sekarang harus meminta izin FOREGROUND_SERVICE terlebih dahulu. Ini adalah izin normal, jadi sistem secara otomatis memberikannya ke aplikasi yang meminta. Memulai layanan latar depan tanpa izin akan memunculkan SecurityException.
Penghentian cipher Bouncy Castle Android 9 menghentikan sejumlah 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 menetapkan provider di getInstance() (dengan kata lain, minta implementasi default).
Penghapusan akses langsung ke Build.serial Aplikasi yang membutuhkan ID Build.serial sekarang harus meminta izin READ_PHONE_STATE kemudian 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. Bila aplikasi Anda memiliki lebih dari satu proses yang menggunakan WebView, CookieManager, atau API lainnya dalam package android.webkit, aplikasi Anda akan error ketika proses kedua memanggil metode WebView.
Akses ke direktori data aplikasi diblokir oleh SELinux Sistem memberlakukan sandbox SELinux per-aplikasi dengan pembatasan SELinux per-aplikasi pada setiap direktori data pribadi aplikasi. Mengakses langsung direktori data aplikasi lain menggunakan lokasi sekarang 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 mendalami berbagai fitur dan API baru yang tersedia di Android 9, lihat Fitur dan API Android 9.