Migrasi ke Android 8.0

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 melakukan migrasi aplikasi ke Android 8.0 melalui dua fase utama:

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

  2. Mengupdate versi target Anda dan menggunakan fitur Android 8.0

    Jika Anda siap untuk memanfaatkan fitur baru platform, update targetSdkVersion ke 26, verifikasi bahwa aplikasi terus berfungsi seperti yang diharapkan, lalu mulai gunakan API baru.

Memastikan kompatibilitas dengan Android 8.0

Tujuan di sini adalah untuk memastikan bahwa aplikasi Anda saat ini berfungsi sebagaimana mestinya pada Android 8.0 (API level 26). 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 8.0 langkah demi langkah

Menyiapkan perangkat yang menjalankan Android 8.0

  • Jika Anda memiliki perangkat yang kompatibel (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P, atau Nexus Player), ikuti petunjuk untuk mem-flash perangkat Anda.
  • Atau download image sistem Android 8.0 untuk Android Emulator. Image sistem ini tercantum di 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 tinggi. Untuk informasi selengkapnya, lihat bagian di bawah ini untuk mendapatkan Android 8.0 SDK.

Melakukan pengujian kompatibilitas

Pada umumnya, menguji 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 bahkan merusak aplikasi, 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.

Tabel 1. Perubahan utama yang memengaruhi semua aplikasi yang berjalan di perangkat Android 8.0.

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 update pada Android 8.0 (API level 26) dibandingkan dengan versi Android yang lebih lama. Khususnya, layanan latar belakang tidak dapat menerima pembaruan lokasi lebih dari beberapa kali per jam. Namun, selagi aplikasi Anda berada di latar depan, laju pembaruan lokasi tidak akan berubah. Batas Lokasi Latar Belakang
net.hostname perangkat tidak didukung lagi Kueri properti sistem net.hostname menghasilkan 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: Konektivitas jaringan dan HTTP(S)
NullPointerException yang tepat dari metode AbstractCollection AbstractCollection.removeAll(null) dan AbstractCollection.retainAll(null) kini 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 menampilkan 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 26. 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 8.0.

Catatan: Langkah-langkah yang dijelaskan di atas untuk memastikan kompatibilitas platform merupakan prasyarat untuk menargetkan aplikasi Anda ke Android 8.0, jadi pastikan Anda menyelesaikan langkah-langkah tersebut terlebih dahulu.

Mengupdate versi target dan menggunakan fitur Android 8.0 langkah demi langkah

Mendapatkan Android 8.0 SDK

Anda bisa mendapatkan paket SDK untuk mem-build aplikasi dengan Android 8.0 (API level 26) menggunakan Android Studio versi terbaru (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 Android Studio 2.3.3 versi stabil untuk mem-build aplikasi dengan Android 8.0 dan menggunakan API baru.

Untuk melakukan penyiapan dengan versi Android Studio apa pun, ikuti langkah-langkah berikut:

  1. Luncurkan Android Studio dan buka SDK Manager dengan mengklik Tools > SDK Manager.
  2. Di tab SDK Platforms, centang Show Package Details. Di bawah Android 8.0 Preview, centang hal berikut:
    • Android SDK Platform 26
    • Google API Intel x86 Atom System Image (hanya diperlukan untuk emulator)
  3. Beralihlah ke tab SDK Tools dan centang semua item yang memiliki update yang tersedia (klik setiap kotak centang yang menampilkan tanda hubung ). 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
  4. Klik OK untuk menginstal semua paket SDK yang dipilih.

Sekarang Anda siap untuk mulai mem-build 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 apa adanya tidak akan merusak aplikasi Anda pada waktu build atau runtime, tetapi tidak ada efeknya saat aplikasi Anda berjalan di Android 8.0.

Siaran yang hanya dapat direspons aplikasi Anda—intent siaran Ekspresi 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 membangun aplikasi, lalu mengujinya lebih lanjut untuk memastikan aplikasi tersebut berfungsi dengan baik saat menargetkan Android 8.0 (API level 26). Ini juga merupakan waktu yang tepat untuk meninjau Panduan Kualitas Aplikasi Inti dan Praktik Terbaik untuk Pengujian.

Saat Anda mem-build aplikasi dengan targetSdkVersion yang disetel ke 26, ada beberapa perubahan platform spesifik yang harus Anda ketahui. Beberapa perubahan ini dapat memengaruhi perilaku aplikasi secara signifikan atau bahkan menghentikan aplikasi sama sekali, meskipun Anda tidak mengimplementasikan fitur baru di Android 8.0.

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

Tabel 2. Perubahan utama yang memengaruhi aplikasi saat targetSdkVersion disetel ke 26.

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 bahwa 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 bagian dan header ELF, 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 tidak boleh lagi memanggil Collections.sort(), atau aplikasi Anda akan melontarkan pengecualian akibat stack overflow. Perubahan Perilaku: Penanganan pengumpulan
Metode Collections.sort() Dalam implementasi List, Collections.sort() kini 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 mempelajari fitur dan API baru yang tersedia dengan Android 8.0 (API level 26), lihat Fitur dan API Android 8.0.