Android 7.0 Nougat memperkenalkan berbagai fitur dan kemampuan baru bagi pengguna dan developer. Dokumen ini merangkum apa saja yang baru untuk developer.
Pastikan lihat perubahan perilaku Android 7.0 untuk mempelajari area mana saja pada aplikasi yang dapat terpengaruh oleh perubahan platform.
Untuk mempelajari lebih lanjut fitur konsumen Android 7.0, kunjungi www.android.com.
Dukungan Multi-Jendela
Di Android 7.0, kami memperkenalkan fitur multitasking baru yang banyak diminta ke dalam platform — dukungan multi-aplikasi.
Pengguna sekarang bisa membuka dua aplikasi sekaligus di layar.
- Pada ponsel dan tablet yang menjalankan Android 7.0, pengguna dapat menjalankan dua aplikasi secara berdampingan atau satu aplikasi di atas yang lain dalam mode layar terpisah. Pengguna dapat mengubah ukuran aplikasi dengan menarik pemisah di antara mereka.
- Di perangkat Android TV, aplikasi dapat menempatkan dirinya sendiri dalam mode picture-in-picture, yang memungkinkan aplikasi untuk terus menampilkan konten sementara pengguna menjelajahi atau berinteraksi dengan aplikasi lain.
![Aplikasi seluler yang berjalan dalam mode layar terpisah](https://developer.android.com/static/images/android-7.0/mw-portrait.png?authuser=8&hl=id)
Gambar 1. Aplikasi yang berjalan dalam mode layar terpisah.
Khususnya pada tablet dan perangkat dengan layar lebih besar lainnya, dukungan multi-aplikasi memberi Anda cara baru untuk berinteraksi dengan pengguna. Anda bahkan dapat mengaktifkan fitur tarik lalu lepas di aplikasi agar pengguna dapat dengan mudah menarik konten ke atau dari aplikasi Anda — cara yang bagus untuk meningkatkan pengalaman pengguna.
Anda dapat dengan mudah menambahkan dukungan multi-aplikasi ke aplikasi dan mengonfigurasi cara menangani tampilan multi-aplikasi. Misalnya, Anda bisa menetapkan dimensi minimum yang diizinkan aktivitas, sehingga mencegah pengguna mengubah ukuran aktivitas di bawah ukuran tersebut. Anda juga dapat menonaktifkan tampilan multi-aplikasi untuk aplikasi, yang memastikan sistem hanya akan menampilkan aplikasi dalam mode layar penuh.
Untuk informasi selengkapnya, lihat dokumentasi developer Dukungan Multi-Aplikasi.
Penyempurnaan Notifikasi
Di Android 7.0 kami telah mendesain ulang notifikasi agar lebih mudah dan lebih cepat digunakan. Beberapa perubahan tersebut antara lain:
- Pembaruan template: Kami memperbarui template notifikasi untuk lebih menekankan banner besar dan avatar. Developer akan dapat memanfaatkan template baru dengan penyesuaian kode yang minimal.
-
Penyesuaian gaya pesan: Anda dapat menyesuaikan lebih banyak label antarmuka pengguna yang terkait dengan notifikasi menggunakan class
MessagingStyle
. Anda dapat mengonfigurasi pesan, judul percakapan, dan tampilan konten. - Paket notifikasi: Sistem dapat mengelompokkan pesan, misalnya menurut topik pesan, dan menampilkan grup. Pengguna dapat mengambil tindakan, seperti Tutup atau Arsipkan, atas tindakan yang akan dilakukan. Jika sudah mengimplementasikan notifikasi untuk Android Wear, Anda akan terbiasa dengan model ini.
- Balasan langsung: Untuk aplikasi komunikasi real-time, sistem Android mendukung balasan inline sehingga pengguna dapat dengan cepat membalas SMS atau pesan teks secara langsung dalam antarmuka notifikasi.
- Tampilan kustom: Dua API baru memungkinkan Anda memanfaatkan dekorasi sistem, seperti header notifikasi dan tindakan, saat menggunakan tampilan kustom dalam notifikasi.
![Perangkat seluler menampilkan notifikasi pesan yang dipaketkan](https://developer.android.com/static/images/android-7.0/notifications-1.png?authuser=8&hl=id)
![Perangkat seluler menampilkan notifikasi satu pesan](https://developer.android.com/static/images/android-7.0/notifications-3.png?authuser=8&hl=id)
![Perangkat seluler menampilkan balasan pesan inline dalam antarmuka notifikasi](https://developer.android.com/static/images/android-7.0/notifications-2.png?authuser=8&hl=id)
Gambar 2. Gabungan notifikasi dan balasan langsung.
Untuk mempelajari cara menerapkan fitur baru ini, lihat panduan Notifikasi.
Kompilasi JIT/AOT yang dipandu profil
Di Android 7.0, kami telah menambahkan compiler Just in Time (JIT) dengan pembuatan profil kode ke ART, yang memungkinkannya terus meningkatkan performa aplikasi Android saat dijalankan. Compiler JIT melengkapi compiler Ahead of Time (AOT) ART saat ini dan membantu meningkatkan performa runtime, menghemat ruang penyimpanan, serta mempercepat update aplikasi dan update sistem.
Kompilasi yang dipandu profil memungkinkan ART mengelola kompilasi AOT/JIT untuk setiap aplikasi sesuai dengan penggunaan sebenarnya, serta kondisi di perangkat. Misalnya, ART menyimpan profil setiap metode terbaik aplikasi dan dapat mengompilasi serta meng-cache metode tersebut untuk mendapatkan performa terbaik. Cara ini membuat bagian lain dari aplikasi tidak dikompilasi hingga benar-benar digunakan.
Selain meningkatkan performa untuk bagian-bagian penting aplikasi, kompilasi yang dipandu profil membantu mengurangi jejak RAM keseluruhan aplikasi, termasuk biner terkait. Fitur ini terutama penting pada perangkat dengan memori minim.
ART mengelola kompilasi yang dipandu profil dengan cara yang meminimalkan dampak pada baterai perangkat. Compose melakukan prakompilasi hanya jika perangkat sedang tidak ada aktivitas dan mengisi daya, sehingga menghemat waktu dan baterai dengan melakukan pekerjaan tersebut di awal.
Jalur Cepat untuk Pasang Aplikasi
Salah satu manfaat paling nyata dari compiler JIT ART adalah kecepatan penginstalan aplikasi dan update sistem. Bahkan aplikasi besar yang perlu waktu beberapa menit untuk dioptimalkan dan diinstal di Android 6.0 kini dapat diinstal hanya dalam hitungan detik. Pembaruan sistem juga lebih cepat, karena tidak ada lagi langkah pengoptimalan.
Istirahatkan Kapan Saja...
Android 6.0 memperkenalkan fitur Istirahatkan, yaitu mode sistem yang menghemat baterai dengan menunda aktivitas CPU dan jaringan aplikasi saat perangkat sedang tidak ada aktivitas, seperti saat diletakkan di atas meja atau dalam panel samping.
Kini di Android 7.0, fitur Istirahatkan bekerja lebih baik dan menghemat baterai kapan saja di mana saja. Setiap kali layar mati selama jangka waktu tertentu dan perangkat tidak dicolokkan ke sumber listrik, Istirahatkan menerapkan subset pembatasan CPU dan jaringan yang sudah dikenal ke aplikasi. Artinya, pengguna dapat menghemat baterai meskipun saat membawa perangkat di saku.
![Ilustrasi tentang cara Istirahatkan menerapkan pembatasan aktivitas sistem tingkat pertama untuk meningkatkan daya tahan baterai](https://developer.android.com/static/images/android-7.0/doze-diagram-1.png?authuser=8&hl=id)
Gambar 3. Mode Istirahatkan kini menerapkan pembatasan untuk meningkatkan masa pakai baterai bahkan saat perangkat sedang tidak bergerak.
Tidak lama setelah layar nonaktif saat perangkat menggunakan daya baterai, fitur Istirahatkan akan membatasi akses jaringan serta menunda tugas dan sinkronisasi. Selama masa pemeliharaan singkat, aplikasi diizinkan mengakses jaringan dan semua tugas/sinkronisasi yang ditangguhkan akan dijalankan. Mengaktifkan layar atau mencolokkan perangkat akan mengeluarkan perangkat dari Istirahatkan.
Saat perangkat kembali diam, dengan layar nonaktif dan menggunakan baterai selama
jangka waktu tertentu, Istirahatkan akan menerapkan pembatasan CPU dan jaringan secara penuh pada PowerManager.WakeLock
, alarm AlarmManager
, dan
pemindaian GPS/Wi-Fi.
Praktik terbaik untuk menyesuaikan aplikasi Anda dengan Istirahatkan adalah sama, baik perangkat sedang bergerak atau tidak, jadi jika Anda sudah mengupdate aplikasi untuk menangani mode Istirahatkan dengan baik, berarti Anda sudah siap. Jika belum, mulai menyesuaikan aplikasi Anda dengan Istirahatkan sekarang.
Project Svelte: Optimisasi Latar Belakang
Project Svelte adalah upaya berkelanjutan untuk meminimalkan penggunaan RAM oleh sistem dan aplikasi di berbagai perangkat Android dalam ekosistem. Di Android 7.0, Project Svelte berfokus pada pengoptimalan cara aplikasi berjalan di latar belakang.
Proses latar belakang merupakan bagian terpenting dari sebagian besar aplikasi. Jika ditangani dengan benar, hal ini dapat membuat pengalaman pengguna Anda menjadi luar biasa — segera, cepat, dan sesuai konteks. Jika tidak ditangani dengan benar, pemrosesan latar belakang dapat menghabiskan RAM (dan baterai) yang tidak perlu serta memengaruhi performa sistem untuk aplikasi lain.
Sejak Android 5.0, JobScheduler
telah menjadi
cara yang disukai untuk melakukan pekerjaan latar belakang dengan cara yang baik
bagi pengguna. Aplikasi dapat menjadwalkan tugas sekaligus memungkinkan sistem melakukan pengoptimalan berdasarkan
kondisi memori, daya, dan konektivitas. JobScheduler menawarkan kontrol serta
kemudahan, dan kami ingin semua aplikasi menggunakannya.
Opsi tepat lainnya adalah
GCMNetworkManager
, bagian dari Layanan Google Play, yang
menawarkan penjadwalan tugas serupa dengan kompatibilitas di seluruh versi lama
Android.
Kami terus memperluas JobScheduler
dan
GCMNetworkManager
untuk memenuhi lebih banyak
kasus penggunaan Anda — misalnya, di Android 7.0 Anda kini dapat menjadwalkan pekerjaan latar belakang
berdasarkan perubahan di Penyedia Konten. Pada saat yang sama, kami mulai
menghilangkan beberapa pola lama yang dapat mengurangi performa sistem,
terutama pada perangkat dengan memori rendah.
Di Android 7.0, kami menghapus tiga siaran implisit yang biasa digunakan —
CONNECTIVITY_ACTION
, ACTION_NEW_PICTURE
, dan ACTION_NEW_VIDEO
— karena ketiganya dapat mengaktifkan
proses latar belakang beberapa aplikasi sekaligus serta menguras memori dan baterai. Jika
aplikasi Anda menerimanya, manfaatkan Android 7.0 untuk
bermigrasi ke JobScheduler
dan API terkait sebagai gantinya.
Lihat dokumentasi Pengoptimalan Latar Belakang untuk mengetahui detailnya.
SurfaceView
Android 7.0 menghadirkan gerakan sinkron ke class SurfaceView
, yang memberikan performa baterai lebih baik
daripada TextureView
dalam kasus tertentu: Saat merender video atau
konten 3D, aplikasi dengan posisi video scroll dan animasi menggunakan lebih sedikit daya dengan
SurfaceView
dibandingkan dengan TextureView
.
SurfaceView
memungkinkan komposisi yang lebih hemat baterai di
layar, karena dikomposisikan dalam hardware khusus, secara terpisah dari konten jendela
aplikasi. Akibatnya, salinan perantara yang dibuat
lebih sedikit daripada TextureView
.
Posisi konten objek SurfaceView
kini diperbarui secara sinkron
dengan konten aplikasi yang memuatnya. Salah satu hasil dari perubahan ini adalah terjemahan
sederhana atau skala video yang diputar dalam SurfaceView
tidak lagi menghasilkan kotak hitam bersamaan dengan tampilan saat bergerak.
Mulai Android 7.0, sebaiknya Anda menghemat daya dengan menggunakan
SurfaceView
, bukan TextureView
.
Penghemat Data
![Penghemat Data di Setelan](https://developer.android.com/static/images/android-7.0/datasaver.png?authuser=8&hl=id)
Gambar 4. Penghemat Data di Setelan.
Selama masa pakai perangkat seluler, biaya paket data seluler biasanya melebihi harga perangkat itu sendiri. Bagi banyak pengguna, data seluler adalah sumber daya mahal yang ingin mereka hemat.
Android 7.0 memperkenalkan mode Penghemat Data, yaitu layanan sistem baru yang membantu mengurangi penggunaan data seluler oleh aplikasi, baik saat roaming, mendekati akhir siklus penagihan, atau pada paket data prabayar yang kecil. Penghemat Data memberi pengguna kontrol atas cara aplikasi menggunakan data seluler dan memungkinkan developer memberikan layanan yang lebih efisien saat Penghemat Data aktif.
Ketika pengguna mengaktifkan Penghemat Data dalam Setelan dan perangkat menggunakan jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi tahu aplikasi untuk menggunakan lebih sedikit data di latar depan jika memungkinkan — misalnya dengan membatasi kecepatan bit untuk streaming, mengurangi kualitas gambar, menunda precaching optimis, dan sebagainya. Pengguna dapat mengizinkan aplikasi tertentu untuk mengizinkan penggunaan data berkuota di latar belakang meskipun Penghemat Data diaktifkan.
Android 7.0 memperluas ConnectivityManager
untuk memberi aplikasi
cara untuk mengambil
preferensi Penghemat Data pengguna dan memantau
perubahan preferensi. Semua aplikasi harus memeriksa apakah pengguna telah mengaktifkan Penghemat
Data dan berusaha membatasi penggunaan data latar depan dan latar belakang.
Vulkan API
Android 7.0 mengintegrasikan VulkanTM, sebuah API rendering 3D baru, ke dalam platform. Seperti OpenGLTM ES, Vulkan merupakan standar terbuka untuk grafis 3D dan rendering yang dikelola oleh Khronos Group.
Vulkan didesain dari nol untuk meminimalkan overhead CPU dalam driver, dan memungkinkan aplikasi Anda mengontrol operasi GPU lebih langsung. Vulkan juga memungkinkan paralelisasi yang lebih baik dengan memungkinkan beberapa thread menjalankan pekerjaan seperti pembuatan buffer perintah sekaligus.
Library dan alat pengembangan Vulkan telah dimasukkan ke dalam Android 7.0 SDK. Fitur tersebut meliputi:
- Header
- Layer validasi (pustaka debug)
- SPIR-V shader compiler
- Pustaka kompilasi shader waktu proses SPIR-V
Vulkan hanya tersedia untuk aplikasi pada perangkat dengan hardware yang mendukung Vulkan, seperti Nexus 5X, Nexus 6P, dan Nexus Player. Kami bekerja sama dengan partner untuk menghadirkan Vulkan ke lebih banyak perangkat sesegera mungkin.
Untuk mengetahui informasi selengkapnya, baca dokumentasi API.
Quick Settings Tile API
![Kotak Setelan Cepat di menu notifikasi](https://developer.android.com/static/images/android-7.0/quicksettings.png?authuser=8&hl=id)
Gambar 5. Kotak Setelan Cepat di menu notifikasi.
Setelan Cepat adalah cara populer dan mudah untuk menampilkan setelan dan tindakan utama, langsung dari menu notifikasi. Di Android 7.0, kami telah memperluas cakupan Setelan Cepat untuk membuatnya lebih berguna dan nyaman.
Kami telah menambahkan lebih banyak ruang untuk kartu Setelan Cepat tambahan, yang dapat diakses pengguna di seluruh area tampilan yang dipaginasi dengan menggeser ke kiri atau kanan. Kami juga telah memberi pengguna kontrol atas kartu Setelan Cepat yang akan muncul dan tempat tampilannya — pengguna dapat menambahkan atau memindahkan kartu hanya dengan menarik lalu melepasnya.
Bagi developer, Android 7.0 juga menambahkan API baru yang memungkinkan Anda menentukan kartu Setelan Cepat Anda sendiri untuk memberi pengguna akses mudah ke kontrol dan tindakan utama dalam aplikasi Anda.
Kartu Setelan Cepat dicadangkan untuk kontrol atau tindakan yang mendesak atau sering digunakan, dan tidak boleh digunakan sebagai pintasan untuk meluncurkan aplikasi.
Setelah menentukan kartu, Anda dapat menampilkannya kepada pengguna, yang dapat menambahkannya ke Setelan Cepat hanya dengan menarik lalu melepas.
Untuk mengetahui informasi tentang cara membuat kartu aplikasi, lihat dokumentasi referensi
untuk Tile
.
Pemblokiran Nomor
Android 7.0 kini mendukung pemblokiran nomor di platform dan menyediakan API framework agar penyedia layanan dapat mengelola daftar nomor blokir. Aplikasi SMS default, aplikasi telepon default, dan aplikasi operator dapat membaca dari dan menulis ke daftar nomor blokir. Daftar ini tidak dapat diakses oleh aplikasi lain.
Dengan menjadikan pemblokiran nomor sebagai fitur standar platform, Android menyediakan cara yang konsisten bagi aplikasi untuk mendukung pemblokiran nomor di berbagai perangkat. Manfaat lain yang bisa diperoleh aplikasi antara lain:
- Nomor yang diblokir untuk panggilan telepon juga akan diblokir untuk SMS
- Nomor yang diblokir dapat tetap ada meskipun terjadi reset dan perangkat melalui fitur Pencadangan & Pemulihan
- Beberapa aplikasi sekaligus bisa menggunakan daftar nomor blokir yang sama
Selain itu, dengan integrasi aplikasi operator melalui Android, operator dapat membaca daftar nomor yang diblokir di perangkat dan melakukan pemblokiran sisi layanan bagi pengguna untuk menghentikan panggilan dan pesan teks yang tidak diinginkan agar tidak sampai ke pengguna melalui media apa pun, seperti endpoint VOIP atau meneruskan telepon.
Untuk informasi selengkapnya, lihat dokumentasi referensi untuk
BlockedNumberContract
.
Penyaringan Panggilan Telepon
Android 7.0 memungkinkan aplikasi telepon default untuk menyaring panggilan masuk. Aplikasi
telepon melakukannya dengan menerapkan CallScreeningService
baru,
yang memungkinkan aplikasi telepon melakukan sejumlah tindakan berdasarkan
Call.Details
panggilan masuk, seperti:
- Menolak panggilan masuk
- Tidak mengizinkan panggilan telepon tersebut disimpan ke log panggilan
- Tidak menampilkan notifikasi untuk panggilan telepon tersebut kepada pengguna
Untuk informasi selengkapnya, lihat dokumentasi referensi untuk
CallScreeningService
.
Dukungan Multilokal, Lebih Banyak Bahasa yang Didukung
Android 7.0 kini memungkinkan pengguna memilih beberapa lokalitas di Setelan, untuk mendukung kasus penggunaan bilingual dengan lebih baik. Aplikasi dapat menggunakan API baru untuk mendapatkan lokalitas yang dipilih pengguna, lalu menawarkan pengalaman pengguna yang lebih canggih untuk pengguna multilokal, seperti menampilkan hasil penelusuran dalam beberapa bahasa dan tidak menawarkan untuk menerjemahkan halaman web dalam bahasa yang sudah diketahui pengguna.
Bersama dengan dukungan multilokal, Android 7.0 juga memperluas ragam bahasa yang tersedia untuk pengguna. Masing-masing menawarkan lebih dari 25 varian untuk bahasa yang umum digunakan seperti Inggris, Spanyol, Prancis, dan Arab. Library ini juga menambahkan dukungan parsial untuk lebih dari 100 bahasa baru.
Aplikasi bisa mendapatkan daftar lokalitas yang disetel oleh pengguna dengan memanggil
LocaleList.GetDefault()
. Untuk mendukung jumlah lokalitas yang diperluas, Android 7.0
mengubah cara me-resolve resource. Pastikan Anda menguji dan memverifikasi bahwa aplikasi
berfungsi seperti yang diharapkan dengan logika resolusi resource baru.
Untuk mempelajari perilaku resolusi resource baru dan praktik terbaik yang harus Anda ikuti, lihat Dukungan Multibahasa.
Emoji Baru
Android 7.0 memperkenalkan emoji tambahan dan fitur terkait emoji, termasuk emoji warna kulit dan dukungan untuk pemilih variasi. Jika aplikasi Anda mendukung emoji, ikuti panduan di bawah ini untuk memanfaatkan fitur terkait emoji ini.
-
Pastikan perangkat berisi emoji sebelum memasukkannya.
Untuk memeriksa emoji mana yang ada di
font sistem, gunakan metode
hasGlyph(String)
. - Pastikan emoji mendukung pemilih variasi. Pemilih variasi memungkinkan Anda menampilkan emoji tertentu berwarna atau hitam putih. Pada perangkat seluler, aplikasi akan menghadirkan emoji berwarna daripada hitam-putih. Namun, jika aplikasi Anda menampilkan emoji yang inline dengan teks, maka aplikasi harus menggunakan variasi hitam-putih. Untuk menentukan apakah sebuah emoji memiliki variasi, gunakan pemilih variasi. Untuk daftar lengkap karakter dengan variasinya, tinjau bagian urutan variasi emoji dalam Dokumentasi Unicode tentang variasi.
-
Pastikan emoji mendukung warna kulit. Android 7.0 memungkinkan pengguna memodifikasi warna kulit emoji yang dirender sesuai preferensi mereka. Aplikasi keyboard harus menyediakan indikasi visual
untuk emoji yang memiliki beberapa warna kulit dan harus memungkinkan pengguna
memilih warna kulit yang mereka sukai. Untuk menentukan emoji sistem yang memiliki
pengubah warna kulit, gunakan
metode
hasGlyph(String)
. Anda dapat menentukan emoji mana yang menggunakan warna kulit dengan membaca dokumentasi Unicode.
ICU4J API di Android
Android 7.0 kini menawarkan subset ICU4J API dalam framework Android pada
paket android.icu
. Migrasi mudah dilakukan, dan sebagian besar hanya memerlukan perubahan dari namespace com.java.icu
menjadi android.icu
. Jika Anda sudah menggunakan paket ICU4J dalam
aplikasi, beralih ke android.icu
API yang disediakan dalam framework
Android dapat menghasilkan penghematan ukuran APK yang signifikan.
Untuk mempelajari Android ICU4J API lebih lanjut, lihat Dukungan ICU4J.
WebView
Chrome + WebView, Bersama-sama
Mulai Chrome versi 51 di Android 7.0 dan yang lebih baru, APK Chrome di perangkat digunakan untuk menyediakan dan merender Android System WebView. Pendekatan ini meningkatkan penggunaan memori pada perangkat itu sendiri dan juga mengurangi bandwidth yang diperlukan untuk menjaga WebView tetap terbaru (karena APK WebView mandiri tidak akan diupdate lagi selama Chrome tetap diaktifkan).
Anda dapat memilih penyedia WebView dengan mengaktifkan Opsi Developer dan memilih Implementasi WebView. Anda dapat menggunakan versi Chrome apa pun yang kompatibel (Dev, Beta, atau Stabil) yang terinstal di perangkat Anda atau Webview APK mandiri untuk berfungsi sebagai implementasi WebView.
Multiproses
Mulai Chrome versi 51 di Android 7.0, WebView akan menjalankan konten web dalam proses sandbox terpisah jika opsi developer "Multiprocess WebView" diaktifkan.
Kami memerlukan masukan tentang kompatibilitas dan performa runtime di N sebelum mengaktifkan WebView multiproses di versi Android yang akan datang. Dalam versi ini, diperkirakan akan terjadi regresi waktu startup, penggunaan memori total dan performa rendering software.
Jika Anda menemukan masalah yang tidak terduga dalam mode multiproses, kami ingin mengetahuinya. Hubungi tim WebView di pelacak bug Chromium.
JavaScript berjalan sebelum laman dimuat
Mulai dari aplikasi yang menargetkan Android 7.0, konteks JavaScript akan direset saat halaman baru dimuat. Saat ini, konteks tersebut dibawa untuk halaman pertama yang dimuat di instance WebView baru.
Developer yang ingin memasukkan JavaScript ke dalam WebView harus mengeksekusi skrip setelah halaman mulai dimuat.
Geolokasi pada sumber yang tidak aman
Mulai aplikasi yang menargetkan Android 7.0, API geolokasi hanya akan diizinkan di asal yang aman (melalui HTTPS.) Kebijakan ini didesain untuk melindungi informasi pribadi pengguna saat mereka menggunakan koneksi yang tidak aman.
Pengujian dengan WebView Beta
WebView diupdate secara berkala, jadi sebaiknya Anda sering menguji kompatibilitas dengan aplikasi menggunakan saluran beta WebView. Untuk mulai menguji WebView versi pra-rilis di Android 7.0, download dan instal Chrome Dev atau Chrome Beta, lalu pilih sebagai implementasi WebView di bagian opsi developer seperti dijelaskan di atas. Harap laporkan masalah melalui pelacak bug Chromium agar kami dapat memperbaikinya sebelum versi WebView baru dirilis.
OpenGLTM ES 3.2 API
Android 7.0 menambahkan antarmuka kerangka kerja dan dukungan platform untuk OpenGL ES 3.2, termasuk:
- Semua ekstensi dari
Paket Ekstensi Android (AEP) kecuali untuk
EXT_texture_sRGB_decode
. - Floating-point framebuffer untuk HDR dan shading yang ditangguhkan.
- Panggilan draw BaseVertex agar batching dan streaming jadi lebih baik.
- Kontrol akses buffer yang tangguh untuk mengurangi overhead WebGL.
API framework untuk OpenGL ES 3.2 di Android 7.0 disediakan dengan
class GLES32
. Saat menggunakan OpenGL ES 3.2, pastikan untuk mendeklarasikan
persyaratan dalam file manifes, menggunakan tag <uses-feature>
dan
atribut android:glEsVersion
.
Untuk informasi tentang penggunaan OpenGL ES, termasuk cara memeriksa versi OpenGL ES yang didukung perangkat saat runtime, lihat Panduan OpenGL ES API.
Perekaman Android TV
Android 7.0 menambahkan kemampuan untuk merekam dan memutar konten dari layanan input Android TV melalui API perekaman baru. Dengan memanfaatkan API pergeseran waktu yang sudah ada, layanan input TV dapat mengontrol data saluran yang dapat direkam, cara penyimpanan sesi rekaman, dan mengelola interaksi pengguna dengan konten rekaman.
Untuk informasi selengkapnya, lihat API Perekaman Android TV.
Android for Work
Android for Work menambahkan banyak fitur dan API baru untuk perangkat yang menjalankan Android 7.0. Beberapa fitur utama tersedia di bawah — untuk mengetahui daftar lengkap fitur, lihat daftar fitur Android Enterprise.
Pertanyaan keamanan profil kerja
Pemilik profil yang menargetkan N SDK
dapat menentukan tantangan keamanan terpisah untuk aplikasi yang berjalan di
profil kerja. Tantangan kerja ditampilkan saat pengguna mencoba membuka
aplikasi kerja apa pun. Jawaban pertanyaan keamanan yang berhasil akan membuka kunci profil kerja dan mendekripsinya jika diperlukan. Untuk pemilik profil,
ACTION_SET_NEW_PASSWORD
akan meminta pengguna menyetel tantangan
kerja, dan ACTION_SET_NEW_PARENT_PROFILE_PASSWORD
meminta
pengguna menyetel kunci perangkat.
Pemilik profil dapat menetapkan kebijakan kode sandi yang berbeda untuk tantangan kerja
(seperti durasi PIN, atau apakah sidik jari dapat digunakan
untuk membuka kunci profil) menggunakan setPasswordQuality()
,
setPasswordMinimumLength()
, dan metode terkait. Pemilik
profil juga dapat menyetel kunci perangkat menggunakan instance DevicePolicyManager
yang ditampilkan oleh metode getParentProfileInstance()
baru.
Selain itu, pemilik profil dapat menyesuaikan layar kredensial untuk
tantangan kerja menggunakan metode setOrganizationColor()
dan
setOrganizationName()
yang baru.
Menonaktifkan pekerjaan
Pada perangkat dengan profil kerja, pengguna bisa beralih mode kerja. Jika mode kerja dinonaktifkan, pengguna terkelola akan dinonaktifkan untuk sementara, yang akan menonaktifkan aplikasi profil kerja, sinkronisasi latar belakang, dan notifikasi. Termasuk aplikasi pemilik profil. Saat mode kerja dinonaktifkan, sistem akan menampilkan ikon status persisten untuk mengingatkan pengguna bahwa mereka tidak dapat meluncurkan aplikasi kerja. Peluncur menunjukkan bahwa aplikasi kerja dan widget tidak dapat diakses.
Always-On VPN
Pemilik perangkat dan pemilik profil dapat memastikan bahwa aplikasi kerja selalu terhubung melalui VPN yang ditetapkan. Sistem akan otomatis memulai VPN tersebut setelah perangkat melakukan booting.
Metode DevicePolicyManager
baru adalah
setAlwaysOnVpnPackage()
dan
getAlwaysOnVpnPackage()
.
Karena layanan VPN dapat diikat langsung oleh sistem tanpa interaksi
aplikasi, klien VPN perlu menangani titik entri baru untuk VPN Selalu Aktif. Seperti
sebelumnya, layanan ditunjukkan ke sistem dengan tindakan pencocokan
filter intent android.net.VpnService
.
Pengguna juga dapat secara manual menetapkan klien VPN Selalu Aktif yang menerapkan
metode VPNService
menggunakan
Settings>More>Vpn. Opsi untuk mengaktifkan VPN Selalu Aktif dari Setelan hanya tersedia jika klien VPN menargetkan API level 24.
Penyediaan yang disesuaikan
Aplikasi dapat menyesuaikan alur penyediaan pemilik profil dan pemilik perangkat dengan warna dan logo perusahaan.
DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR
menyesuaikan
warna alur. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI
menyesuaikan alur dengan logo perusahaan.
Penyempurnaan Aksesibilitas
Android 7.0 kini menawarkan Vision Settings langsung di layar Sambutan untuk penyiapan perangkat baru. Hal ini memudahkan pengguna untuk menemukan dan mengonfigurasi fitur aksesibilitas di perangkat mereka, termasuk gestur pembesaran, ukuran font, ukuran layar, dan TalkBack.
Dengan fitur aksesibilitas yang penempatannya menjadi lebih jelas, pengguna kemungkinan besar akan mencoba aplikasi Anda dengan fitur yang diaktifkan. Pastikan Anda menguji aplikasi lebih awal dengan mengaktifkan setelan ini. Anda dapat mengaktifkannya dari Setelan > Aksesibilitas.
Selain itu, di Android 7.0, layanan aksesibilitas kini dapat membantu pengguna yang mengalami gangguan motorik untuk menyentuh layar. API baru ini memungkinkan pembuatan layanan dengan fitur-fitur seperti pelacakan wajah, pelacakan mata, pemindaian titik, dan sebagainya, untuk memenuhi kebutuhan pengguna tersebut.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi untuk
GestureDescription
.
Direct Boot
Direct Boot meningkatkan waktu startup perangkat dan memungkinkan aplikasi yang terdaftar memiliki fungsionalitas terbatas bahkan setelah reboot yang tidak terduga. Misalnya, jika perangkat terenkripsi dimulai ulang saat pengguna tidur, alarm terdaftar, pesan, dan panggilan masuk kini dapat terus memberi tahu pengguna seperti biasa. Ini juga berarti layanan aksesibilitas juga dapat segera tersedia setelah mulai ulang.
Direct boot memanfaatkan enkripsi berbasis file di Android 7.0 untuk mengaktifkan kebijakan enkripsi terperinci bagi sistem dan data aplikasi. Sistem menggunakan penyimpanan yang dienkripsi dengan perangkat untuk data sistem tertentu dan data aplikasi yang terdaftar secara eksplisit. Secara default, penyimpanan yang dienkripsi dengan kredensial digunakan untuk semua data sistem lainnya, data pengguna, aplikasi, dan data aplikasi.
Saat booting, sistem akan dimulai dalam mode terbatas dengan akses
ke data yang dienkripsi perangkat saja, dan tanpa akses umum ke aplikasi atau data.
Jika memiliki komponen yang ingin dijalankan dalam mode ini, Anda dapat mendaftarkannya
dengan menyetel flag dalam manifes. Setelah dimulai ulang, sistem akan mengaktifkan
komponen terdaftar dengan menyiarkan intent
LOCKED_BOOT_COMPLETED
. Sistem akan memastikan data aplikasi yang dienkripsi dengan perangkat tersedia
sebelum membuka kunci. Semua data lainnya tidak akan tersedia hingga Pengguna mengonfirmasi
kredensial layar kunci untuk mendekripsinya.
Pengesahan Kunci
Android 7.0 memperkenalkan pengesahan kunci, alat keamanan baru yang membantu Anda memastikan bahwa pasangan kunci yang disimpan dalam keystore yang didukung hardware perangkat melindungi dengan benar informasi sensitif yang digunakan aplikasi Anda. Dengan menggunakan alat ini, Anda mendapatkan keyakinan tambahan bahwa aplikasi Anda berinteraksi dengan kunci yang berada di hardware yang aman, meskipun perangkat yang menjalankan aplikasi Anda di-root. Jika Anda menggunakan kunci dari keystore yang didukung hardware di aplikasi, Anda harus menggunakan alat ini, terutama jika menggunakan kunci tersebut untuk memverifikasi informasi sensitif dalam aplikasi Anda.
Pengesahan kunci memungkinkan Anda memverifikasi bahwa pasangan kunci RSA atau EC telah dibuat dan disimpan di keystore yang didukung hardware perangkat dalam trusted execution environment (TEE) perangkat. Alat ini juga memungkinkan Anda menggunakan layanan di luar perangkat, seperti server back-end aplikasi, untuk menentukan dan memverifikasi dengan kuat penggunaan dan validitas pasangan kunci. Fitur ini memberikan tingkat keamanan tambahan yang melindungi pasangan kunci, meskipun jika ada orang yang melakukan root pada perangkat atau membahayakan keamanan platform Android yang berjalan di perangkat tersebut.
Catatan: Hanya sebagian kecil perangkat yang menjalankan Android 7.0
yang mendukung pengesahan kunci level hardware; semua perangkat lain yang menjalankan Android 7.0
menggunakan pengesahan kunci level software. Sebelum memverifikasi properti kunci yang didukung hardware perangkat dalam lingkungan level produksi, Anda harus memastikan bahwa perangkat mendukung pengesahan kunci level hardware. Untuk
melakukannya, Anda harus memastikan bahwa rantai sertifikat pengesahan berisi root
certificate yang ditandatangani oleh kunci utama pengesahan Google dan bahwa
elemen attestationSecurityLevel
dalam struktur data deskripsi
kunci disetel ke level keamanan
TrustedEnvironment.
Untuk informasi selengkapnya, lihat dokumentasi developer Pengesahan Kunci.
Network Security Config
Di Android 7.0, aplikasi dapat menyesuaikan perilaku koneksi aman (HTTPS, TLS) dengan aman, tanpa modifikasi kode apa pun, dengan menggunakan Konfigurasi Keamanan Jaringan deklaratif, bukan menggunakan API terprogram konvensional yang rawan error (misalnya, X509TrustManager).
Fitur yang didukung:
- Trust anchor kustom. Memungkinkan aplikasi menyesuaikan Certificate Authorities (CA) mana yang dipercaya untuk koneksi amannya. Misalnya, memercayai sertifikat tertentu yang ditandatangani sendiri atau kumpulan CA publik yang dibatasi.
- Penggantian khusus debug. Memungkinkan developer aplikasi men-debug koneksi aman aplikasi mereka dengan aman tanpa menambah risiko pada basis yang diinstal.
- Memilih tidak menggunakan traffic cleartext. Memungkinkan aplikasi melindungi dirinya sendiri dari penggunaan traffic cleartext yang tidak disengaja.
- Penyematan sertifikat. Fitur lanjutan yang memungkinkan aplikasi membatasi kunci server mana yang dipercaya untuk koneksi aman.
Untuk informasi selengkapnya, lihat Konfigurasi keamanan jaringan.
Otoritas Sertifikat Tepercaya Default
Secara default, aplikasi yang menargetkan Android 7.0 hanya memercayai sertifikat yang disediakan sistem dan tidak lagi memercayai Certificate Authority (CA) yang ditambahkan pengguna. Aplikasi yang menargetkan Android 7.0 (API level 24) yang ingin memercayai CA yang ditambahkan pengguna harus menggunakan Konfigurasi keamanan jaringan untuk menentukan cara tepercaya CA pengguna.
APK Signature Scheme v2
Android 7.0 memperkenalkan APK Signature Scheme v2, sebuah skema penandatanganan aplikasi baru yang menawarkan waktu penginstalan aplikasi lebih cepat dan lebih banyak perlindungan terhadap perubahan tidak sah pada file APK. Secara default, Android Studio 2.2 dan Plugin Android untuk Gradle 2.2 menandatangani aplikasi Anda menggunakan APK Signature Scheme v2 dan skema penandatanganan tradisional yang menggunakan penandatanganan JAR.
Meskipun kami merekomendasikan untuk menerapkan APK Signature Scheme v2 ke aplikasi Anda, skema
baru ini tidak wajib. Jika aplikasi Anda tidak di-build dengan benar saat menggunakan APK Signature Scheme v2, Anda dapat menonaktifkan skema baru ini. Proses penonaktifan
menyebabkan Android Studio 2.2 dan Plugin Android untuk Gradle 2.2 menandatangani
aplikasi Anda menggunakan skema penandatanganan tradisional saja. Untuk menandatangani hanya dengan skema tradisional, buka file build.gradle
level modul, lalu tambahkan baris v2SigningEnabled false
ke konfigurasi penandatanganan rilis Anda:
android { ... defaultConfig { ... } signingConfigs { release { storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" v2SigningEnabled false } } }
Perhatian: Jika Anda menandatangani aplikasi menggunakan APK
Signature Scheme v2 dan membuat perubahan lebih lanjut pada aplikasi, tanda tangan aplikasi akan menjadi tidak valid. Oleh karena itu, gunakan alat seperti zipalign
sebelum menandatangani aplikasi menggunakan APK Signature Scheme v2, bukan setelahnya.
Untuk mengetahui informasi selengkapnya, baca dokumen Android Studio yang menjelaskan cara menandatangani aplikasi di Android Studio dan cara mengonfigurasi file build untuk menandatangani aplikasi menggunakan Plugin Android untuk Gradle.
Scoped Directory Access
Di Android 7.0, aplikasi dapat menggunakan API baru untuk meminta akses ke direktori penyimpanan
eksternal tertentu, termasuk direktori di media yang dapat dilepas seperti kartu
SD. API baru ini sangat menyederhanakan cara aplikasi Anda mengakses direktori
penyimpanan eksternal standar, seperti direktori Pictures
. Aplikasi
seperti aplikasi foto dapat menggunakan API ini, bukan menggunakan
READ_EXTERNAL_STORAGE
, yang memberikan akses ke semua direktori
penyimpanan, atau Storage Access Framework, yang membuat pengguna membuka
direktori tersebut.
Selain itu, API baru ini menyederhanakan langkah-langkah yang diambil pengguna untuk memberikan akses penyimpanan eksternal ke aplikasi Anda. Saat Anda menggunakan API baru, sistem akan menggunakan UI izin sederhana yang menjelaskan dengan jelas direktori mana yang aksesnya diminta oleh aplikasi.
Untuk informasi selengkapnya, lihat dokumentasi developer Akses Direktori Cakupan.
Keyboard Shortcuts Helper
Di Android 7.0, pengguna dapat menekan Meta + / untuk memicu
layar Pintasan Keyboard yang menampilkan semua pintasan yang tersedia
baik dari sistem maupun dari aplikasi yang menjadi fokus. Sistem akan otomatis mengambil
pintasan ini dari menu aplikasi jika pintasan tersebut ada. Anda juga
dapat menyediakan daftar pintasan yang telah disesuaikan untuk layar. Anda dapat melakukannya dengan mengganti metode onProvideKeyboardShortcuts()
.
Catatan: Tombol Meta tidak ada di semua keyboard: di keyboard Macintosh, tombolnya adalah Command, di keyboard Windows, tombol Windows, dan di Pixel C dan keyboard ChromeOS, tombol Search.
Untuk memicu Bantuan Pintasan Keyboard dari mana saja di aplikasi Anda, panggil
requestShowKeyboardShortcuts()
dari aktivitas yang relevan.
Custom Pointer API
Android 7.0 memperkenalkan Custom Pointer API, yang memungkinkan Anda menyesuaikan tampilan, visibilitas, dan perilaku pointer. Kemampuan ini sangat berguna saat pengguna menggunakan mouse atau touchpad untuk berinteraksi dengan objek UI. Pointer default menggunakan ikon standar. API ini juga mencakup fungsionalitas lanjutan seperti mengubah tampilan ikon pointer berdasarkan gerakan mouse atau touchpad tertentu.
Untuk menetapkan ikon pointer, ganti metode onResolvePointerIcon()
dari class View
. Metode ini menggunakan objek PointerIcon
untuk menggambar ikon yang sesuai dengan peristiwa gerakan tertentu.
Sustained Performance API
Performa dapat berfluktuasi secara dramatis untuk aplikasi yang berjalan lama, karena sistem melakukan throttle pada mesin sistem di chip saat komponen perangkat mencapai batas suhu. Fluktuasi ini memberikan target bergerak bagi developer aplikasi yang membuat aplikasi berperforma tinggi dan berjalan lama.
Untuk mengatasi batasan ini, Android 7.0 menyertakan dukungan untuk mode performa berkelanjutan, yang memungkinkan OEM memberikan petunjuk tentang kemampuan performa perangkat untuk aplikasi yang berjalan lama. Developer aplikasi dapat menggunakan petunjuk ini untuk menyesuaikan aplikasi agar performa perangkat dapat diprediksi dan level konsisten dalam jangka waktu yang lama.
Developer aplikasi dapat mencoba API baru ini di Android 7.0 hanya di
perangkat Nexus 6P. Untuk menggunakan fitur ini,
tetapkan tanda jendela performa berkelanjutan untuk jendela
yang ingin Anda jalankan dalam mode performa berkelanjutan. Tetapkan flag ini menggunakan
metode Window.setSustainedPerformanceMode()
. Sistem akan otomatis
menonaktifkan mode ini saat jendela tidak lagi dalam fokus.
Dukungan VR
Android 7.0 menambahkan dukungan platform dan pengoptimalan untuk Mode VR baru yang memungkinkan developer membuat pengalaman VR seluler berkualitas tinggi bagi pengguna. Ada sejumlah peningkatan performa, termasuk akses ke inti CPU eksklusif untuk aplikasi VR. Dalam aplikasi, Anda dapat memanfaatkan pelacakan kepala yang cerdas dan notifikasi stereo yang berfungsi untuk VR. Yang terpenting, Android 7.0 menyediakan grafis dengan latensi yang sangat rendah. Untuk informasi selengkapnya tentang membangun aplikasi VR untuk Android 7.0, lihat Google VR SDK untuk Android.
Penyempurnaan Layanan Cetak
Di Android 7.0, developer layanan cetak kini dapat menampilkan informasi tambahan tentang masing-masing printer dan tugas pencetakan.
Saat mencantumkan masing-masing printer, layanan cetak kini dapat menyetel ikon per printer dengan dua cara:
- Anda dapat menyetel ikon dari ID resource dengan memanggil
setIconResourceId()
. - Anda dapat menampilkan ikon dari jaringan dengan memanggil
setHasCustomPrinterIcon()
, dan menyetel callback saat ikon diminta menggunakanonRequestCustomPrinterIcon()
.
Selain itu, Anda dapat menyediakan aktivitas per printer untuk menampilkan informasi tambahan dengan memanggil setInfoIntent()
.
Anda dapat menunjukkan progres dan status tugas pencetakan di notifikasi tugas pencetakan dengan memanggil masing-masing setProgress()
dan setStatus()
.
Frame Metrics API
Frame Metrics API memungkinkan aplikasi memantau performa
rendering UI-nya. API tersebut menyediakan kemampuan ini dengan mengekspos Pub/Sub API streaming untuk mentransfer info
waktu frame untuk jendela aplikasi saat ini. Data yang ditampilkan
setara dengan yang ditampilkan adb shell
dumpsys gfxinfo framestats
, tetapi tidak terbatas pada 120 frame terakhir.
Anda dapat menggunakan Frame Metrics API untuk mengukur performa UI tingkat interaksi
dalam produksi, tanpa koneksi USB. API ini memungkinkan pengumpulan data dengan tingkat perincian yang jauh lebih tinggi daripada adb shell dumpsys gfxinfo
. Perincian yang lebih tinggi ini dapat terjadi karena
sistem dapat mengumpulkan data untuk interaksi tertentu dalam aplikasi; sistem
tidak perlu merekam ringkasan global performa seluruh
aplikasi, atau menghapus semua status global. Anda dapat menggunakan
kemampuan ini untuk mengumpulkan data performa dan menangkap regresi dalam performa UI
untuk kasus penggunaan nyata dalam aplikasi.
Untuk memantau jendela, terapkan metode callback
OnFrameMetricsAvailableListener.onFrameMetricsAvailable()
dan daftarkan di jendela tersebut.
API menyediakan objek FrameMetrics
, yang
berisi data pengaturan waktu yang dilaporkan oleh subsistem rendering untuk berbagai pencapaian
dalam siklus proses frame. Metrik yang didukung adalah: UNKNOWN_DELAY_DURATION
,
INPUT_HANDLING_DURATION
, ANIMATION_DURATION
,
LAYOUT_MEASURE_DURATION
, DRAW_DURATION
, SYNC_DURATION
,
COMMAND_ISSUE_DURATION
, SWAP_BUFFERS_DURATION
,
TOTAL_DURATION
, dan FIRST_DRAW_FRAME
.
File Virtual
Pada versi Android sebelumnya, aplikasi Anda dapat menggunakan Storage Access Framework untuk memungkinkan pengguna memilih file dari akun penyimpanan cloud mereka, seperti Google Drive. Namun, tidak ada cara untuk merepresentasikan file yang tidak memiliki representasi bytecode langsung; setiap file diharuskan menyediakan aliran input.
Android 7.0 menambahkan konsep file virtual ke Storage Access Framework. Fitur file virtual memungkinkan DocumentsProvider
Anda menampilkan URI dokumen yang dapat digunakan dengan intent ACTION_VIEW
meskipun tidak memiliki representasi bytecode langsung. Android 7.0 juga memungkinkan Anda menyediakan format alternatif untuk file pengguna, virtual atau dengan cara lain.
Untuk informasi selengkapnya tentang cara membuka file virtual, lihat Membuka file virtual dalam panduan Storage Access Frameworks.