Android 8.0 (API level 26) memperkenalkan perubahan perilaku serta fitur dan API baru yang dapat Anda manfaatkan dalam aplikasi. Dokumen ini memberi Anda ringkasan langkah-langkah untuk memigrasikan aplikasi ke Android 8.0 melalui dua fase utama:
- Memastikan kompatibilitas dengan Android 8.0
Verifikasi bahwa aplikasi Anda berfungsi sepenuhnya pada platform versi baru. Pada tahap ini, Anda tidak menggunakan API baru atau mengubah
targetSdkVersion
aplikasi, tetapi mungkin diperlukan perubahan kecil. - Mengupdate versi target Anda dan menggunakan fitur Android 8.0
Jika Anda sudah siap memanfaatkan fitur baru platform, update
targetSdkVersion
ke 26, pastikan aplikasi tetap berfungsi seperti yang diharapkan, lalu mulai gunakan API baru.
Memastikan kompatibilitas dengan Android 8.0
Tujuannya di sini adalah untuk memastikan aplikasi Anda saat ini berfungsi apa adanya di Android 8.0
(API level 26). Karena beberapa perubahan platform mungkin memengaruhi perilaku aplikasi,
beberapa penyesuaian mungkin diperlukan, tetapi Anda tidak perlu menggunakan API baru atau
mengubah targetSdkVersion
.
Menyiapkan perangkat yang menjalankan Android 8.0
- Jika memiliki perangkat yang kompatibel (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P, atau Nexus Player), ikuti petunjuk untuk melakukan flash perangkat.
- Atau download image sistem Android 8.0 untuk Android Emulator. ID ini tercantum di SDK Manager pada Android 8.0 sebagai Google APIs Intel x86 Atom System Image.
Catatan: Image sistem Android 8.0 dapat didownload dari Android Studio 3.0 dan yang lebih tinggi. Untuk informasi selengkapnya, lihat bagian di bawah ini untuk mendapatkan Android 8.0 SDK.
Melakukan pengujian kompatibilitas
Pada umumnya, pengujian kompatibilitas dengan Android 8.0 (API level 26) 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 8.0 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.
Ubah | Ringkasan | Referensi lebih lanjut |
---|---|---|
Pembaruan lokasi latar belakang yang semakin berkurang | Jika menerima update lokasi dari layanan latar belakang, aplikasi Anda akan lebih jarang menerima update pada Android 8.0 (API level 26) dibandingkan dengan versi Android lama. Secara khusus, layanan latar belakang tidak dapat menerima pembaruan lokasi lebih dari beberapa kali per jam. Namun, saat aplikasi berada di latar depan, tingkat pembaruan lokasi tidak akan berubah. | Batas Lokasi Latar Belakang |
net.hostname perangkat tidak didukung lagi
|
Kueri properti sistem net.hostname akan memberikan hasil null.
|
Tidak ada |
Pengecualian baru dari send(DatagramPacket) |
Metode send(DatagramPacket) akan menampilkan SocketException jika metode connect(InetAddress, int) yang dieksekusi sebelumnya gagal.
|
Perubahan Perilaku: Jaringan dan konektivitas HTTP(S) |
NullPointerException yang tepat dari
metode AbstractCollection
|
AbstractCollection.removeAll(null) dan
AbstractCollection.retainAll(null) sekarang selalu menampilkan
NullPointerException ;
sebelumnya, NullPointerException tidak ditampilkan saat koleksi kosong.
Perubahan ini menjadikan perilaku konsisten dengan dokumentasi.
|
Perubahan Perilaku: Penanganan koleksi |
NullPointerException yang tepat dari
Currency.getDisplayName(null)
|
Memanggil Currency.getDisplayName(null) akan memunculkan NullPointerException .
|
Perubahan Perilaku: Lokalitas dan internasionalisasi |
Untuk daftar perubahan perilaku yang lebih lengkap di Android 8.0 (API level 26), lihat juga Perubahan Perilaku Android 8.0.
Mengupdate versi target Anda dan menggunakan fitur Android 8.0
Bagian ini menjelaskan cara mengaktifkan dukungan penuh untuk Android 8.0
(API level 26) dengan mengupdate targetSdkVersion
ke 26
dan menambahkan fitur baru yang tersedia di Android 8.0.
Selain menawarkan API baru, Android 8.0 juga memperkenalkan beberapa perubahan
perilaku saat Anda mengupdate targetSdkVersion
ke versi 26. 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 8.0.
Catatan: Langkah-langkah yang dijelaskan di atas untuk memastikan kompatibilitas platform adalah prasyarat untuk menargetkan aplikasi ke Android 8.0, jadi pastikan Anda menyelesaikan langkah-langkah tersebut terlebih dahulu.
Mendapatkan Android 8.0 SDK
Anda bisa mendapatkan paket SDK untuk mem-build aplikasi dengan Android 8.0 (API level 26) menggunakan versi terbaru Android Studio (Android Studio 3.0+ direkomendasikan). Android Studio 3.0+ menyertakan alat untuk membantu Anda terkait fitur Android 8.0, seperti ikon adaptif dan font yang dapat didownload. Jika belum memerlukan fitur tersebut, Anda dapat menggunakan versi stabil Android Studio 2.3.3 untuk membangun aplikasi dengan Android 8.0 dan menggunakan API baru.
Untuk menyiapkan salah satu versi Android Studio, ikuti langkah-langkah berikut:
- Luncurkan Android Studio dan buka SDK Manager dengan mengklik Tools > SDK Manager.
- Di tab SDK Platforms, centang Show Package Details. Di bawah
Pratinjau Android 8.0, periksa hal berikut:
- Android SDK Platform 26
- Google APIs Intel x86 Atom System Image (hanya diperlukan untuk emulator)
- Beralih ke tab SDK Tools dan centang semua item yang memiliki update yang tersedia (klik
setiap kotak centang yang menampilkan tanda hubung ). Ini harus menyertakan versi terbaru dari item
berikut yang diperlukan:
- Android SDK Build-Tools 26.0.0
- Android SDK Platform-Tools 26.0.0
- Android Emulator 26.0.0
- Klik OK untuk menginstal semua paket SDK yang dipilih.
Sekarang Anda siap untuk mulai membangun dengan Android 8.0.
Memperbarui konfigurasi build
Update compileSdkVersion
, targetSdkVersion
, dan versi Support Library ke revisi terbaru yang tersedia, misalnya:
android { compileSdkVersion 26 defaultConfig { targetSdkVersion 26 } ... } dependencies { compile 'com.android.support:appcompat-v7:26.0.0' } // REQUIRED: Google's new Maven repo is required for the latest // support library that is compatible with Android 8.0 repositories { google() // If you're using a version of Gradle lower than 4.1, you must instead use: // maven { // url 'https://maven.google.com' // } }
Buang penerima siaran dari file manifes Anda
Karena Android 8.0 (API level 26) memperkenalkan batasan baru untuk penerima siaran, Anda harus menghapus semua penerima siaran yang terdaftar untuk intent siaran implisit. Membiarkannya tetap digunakan tidak akan merusak aplikasi pada waktu build atau runtime, tetapi tidak berpengaruh jika aplikasi Anda berjalan di Android 8.0.
Siaran yang hanya dapat direspons oleh aplikasi Anda—intent siaran Eksplisit dan siaran yang dikirim ke nama paket aplikasi Anda secara khusus—tetap berfungsi sama di Android 8.0.
Ada beberapa pengecualian pada pembatasan baru ini. Untuk daftar siaran implisit yang masih berfungsi di aplikasi yang menargetkan Android 8.0, lihat Pengecualian Siaran Implisit.
Menguji aplikasi Android 8.0 Anda
Setelah menyelesaikan persiapan di atas, Anda dapat mem-build aplikasi dan mengujinya lebih lanjut untuk memastikan aplikasi berfungsi dengan baik saat menargetkan Android 8.0 (API level 26). 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 26,
ada beberapa perubahan platform tertentu 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 8.0.
Tabel 2 menyediakan daftar perubahan ini bersama link ke informasi selengkapnya.
Ubah | Ringkasan | Referensi lebih lanjut |
---|---|---|
Privasi | Android 8.0 (API level 26) tidak mendukung penggunaan properti sistem net.dns1, net.dns2, net.dns3, atau net.dns4. | Perubahan Perilaku: Privasi |
Segmen yang Dapat Ditulis dan yang Dapat Dieksekusi Telah Diberlakukan | Untuk library native, Android 8.0 (API level 26) menerapkan aturan bahwa data tidak boleh dapat dieksekusi, dan kode tidak boleh dapat ditulis. | Perubahan Perilaku: Library Native |
Header ELF dan validasi bagian | Linker dinamis memeriksa nilai lainnya di header ELF dan header bagian, dan akan gagal jika tidak valid. | Perubahan Perilaku: Library Native |
Notifikasi | Aplikasi yang menargetkan SDK versi Android 8.0 (API level 26) harus mengimplementasikan satu atau beberapa saluran notifikasi untuk memposting notifikasi kepada pengguna. | Ringkasan API: Notifikasi |
Metode List.sort()
|
Implementasi metode ini mungkin tidak lagi memanggil Collections.sort() , atau aplikasi Anda akan menampilkan pengecualian karena stack overflow.
|
Perubahan Perilaku: Penanganan koleksi |
Metode Collections.sort()
|
Dalam implementasi List, Collections.sort() sekarang menampilkan ConcurrentModificationException .
|
Perubahan Perilaku: Penanganan koleksi |
Untuk daftar perubahan perilaku yang lebih lengkap di Android 8.0 (API level 26), lihat Perubahan Perilaku Android 8.0.
Untuk menjelajahi fitur dan API baru yang tersedia di Android 8.0 (API level 26), lihat Fitur dan API Android 8.0.