Bergabunglah bersama kami di ⁠#Android11: The Beta Launch Show pada tanggal 3 Juni!

Melakukan Migrasi Aplikasi ke Android 8.0

Android 8.0 memperkenalkan sejumlah API dan fitur baru, dan menyertakan perubahan yang bisa memengaruhi perilaku aplikasi sekalipun Anda tidak mengubah apa-apa. Untuk membantu Anda mempersiapkan, laman ini akan menjelaskan cara melakukan pengujian kompatibilitas dan cara memperbarui aplikasi Anda untuk menggunakan berbagai fitur baru Android 8.0:

  1. Pastikan kompatibilitas platform

    Verifikasi apakah aplikasi Anda berfungsi penuh pada versi baru platform ini. Pada tahap ini, Anda tidak menggunakan API baru atau mengubah targetSdkVersion aplikasi, namun mungkin diperlukan perubahan kecil.

  2. Bangun aplikasi Anda dengan atribut Android 8.0 SDK

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

Pastikan kompatibilitas platform

Yang menjadi sasaran di sini adalah memastikan bahwa aplikasi Anda berfungsi apa adanya di Android 8.0. Karena sebagian perubahan platform mungkin memengaruhi cara perilaku aplikasi, beberapa penyesuaian mungkin diperlukan, namun Anda tidak perlu menggunakan API baru atau mengubah targetSdkVersion.

Siapkan perangkat yang menjalankan Android 8.0

  • Jika Anda memiliki perangkat yang kompatibel (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P, atau Nexus Player), dapatkan citra sistem Android 8.0 untuk perangkat Anda dari laman Unduhan, kemudian ikuti petunjuk untuk mem-flash perangkat Anda.
  • Atau unduh citra sistem Android 8.0 untuk Android Emulator. Citra sistem ini dicantumkan di SDK Manager pada Android 8.0 Preview sebagai Google APIs Intel x86 Atom System Image.

    Catatan: Citra sistem Android 8.0 tersedia untuk diunduh hanya dari canary Android Studio 3.0. Untuk informasi selengkapnya, lihat bagian di bawah ini untuk mendapatkan Android 8.0 SDK.

Lakukan pengujian kompatibilitas

Secara umum, menguji kompatibilitas dengan Android 8.0 memerlukan tipe pengujian yang sama dengan yang Anda lakukan saat mempersiapkan 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 8.0 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 8.0.

Perubahan Rangkuman Referensi lebih lanjut
Pembaruan lokasi latar belakang yang semakin berkurang Jika aplikasi Anda menerima pembaruan lokasi dari layanan latar belakang, aplikasi akan semakin jarang menerima pembaruan pada Android 8.0 dibandingkan Android versi lama. Khususnya, layanan latar belakang tidak bisa menerima pembaruan lokasi lebih dari beberapa kali per jam. Akan tetapi, selagi aplikasi Anda di latar depan, laju pembaruan lokasi tidak akan berubah. Batas Lokasi Latar Belakang
net.hostname tidak lagi didukung Melakukan kueri properti sistem net.hostname menghasilkan null. Tidak ada
Pengecualian baru dari send(DatagramPacket) Metode send(DatagramPacket) akan melontarkan 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) kini selalu melontarkan NullPointerException; sebelumnya, NullPointerException tidak dilontarkan bila kumpulan tersebut kosong. Perubahan ini menjadikan perilaku konsisten dengan dokumentasi. Perubahan Perilaku: Penanganan kumpulan
NullPointerException yang tepat dari Currency.getDisplayName(null) Pemanggilan Currency.getDisplayName(null) akan melontarkan NullPointerException. Perubahan Perilaku: Lokal dan internasionalisasi

Untuk daftar perubahan perilaku yang lebih lengkap di Android 8.0, lihat juga Perubahan Perilaku Android 8.0.

Bangun aplikasi Anda dengan fitur Android 8.0

Selain menawarkan API baru, Android 8.0 menyebabkan perubahan perilaku lainnya bila Anda memperbarui targetSdkVersion, seperti yang dijelaskan dalam tabel 2. Bagian ini menjelaskan cara menyiapkan lingkungan development Anda untuk menargetkan platform baru dan mulai membangun serta menguji perubahan dan fitur baru dengan Android 8.0 API.

Catatan: Langkah-langkah yang dijelaskan di atas untuk memastikan kompatibilitas platform adalah prasyarat bagi pembangunan untuk Android 8.0, jadi pastikan Anda melakukan langkah-langkah itu terlebih dahulu.

