page.title=Perubahan Perilaku page.keywords=pratinjau,sdk,kompatibilitas meta.tags="preview", "compatibility" page.tags="preview", "developer preview" page.image=images/cards/card-n-changes_2x.png @jd:body

Dalam dokumen ini

  1. Peningkatan Kinerja
    1. Istirahatkan
    2. Optimalisasi Latar Belakang
  2. Perubahan Izin
  3. Berbagi File Antar Aplikasi
  4. Peningkatan Aksesibilitas
    1. Perbesaran Layar
    2. Vision Settings di Setup Wizard
  5. Penautan Aplikasi NDK ke Pustaka Platform
  6. Android for Work
  7. Retensi Anotasi
  8. Poin Penting Lainnya

Lihat Juga

  1. Ringkasan Android N API

Bersama fitur dan kemampuan baru, Android N menyertakan berbagai macam perubahan sistem dan perubahan perilaku API. Dokumen ini menyoroti beberapa perubahan utama yang harus dipahami dan diperhitungkan dalam aplikasi Anda.

Jika Anda sebelumnya telah mempublikasikan aplikasi untuk Android, ketahuilah bahwa aplikasi Anda mungkin dipengaruhi oleh perubahan dalam platform.

Baterai dan Memori

Android N menyertakan perubahan perilaku sistem yang bertujuan untuk meningkatkan daya tahan baterai perangkat dan mengurangi penggunaan RAM. Perubahan ini bisa memengaruhi akses aplikasi Anda ke sumber daya sistem, termasuk cara aplikasi Anda berinteraksi dengan aplikasi lain melalui intent implisit tertentu.

Istirahatkan

Diperkenalkan dalam Android 6.0 (API level 23), Istirahatkan meningkatkan daya tahan baterai dengan menangguhkan aktivitas CPU dan jaringan bila pengguna tidak mencabut perangkat, tidak bergerak, dan layar dinonaktifkan. Android N lebih menyempurnakan Istirahatkan dengan menerapkan subset CPU dan pembatasan jaringan bila perangkat dicabut dan layar dinonaktifkan, namun tidak harus diam, misalnya, bila handset dibawa bepergian di saku pengguna.

Gambar 1. Ilustrasi tentang cara Istirahatkan menerapkan pembatasan aktivitas sistem level pertama untuk meningkatkan daya tahan baterai.

Bila perangkat sedang menggunakan daya baterai, dan layar telah nonaktif selama jangka waktu tertentu, perangkat akan memasuki Istirahatkan dan menerapkan subset pembatasan pertama: Perangkat akan menutup akses jaringan aplikasi, serta menangguhkan pekerjaan dan sinkronisasi. Jika perangkat sedang diam selama jangka waktu tertentu setelah memasuki Istirahatkan, sistem akan menerapkan pembatasan Istirahatkan selebihnya terhadap alarm {@link android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager}, GPS, dan pemindaian Wi-Fi. Tidak peduli apakah sebagian atau semua pembatasan Istirahatkan diterapkan, sistem akan membangunkan perangkat selama jeda pemeliharaan singkat, dan selama itu aplikasi diizinkan mengakses jaringan dan bisa mengeksekusi semua pekerjaan/sinkronisasi yang telah ditangguhkan.

Gambar 2. Ilustrasi tentang cara Istirahatkan menerapkan pembatasan aktivitas sistem level kedua setelah perangkat diam selama jangka waktu tertentu.

Perhatikan, mengaktifkan layar atau mencolokkan steker perangkat akan mengeluarkan dari Istirahatkan dan membuang pembatasan pemrosesan ini. Perilaku tambahan ini tidak memengaruhi rekomendasi dan praktik terbaik dalam menyesuaikan aplikasi Anda dengan versi Istirahatkan sebelumnya yang diperkenalkan dalam Android 6.0 (API level 23), seperti yang dibahas di Mengoptimalkan untuk Istirahatkan dan Aplikasi Siaga. Anda tetap harus mengikuti rekomendasi itu, seperti menggunakan Google Cloud Messaging (GCM) untuk mengirim dan menerima pesan, serta mulai merencanakan pembaruan untuk mengakomodasi perilaku Istirahatkan tambahan.

Project Svelte: Optimalisasi Latar Belakang

Android N membuang tiga siaran implisit untuk membantu mengoptimalkan penggunaan memori dan konsumsi daya. Perubahan ini penting karena siaran implisit sering memulai aplikasi yang telah didaftarkan untuk mendengarkannya di latar belakang. Membuang siaran ini bisa sangat menguntungkan kinerja perangkat dan pengalaman pengguna.

