Android 8.0 (API level 26) memperkenalkan perubahan perilaku serta fitur dan API baru yang yang dapat Anda manfaatkan di aplikasi Anda. Dokumen ini memberikan ringkasan tentang langkah-langkah migrasi aplikasi Anda ke Android 8.0 dalam 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 melakukan perubahan kecil mungkin diperlukan. - Mengupdate versi target dan menggunakan fitur Android 8.0
Ketika Anda siap untuk memanfaatkan fitur baru platform, update
targetSdkVersion
ke 26, verifikasi bahwa aplikasi berlanjut berfungsi seperti yang diharapkan, lalu mulai menggunakan API baru.
Memastikan kompatibilitas dengan Android 8.0
Tujuannya di sini adalah untuk memastikan bahwa aplikasi Anda saat ini berfungsi apa adanya di Android 8.0
(level API 26). Karena beberapa perubahan platform mungkin
memengaruhi perilaku aplikasi Anda,
beberapa penyesuaian mungkin diperlukan, tetapi Anda tidak perlu menggunakan API baru atau
ubah targetSdkVersion
Anda.
Menyiapkan perangkat yang menjalankan Android 8.0
- Jika Anda memiliki perangkat yang kompatibel (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P, atau Nexus (Pemutar), ikuti petunjuk untuk melakukan flash perangkat.
- Atau download image sistem Android 8.0 untuk Android Emulator. Ini tercantum dalam
SDK Manager di bagian
Android 8.0 sebagai Google APIs Intel x86 Atom System Image.
Catatan: Image sistem Android 8.0 tersedia untuk didownload dari Android Studio 3.0 dan yang lebih baru. Untuk mengetahui informasi selengkapnya, lihat bagian di bawah untuk mendapatkan Android 8.0 SDK.
Melakukan pengujian kompatibilitas
Secara umum, menguji kompatibilitas dengan Android 8.0 (API level 26) memerlukan jenis pengujian yang sama dengan yang Anda lakukan saat bersiap merilis 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
yang bisa memengaruhi perilaku aplikasi atau menghentikan aplikasi sama sekali, meskipun Anda tidak mengubahnya
targetSdkVersion
Anda. Karena alasan ini, penting bagi Anda untuk
meninjau perubahan-perubahan penting
di tabel 1, dan menguji semua perbaikan yang Anda terapkan untuk mengakomodasi perubahan tersebut.
Ubah | Ringkasan | Referensi lebih lanjut |
---|---|---|
Pembaruan lokasi latar belakang yang semakin berkurang | Jika aplikasi Anda menerima pembaruan lokasi dari layanan latar belakang, aplikasi akan lebih jarang menerima Android 8.0 (level API 26) dibandingkan dengan Android versi lama. Secara khusus, latar belakang layanan tidak dapat menerima pembaruan lokasi lebih dari beberapa kali per jam. Namun, meskipun aplikasi berjalan di latar depan, laju pembaruan lokasi tidak berubah. | Batas Lokasi Latar Belakang |
net.hostname perangkat tidak didukung lagi
|
Membuat kueri properti sistem net.hostname memberikan hasil null.
|
Tidak ada |
Pengecualian baru dari send(DatagramPacket) |
Metode send(DatagramPacket) menampilkan SocketException
jika metode connect(InetAddress, int) yang dijalankan sebelumnya gagal.
|
Perubahan Perilaku: Konektivitas jaringan dan 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)
|
Menelepon Currency.getDisplayName(null)
menampilkan NullPointerException .
|
Perubahan Perilaku: Lokalitas dan internasionalisasi |
Untuk daftar perubahan perilaku yang lebih lengkap di Android 8.0 (level API 26), juga lihat Perubahan Perilaku Android 8.0.
Mengupdate versi target 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 perilaku
berubah saat mengupdate targetSdkVersion
ke versi 26. Karena beberapa perubahan perilaku
mungkin memerlukan perubahan kode untuk menghindari kerusakan, Anda harus terlebih dahulu memahami bagaimana aplikasi Anda
terpengaruh saat Anda 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 merupakan 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 membangun aplikasi dengan Android 8.0 (API level 26) menggunakan Android Studio (Android Studio 3.0+ direkomendasikan). Android Studio 3.0+ menyertakan alat untuk membantu Anda menggunakan 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 Anda dengan Android 8.0 dan menggunakan API baru.
Untuk melakukan penyiapan dengan kedua versi Android Studio, ikuti langkah-langkah berikut:
- Luncurkan Android Studio dan buka SDK Manager dengan mengklik Alat > Pengelola SDK.
- Di tab SDK Platforms, centang Show Package Details. Di Bawah
Pratinjau Android 8.0, periksa hal-hal berikut:
- Android SDK Platform 26
- Image Sistem Atom Intel x86 Google APIs (hanya diperlukan untuk emulator)
- Beralih ke tab SDK Tools dan periksa semua item yang memiliki update (klik
setiap kotak centang yang
menunjukkan tanda hubung ). Salinan ini harus mencakup 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.
Kini Anda siap untuk mulai membuat aplikasi dengan Android 8.0.
Memperbarui konfigurasi build
Perbarui compileSdkVersion
,
targetSdkVersion
, dan versi Support Library ke versi terbaru
revisi 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 untuk penerima siaran, Anda harus menghapus semua penerima siaran yang didaftarkan untuk intent siaran implisit. Membiarkannya tetap di tempatnya tidak akan merusak aplikasi Anda pada waktu build atau runtime, tetapi tidak berpengaruh saat aplikasi Anda berjalan di Android 8.0.
Siaran yang hanya dapat direspons oleh aplikasi Anda—intent siaran Eksplisit dan siaran yang secara khusus dikirim ke nama paket aplikasi Anda—terus bekerja dengan cara yang sama 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 persiapan di atas selesai, Anda bisa membangun aplikasi, lalu menguji lebih lanjut untuk memastikannya berfungsi dengan baik saat menargetkan Android 8.0 (level API 26). Ini adalah saat yang tepat untuk meninjau Aplikasi Inti Pedoman Kualitas dan Terbaik Praktik untuk Pengujian.
Saat Anda membangun aplikasi dengan targetSdkVersion
yang disetel ke 26,
ada perubahan platform tertentu
yang harus Anda ketahui. Beberapa
perubahan ini bisa sangat memengaruhi perilaku aplikasi atau bahkan
menghentikan aplikasi Anda sama sekali, walaupun Anda tidak mengimplementasikan
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) memberlakukan aturan yang data tidak boleh dapat dieksekusi, dan kode tidak boleh dapat ditulis. | Perubahan Perilaku: Library Native |
Header ELF dan validasi bagian | Penaut dinamis memeriksa lebih banyak nilai 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 (level API 26) harus mengimplementasikan satu atau lebih saluran notifikasi 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 Daftar, Collections.sort() sekarang menampilkan
ConcurrentModificationException .
|
Perilaku Perubahan: 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 dengan Android 8.0 (API level 26), lihat Fitur dan API Android 8.0.