Dapatkan Android 8.0 SDK

  1. Pasang Canary Android Studio 3.0.

    Hanya Android Studio 3.0 yang menyertakan dukungan untuk semua fitur developer baru yang tersedia pada Android 8.0. Jadi Anda perlu mendapatkan versi canary Android Studio 3.0 untuk mulai menggunakan Android 8.0 SDK. Namun Anda tetap bisa mempertahankan versi stabil Android Studio yang telah dipasang.

  2. Luncurkan Android Studio 3.0 dan buka SDK Manager dengan mengeklik Tools > Android > SDK Manager.
  3. Di tab SDK Platforms, centang Show Package Details. Di bawah Android 8.0 Preview, centang yang berikut ini:
    • Android SDK Platform O
    • Google APIs Intel x86 Atom System Image (hanya diperlukan untuk emulator)
  4. Beralih ke tab SDK Tools dan centang semua item yang menyediakan pembaruan (klik setiap kotak centang yang menampilkan tanda hubung ). Ini akan menyertakan hal-hal berikut yang diperlukan:
    • Android SDK Build-Tools 26.0.0 (rc2 atau yang lebih tinggi)
    • Android SDK Platform-Tools 26.0.0 (rc2 atau yang lebih tinggi)
    • Android Emulator 26.0.0
    • Support Repository
  5. Klik OK untuk memasang semua paket SDK yang dipilih.

Kini Anda siap memulai pengembangan dengan Android 8.0.

Perbarui konfigurasi pembangunan Anda

Perbarui compileSdkVersion, buildToolsVersion, targetSdkVersion, dan versi Pustaka Dukungan dengan versi berikut ini:

android {
  compileSdkVersion 'android-O'
  buildToolsVersion '26.0.0-rc2'

  defaultConfig {
    targetSdkVersion 'O'
  }
  ...
}

dependencies {
  compile 'com.android.support:appcompat-v7:26.0.0-beta1'
}

// REQUIRED: Google's new Maven repo is required for the latest
// support library that is compatible with Android 8.0
repositories {
    maven {
        url 'https://maven.google.com'
    }
}

Anda tidak bisa mempublikasikan aplikasi dengan konfigurasi ini. Versi "O" adalah API level provisional yang hanya berguna bagi development dan pengujian selama Android 8.0. Anda harus menunggu untuk mempublikasikan perubahan Android 8.0 hingga API level final dirilis, kemudian perbarui lagi konfigurasi Anda pada saat itu.

Buang penerima siaran dari file manifes Anda

Karena Android 8.0 memperkenalkan beberapa batasan baru untuk penerima siaran, Anda harus membuang penerima siaran yang telah didaftarkan untuk maksud siaran implisit. Membiarkannya apa adanya tidak akan merusak aplikasi Anda pada waktu pembangunan atau waktu proses, namun tidak ada efeknya bila aplikasi Anda berjalan di Android 8.0.

Maksud siaran eksplisit —adalah maksud yang hanya bisa direspons aplikasi Anda agar—tetap berfungsi sama pada Android 8.0.

Ada beberapa pengecualian pada pembatasan baru ini. Untuk daftar siaran implisit yang tetap berfungsi di aplikasi yang menargetkan Android 8.0, lihat Pengecualian Siaran Implisit.

Uji aplikasi Android 8.0 Anda

Bila telah menyelesaikan persiapan di atas, Anda bisa membangun aplikasi kemudian mengujinya lebih jauh untuk memastikannya berfungsi dengan benar bila menargetkan Android 8.0. Inilah waktu lain yang baik untuk meninjau Panduan Kualitas Aplikasi Inti dan Praktik Terbaik untuk Pengujian.

Bila Anda membangun aplikasi dengan targetSdkVersion disetel untuk Android 8.0, 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 8.0.

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

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

Perubahan Rangkuman Referensi lebih lanjut
Privasi Android 8.0 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 pustaka asli, Android 8.0 memberlakukan aturan bahwa data tidak boleh dapat dieksekusi, dan kode tidak boleh dapat ditulis. Perubahan Perilaku: Pustaka Asli
Header ELF dan validasi bagian Linker dinamis memeriksa nilai-nilai lainnya di header ELF dan header bagian, dan akan gagal jika tidak valid. Perubahan Perilaku: Pustaka Asli
Notifikasi Aplikasi yang menargetkan SDK versi Android 8.0 harus mengimplementasikan satu atau beberapa saluran notifikasi untuk mengeposkan 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 kumpulan
Metode Collections.sort() Dalam implementasi daftar, Collections.sort() kini melontarkan ConcurrentModificationException. Perubahan Perilaku: Penanganan kumpulan

Untuk daftar perubahan perilaku yang lebih lengkap di Android 8.0, lihat Perubahan Perilaku Android 8.0.

Untuk mendalami berbagai API dan fitur baru yang tersedia bersama Android 8.0, lihat API dan Fitur Android 8.0.