Perangkat seluler seringkali mengalami perubahan konektivitas, seperti saat berpindah antara Wi-Fi dan data seluler. Saat ini, aplikasi bisa memantau perubahan dalam konektivitas dengan mendaftarkan suatu penerima untuk siaran implisit {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION} dalam manifes mereka. Karena banyak aplikasi yang didaftarkan untuk menerima siaran ini, switch jaringan tunggal bisa menyebabkan semuanya aktif dan memproses siaran tersebut secara bersamaan.

Demikian pula, dalam Android versi sebelumnya, aplikasi bisa mendaftar untuk menerima siaran implisit {@link android.hardware.Camera#ACTION_NEW_PICTURE} dan {@link android.hardware.Camera#ACTION_NEW_VIDEO} dari aplikasi lain, seperti Kamera. Bila pengguna mengambil gambar dengan aplikasi Kamera, semua aplikasi ini akan aktif untuk memproses siaran.

Untuk meminimalkan masalah ini, Android N menerapkan optimalisasi berikut:

Jika aplikasi Anda menggunakan intent ini, Anda harus membuang dependensi padanya secepat mungkin agar Anda bisa menargetkan perangkat Android N dengan benar. Kerangka kerja Android menyediakan beberapa solusi untuk mengurangi kebutuhan akan siaran implisit ini. Misalnya, {@link android.app.job.JobScheduler} API menyediakan mekanisme yang tangguh untuk menjadwalkan operasi jaringan bila kondisi yang ditetapkan, seperti koneksi ke jaringan berbiaya tetap, terpenuhi. Anda juga dapat menggunakan {@link android.app.job.JobScheduler} untuk bereaksi terhadap perubahan pada penyedia materi.

Untuk informasi selengkapnya tentang optimalisasi latar belakang di N dan cara menyesuaikan aplikasi Anda, lihat Optimalisasi Latar Belakang.

Perubahan Izin

Android N menyertakan perubahan pada izin yang bisa memengaruhi aplikasi Anda.

Perubahan izin sistem file

Guna meningkatkan keamanan file privat, direktori privat aplikasi yang menargetkan Android N atau yang lebih tinggi memiliki akses terbatas (0700). Pengaturan ini mencegah kebocoran metadata dari file privat, seperti ukuran atau eksistensi. Perubahan izin ini memiliki beberapa efek samping:

Berbagi File Antar Aplikasi

Untuk aplikasi yang menargetkan Android N, kerangka kerja Android menerapkan kebijakan {@link android.os.StrictMode} API yang melarang mengekspos URI {@code file://} di luar aplikasi Anda. Jika sebuah intent berisi URI file meninggalkan aplikasi Anda, aplikasi tersebut akan gagal dengan pengecualian {@code FileUriExposedException}.

Untuk berbagi file antar aplikasi, Anda harus mengirim URI {@code content://} dan memberikan izin akses sementara pada URI. Cara termudah untuk memberikan izin ini adalah dengan menggunakan kelas {@link android.support.v4.content.FileProvider}. Untuk informasi selengkapnya mengenai izin dan berbagi file, lihat Berbagi File.

Peningkatan Aksesibilitas

Android N menyertakan perubahan yang bertujuan meningkatkan kegunaan platform untuk pengguna dengan penglihatan yang rendah atau lemah. Perubahan ini umumnya tidak memerlukan perubahan kode dalam aplikasi Anda, akan tetapi Anda harus memeriksa fitur ini dan mengujinya dengan aplikasi untuk menilai kemungkinan dampaknya terhadap pengalaman pengguna.

Perbesaran Layar

Android N memungkinkan pengguna menyetel Display size yang akan memperbesar atau memperkecil semua elemen pada layar, sehingga meningkatkan aksesibilitas perangkat bagi pengguna yang kurang melihat. Pengguna tidak bisa memperbesar layar melewati lebar layar minimum sw320dp, yang merupakan lebar Nexus 4, yakni ponsel ukuran sedang pada umumnya.

Gambar 3. Layar di sebelah kanan menampilkan efek penambahan Display size perangkat yang menjalankan citra sistem Android N.

Bila kepadatan perangkat berubah, sistem akan memberi tahu aplikasi yang sedang berjalan dengan cara berikut:

Sebagian besar aplikasi tidak perlu melakukan perubahan untuk mendukung fitur ini, asalkan aplikasi tersebut mengikuti praktik terbaik Android. Hal-hal tertentu yang harus diperiksa:

Vision Settings di Setup Wizard

Android N menyertakan Vision Settings di layar Sambutan, di mana pengguna bisa menyiapkan setelan aksesibilitas berikut pada perangkat baru: Magnification gesture, Font size, Display size dan TalkBack. Perubahan ini meningkatkan visibilitas bug terkait dengan setelan layar yang berbeda. Untuk mengurangi dampak fitur ini, Anda harus menguji aplikasi dengan setelan ini diaktifkan. Anda bisa menemukannya pada Settings > Accessibility.

Penautan Aplikasi NDK ke Pustaka Platform

Android N menyertakan perubahan ruang nama untuk mencegah pemuatan API non-publik. Jika menggunakan NDK, Anda hanya boleh menggunakan API publik dari platform Android. Menggunakan API non-publik dalam rilis Android resmi berikutnya bisa menyebabkan aplikasi mogok.

Untuk memberi tahu Anda agar menggunakan API non-publik, aplikasi yang berjalan pada perangkat Android N akan menghasilkan kesalahan dalam keluaran logcat bila aplikasi memanggil API non-publik. Kesalahan ini juga ditampilkan di layar perangkat berupa pesan untuk membantu meningkatkan kepedulian terhadap situasi ini. Anda harus memeriksa kode aplikasi untuk membuang penggunaan API platform non-publik dan secara saksama menguji aplikasi Anda menggunakan perangkat pratinjau atau emulator.

Jika aplikasi Anda bergantung pada pustaka platform, lihat dokumentasi NDK untuk perbaikan tipikal guna menggantikan API privat umum dengan padanan API publik. Anda mungkin juga menautkan ke pustaka platform tanpa menyadarinya, terutama jika aplikasi Anda menggunakan pustaka yang merupakan bagian dari platform ini (seperti libpng), namun bukan bagian dari NDK. Dalam hal itu, pastikan APK Anda berisi semua file .so yang ingin ditautkan.

Perhatian: Beberapa pustaka pihak ketiga mungkin menautkan ke API non-publik. Jika menggunakan pustaka ini, aplikasi Anda bisa mogok saat dijalankan pada rilis resmi Android berikutnya.

Aplikasi tidak boleh bergantung pada atau menggunakan pustaka bawaan yang tidak disertakan dalam NDK, karena bisa mengalami perubahan, atau dipindahkan dari satu rilis Android ke rilis lainnya. Peralihan dari OpenSSL ke BoringSSL merupakan satu contoh dari perubahan semacam ini. Selain itu, perangkat yang berbeda bisa menawarkan tingkat kompatibilitas yang berbeda, karena tidak ada persyaratan kompatibilitas untuk pustaka platform yang tidak disertakan dalam NDK. Jika Anda harus mengakses pustaka non-NDK pada perangkat yang lebih lama, jadikan pemuatan bergantung pada level Android API.

Untuk membantu Anda mendiagnosis tipe masalah ini ada beberapa contoh kesalahan Java dan NDK yang mungkin Anda temui saat berusaha membangun aplikasi dengan Android N:

Contoh kesalahan Java:

java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
    is not accessible for the namespace "classloader-namespace"

Contoh kesalahan NDK:

dlopen failed: cannot locate symbol "__system_property_get" referenced by ...

Inilah beberapa perbaikan tipikal untuk aplikasi yang mengalami tipe kesalahan ini:

Android for Work

Android N berisi perubahan untuk aplikasi yang menargetkan Android for Work, termasuk perubahan pada pemasangan sertifikat, penyetelan ulang sandi, manajemen pengguna tambahan, dan akses ke identifier perangkat. Jika Anda membangun aplikasi untuk lingkungan Android for Work, Anda harus meninjau perubahan ini dan memodifikasi aplikasi sebagaimana mestinya.

Untuk informasi selengkapnya tentang perubahan Android for Work di Android N, lihat Pembaruan Android for Work.

Retensi Anotasi

Android N memperbaiki bug dengan visibilitas anotasi diabaikan. Masalah ini mengaktifkan waktu proses untuk mengakses anotasi yang seharusnya tidak bisa dilakukan. Anotasi ini termasuk:

Jika aplikasi Anda mengandalkan perilaku ini, tambahkan kebijakan retensi untuk anotasi yang harus tersedia di waktu proses. Caranya dengan menggunakan {@code @Retention(RetentionPolicy.RUNTIME)}.

Poin Penting Lainnya