Android 7.0 Nougat memperkenalkan berbagai fitur dan kemampuan baru bagi pengguna dan pengembang. Dokumen ini merangkum apa saja yang baru untuk developer.
Pastikan untuk memeriksa Perubahan perilaku Android 7.0 untuk mempelajari area perubahan platform dapat memengaruhi aplikasi Anda.
Untuk mempelajari lebih lanjut tentang fitur konsumen Android 7.0, kunjungi www.android.com.
Dukungan Multi-Jendela
Di Android 7.0, kami memperkenalkan fitur multitasking ke dalam platform — dukungan multi-aplikasi.
Pengguna sekarang bisa membuka dua aplikasi sekaligus di layar.
- Di ponsel dan tablet menjalankan Android 7.0, pengguna dapat menjalankan dua aplikasi secara berdampingan atau satu sama lain dalam mode layar terpisah. Pengguna dapat mengubah ukuran aplikasi dengan menariknya pemisah di antara mereka.
- Pada perangkat Android TV, aplikasi dapat menempatkan dirinya sendiri dalam mode picture-in-picture , yang memungkinkan pengguna terus menampilkan konten saat pengguna menjelajah atau berinteraksi dengan aplikasi lain.
![Aplikasi yang berjalan di perangkat seluler dalam mode layar terpisah](https://developer.android.google.cn/static/images/android-7.0/mw-portrait.png?authuser=9&hl=id)
Gambar 1. Aplikasi yang berjalan dalam mode layar terpisah.
Khususnya di tablet dan perangkat yang berlayar lebih besar lainnya, dukungan multi-aplikasi memberi Anda cara baru untuk melibatkan pengguna. Anda bahkan dapat mengaktifkan fitur tarik lalu lepas aplikasi Anda agar pengguna dapat dengan mudah menarik konten ke atau dari aplikasi Anda — untuk meningkatkan pengalaman pengguna.
Sangat mudah untuk menambahkan dukungan multi-aplikasi ke aplikasi Anda dan mengonfigurasi cara menangani tampilan multi-aplikasi. Misalnya, Anda dapat menetapkan aktivitas dimensi minimum yang diizinkan, mencegah pengguna mengubah ukuran aktivitas di bawah sebesar itu. Anda juga dapat menonaktifkan tampilan multi-aplikasi untuk aplikasi Anda, yang memastikan sistem hanya akan menampilkan aplikasi dalam mode layar penuh.
Untuk informasi lebih lanjut, lihat Dukungan Multi-Aplikasi dokumentasi developer.
Penyempurnaan Notifikasi
Di Android 7.0 kami telah mendesain ulang notifikasi untuk membuatnya lebih mudah dan digunakan dengan lebih cepat. Beberapa perubahan tersebut antara lain:
- Pembaruan template: Kami memperbarui template notifikasi untuk memberi penekanan baru pada gambar utama dan {i>avatar<i}. 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 Anda menggunakan
Class
MessagingStyle
. Anda dapat mengonfigurasi pesan, judul percakapan, dan tampilan konten. - Paket notifikasi: Sistem dapat mengelompokkan pesan secara bersamaan, misalnya berdasarkan topik pesan, dan menampilkan grupnya. Pengguna dapat mengambil tindakan, seperti Tutup atau Arsipkan, atas tindakan tersebut. Jika Anda sudah mengimplementasikan notifikasi untuk Android Wear, Anda akan terbiasa dengan model ini.
- Balasan langsung: Untuk aplikasi komunikasi real-time, Sistem Android mendukung balasan beruntun sehingga pengguna dapat merespons dengan cepat SMS atau pesan teks secara langsung di dalam antarmuka pemberitahuan.
- Tampilan kustom: Dua API baru memungkinkan Anda memanfaatkan sistem dekorasi, seperti header dan tindakan notifikasi, saat menggunakan tampilan di notifikasi.
![Perangkat seluler menampilkan notifikasi pesan terpaket](https://developer.android.google.cn/static/images/android-7.0/notifications-1.png?authuser=9&hl=id)
![Perangkat seluler menampilkan notifikasi satu pesan](https://developer.android.google.cn/static/images/android-7.0/notifications-3.png?authuser=9&hl=id)
![Perangkat seluler menampilkan balasan pesan inline dalam antarmuka notifikasi](https://developer.android.google.cn/static/images/android-7.0/notifications-2.png?authuser=9&hl=id)
Gambar 2. Paket notifikasi dan balasan langsung.
Untuk mempelajari cara menerapkan fitur baru ini, lihat dokumentasi Notifikasi kami.
Kompilasi JIT/AOT yang dipandu profil
Di Android 7.0, kami telah menambahkan kompilator Just in Time (JIT) dengan kode ke ART, yang memungkinkannya terus-menerus meningkatkan kinerja aplikasi Android saat dijalankan. Kompilator JIT melengkapi compiler Ahead of Time (AOT) dan membantu meningkatkan performa runtime, serta ruang penyimpanan, dan mempercepat pembaruan aplikasi dan pembaruan sistem.
Kompilasi yang dipandu profil memungkinkan ART mengelola kompilasi AOT/JIT untuk setiap aplikasi sesuai dengan penggunaan sebenarnya, serta kondisi pada perangkat. Misalnya, ART menyimpan profil metode populer setiap aplikasi dan dapat mengompilasi dan meng-{i>cache<i} metode tersebut untuk kinerja terbaik. Menyisakan bagian lain aplikasi tidak dikompilasi hingga benar-benar digunakan.
Selain meningkatkan performa bagian-bagian penting aplikasi, panduan profil kompilasi membantu mengurangi jejak RAM aplikasi secara keseluruhan, termasuk biner. Fitur ini terutama penting pada perangkat dengan memori minim.
ART mengelola kompilasi yang dipandu profil dengan cara yang meminimalkan dampak terhadap baterai perangkat. Itu melakukan prakompilasi hanya ketika perangkat sedang tidak ada aktivitas dan mengisi daya, menghemat waktu, dan baterai dengan melakukan pekerjaan itu terlebih dahulu.
Jalur Cepat untuk Pasang Aplikasi
Salah satu manfaat paling nyata dari compiler JIT ART adalah kecepatan aplikasi penginstalan dan pembaruan sistem. Bahkan aplikasi besar yang membutuhkan waktu beberapa menit untuk mengoptimalkan dan menginstal di Android 6.0 sekarang dapat menginstal hanya dalam beberapa detik. Update sistem juga lebih cepat, karena tidak ada lagi langkah pengoptimalan.
Istirahatkan Kapan Saja...
Android 6.0 memperkenalkan Istirahatkan, yaitu mode sistem yang menghemat baterai dengan menangguhkan aplikasi Aktivitas CPU dan jaringan saat perangkat sedang tidak ada aktivitas, seperti saat sedang diletakkan di atas meja atau di laci.
Kini di Android 7.0, Istirahatkan mengambil langkah lebih jauh dan menghemat baterai kapan saja di mana saja. Setiap kali layar mati selama jangka waktu tertentu dan perangkat dicabut, Istirahatkan menerapkan subset dari pembatasan CPU dan jaringan yang sudah dikenal untuk aplikasi. Ini berarti pengguna dapat menghemat baterai bahkan saat membawa perangkat mereka di kantong.
![Ilustrasi cara Istirahatkan menerapkan pembatasan aktivitas sistem tingkat pertama untuk meningkatkan masa pakai baterai](https://developer.android.google.cn/static/images/android-7.0/doze-diagram-1.png?authuser=9&hl=id)
Gambar 3. Mode Istirahatkan kini berlaku pembatasan untuk meningkatkan masa pakai baterai bahkan saat perangkat sedang tidak bergerak.
Beberapa saat setelah layar dinonaktifkan saat perangkat menggunakan baterai, Istirahatkan membatasi akses jaringan dan menunda tugas dan sinkronisasi. Selama pemeliharaan singkat aplikasi diizinkan mengakses jaringan dan semua layanan yang ditangguhkan dan menjalankan tugas/sinkronisasi. Menyalakan layar atau mencolokkan perangkat akan membawa perangkat keluar dari Istirahatkan.
Saat perangkat tidak bergerak lagi, dengan layar nonaktif dan menggunakan baterai selama
tertentu, Istirahatkan akan menerapkan pembatasan CPU dan jaringan penuh pada alarm PowerManager.WakeLock
, AlarmManager
, dan
Pemindaian GPS/Wi-Fi.
Praktik terbaik untuk menyesuaikan aplikasi Anda dengan Istirahatkan adalah sama, baik apakah perangkat bergerak atau tidak, jadi jika Anda sudah mengupdate aplikasi dengan lancar menangani Istirahatkan, Anda sudah siap. Jika tidak, mulailah beradaptasi aplikasi Anda ke Istirahatkan sekarang.
Project Svelte: Optimisasi Latar Belakang
Project Svelte merupakan 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, akan dapat membuat pengalaman pengguna Anda luar biasa — segera, cepat, dan kontekstual. Jika tidak ditangani dengan benar, pemrosesan latar belakang bisa menghabiskan RAM (dan baterai) dan memengaruhi performa sistem untuk aplikasi lain.
Sejak Android 5.0, JobScheduler
telah menjadi
cara yang disukai untuk melakukan pekerjaan
latar belakang dengan cara yang bagus
ketersediaan tinggi dan latensi
yang lebih rendah bagi pengguna. Aplikasi dapat menjadwalkan tugas sekaligus memungkinkan sistem melakukan pengoptimalan berdasarkan
kondisi memori, daya, dan konektivitas. JobScheduler menawarkan kontrol dan
kesederhanaan, dan kita ingin
semua aplikasi menggunakannya.
Pilihan bagus 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 latar belakang
bekerja berdasarkan perubahan dalam Penyedia Konten. Pada saat yang
sama, kami mulai
menghentikan penggunaan beberapa pola lama
yang dapat menurunkan kinerja 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 keduanya dapat mengaktifkan
proses latar belakang beberapa aplikasi sekaligus dan
menegakkan memori serta baterai. Jika
aplikasi Anda menerimanya, manfaatkan Android 7.0 untuk
bermigrasi ke JobScheduler
dan API terkait sebagai gantinya.
Lihat Latar Belakang Dokumentasi pengoptimalan untuk mengetahui detailnya.
SurfaceView
Android 7.0 menghadirkan gerakan sinkron ke SurfaceView
yang memberikan performa baterai lebih baik
daripada TextureView
dalam kasus tertentu: Saat merender video atau
Konten 3D, aplikasi dengan scroll dan posisi video animasi menggunakan lebih sedikit daya dengan
SurfaceView
dibandingkan dengan TextureView
.
SurfaceView
memungkinkan pengomposisian yang lebih hemat baterai di
layar, karena disusun dalam perangkat
keras khusus, terpisah dari aplikasi
konten jendela. Akibatnya, bentuk pemrosesan perantara menjadi lebih sedikit
salinan daripada TextureView
.
Posisi konten objek SurfaceView
kini diperbarui secara sinkron
dengan konten aplikasi yang memuatnya. Salah satu hasil dari
perubahan ini adalah bahwa
terjemahan atau skala video yang diputar dalam SurfaceView
tidak lagi menghasilkan bilah hitam di samping 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.google.cn/static/images/android-7.0/datasaver.png?authuser=9&hl=id)
Gambar 4. Penghemat Data di Setelan.
Selama penggunaan 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, layanan sistem baru yang membantu mengurangi penggunaan data seluler oleh aplikasi, baik saat roaming, menjelang akhir siklus penagihan, atau paket data prabayar kecil. Penghemat Data memberi pengguna kontrol atas cara aplikasi menggunakan data seluler dan memungkinkan developer memberikan layanan yang lebih efisien saat Data Penghemat aktif.
Saat pengguna mengaktifkan Penghemat Data di Setelan dan perangkat sedang di jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi sinyal ke aplikasi untuk menggunakan seminimal mungkin data di latar depan — misalnya dengan membatasi kecepatan bit untuk streaming, mengurangi kualitas gambar, menunda pra-cache optimis, dan seterusnya. Pengguna dapat mengizinkan aplikasi tertentu untuk mengizinkan data berkuota latar belakang penggunaan meskipun Penghemat Data diaktifkan.
Android 7.0 memperluas ConnectivityManager
untuk menyediakan
cara untuk mengambil
preferensi Penghemat Data pengguna dan pantau
perubahan preferensi. Semua aplikasi harus memeriksa apakah pengguna telah mengaktifkan Data
Menghemat dan berusaha membatasi penggunaan data latar depan dan latar belakang.
Vulkan API
Android 7.0 mengintegrasikan VulkanTM, API rendering 3D baru, ke dalam platform. Suka OpenGLTM ES, Vulkan adalah standar terbuka untuk grafis dan rendering 3D yang dikelola oleh Khronos Group.
Vulkan dirancang dari awal untuk meminimalkan overhead CPU di driver, dan memungkinkan aplikasi Anda untuk mengontrol operasi GPU secara lebih langsung. Vulkan memungkinkan paralelisasi yang lebih baik dengan mengizinkan beberapa thread untuk pekerjaan seperti konstruksi {i> buffer<i} perintah sekaligus.
Library dan alat pengembangan Vulkan telah dimasukkan ke dalam SDK Android 7.0. Mereka termasuk:
- 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 informasi selengkapnya, lihat dokumentasi API.
Quick Settings Tile API
![Petak Setelan Cepat dalam bayangan notifikasi](https://developer.android.google.cn/static/images/android-7.0/quicksettings.png?authuser=9&hl=id)
Gambar 5. Petak Setelan Cepat di bayangan notifikasi.
{i>Quick Settings<i} adalah cara populer dan sederhana untuk mengekspos pengaturan dan tindakan utama, langsung dari menu notifikasi. Di Android 7.0, kami telah memperluas cakupan Setelan Cepat untuk membuatnya lebih berguna dan praktis.
Kami telah menambahkan lebih banyak ruang untuk kartu Setelan Cepat tambahan, yang dapat akses di seluruh area tampilan bernomor halaman dengan menggeser ke kiri atau kanan. Kami juga sudah diberi kontrol kepada pengguna untuk menentukan letak dan kotak Setelan Cepat ditampilkan — pengguna dapat menambahkan atau memindahkan ubin hanya dengan menyeret dan melepasnya.
Untuk developer, Android 7.0 juga menambahkan API baru yang memungkinkan Anda menentukan Kartu Setelan Cepat untuk memudahkan pengguna mengakses kontrol dan tindakan tombol di aplikasi Anda.
Kotak Setelan Cepat dicadangkan untuk kontrol atau tindakan yang mendesak atau sering digunakan, dan tidak boleh digunakan sebagai jalan pintas ke meluncurkan aplikasi.
Setelah menentukan kartu, Anda dapat menampilkannya kepada pengguna, yang dapat menambahkan mereka ke Setelan Cepat hanya dengan menyeret dan melepas.
Untuk informasi tentang cara membuat kartu aplikasi, lihat dokumentasi referensi
untuk Tile
.
Pemblokiran Nomor
Android 7.0 sekarang mendukung pemblokiran nomor di platform dan menyediakan API framework agar penyedia layanan dapat mengelola daftar nomor yang diblokir. Tujuan aplikasi SMS default, aplikasi telepon default, dan aplikasi operator dapat membaca dari dan menulis ke daftar nomor yang diblokir. Daftar ini tidak dapat diakses oleh aplikasi lain.
Dengan membuat pemblokiran nomor sebagai fitur standar pada platformnya, 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 tetap tersimpan saat reset dan perangkat melalui opsi Pencadangan & Pulihkan fitur
- Beberapa aplikasi sekaligus bisa menggunakan daftar nomor blokir yang sama
Selain itu, integrasi aplikasi operator melalui Android berarti bahwa operator dapat membaca daftar nomor yang diblokir di perangkat dan melakukan pemblokiran di sisi layanan bagi pengguna untuk menghentikan panggilan dan pesan yang tidak diinginkan agar tidak menjangkau pengguna melalui media apa pun, seperti titik akhir VOIP atau penerusan telepon.
Untuk informasi selengkapnya, lihat dokumentasi referensi untuk
BlockedNumberContract
.
Penyaringan Panggilan Telepon
Android 7.0 memungkinkan aplikasi telepon default untuk menyaring panggilan masuk. Ponsel
aplikasi melakukannya dengan menerapkan CallScreeningService
yang baru,
yang memungkinkan aplikasi ponsel 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 dua bahasa dengan lebih baik. Aplikasi dapat menggunakan API baru untuk mendapatkan lokalitas pilihan pengguna dan kemudian menawarkan untuk pengguna multi-lokal — seperti menampilkan hasil penelusuran di beberapa bahasa dan tidak menawarkan untuk menerjemahkan laman web dalam bahasa sudah diketahui pengguna.
Bersama dengan dukungan multilokal, Android 7.0 juga memperluas ragam bahasa yang tersedia untuk pengguna. Produk ini menawarkan lebih dari 25 varian masing-masing untuk model bahasa seperti Inggris, Spanyol, Prancis, dan Arab. Ini juga menambahkan mendukung lebih dari 100 bahasa baru.
Aplikasi bisa mendapatkan daftar lokalitas yang ditetapkan oleh pengguna dengan memanggil
LocaleList.GetDefault()
. Untuk mendukung peningkatan jumlah lokal, Android 7.0 telah
mengubah cara menangani resource. Pastikan Anda menguji dan memverifikasi bahwa aplikasi
bekerja seperti yang diharapkan dengan logika resolusi resource baru.
Untuk mempelajari tentang perilaku baru resolusi resolusi dan praktik terbaik yang sebaiknya mengikuti, lihat Dukungan Multibahasa.
Emoji Baru
Android 7.0 memperkenalkan emoji tambahan dan fitur terkait emoji termasuk emoji warna kulit dan dukungan untuk variasi pemilih. Jika aplikasi Anda mendukung emoji, ikuti panduan di bawah ini untuk memanfaatkan fitur terkait emoji ini.
-
Periksa apakah 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 untuk menampilkan emoji tertentu berwarna atau hitam putih. Pada perangkat seluler, aplikasi akan menghadirkan emoji berwarna daripada hitam-putih. Namun, jika aplikasi Anda menampilkan emoji sebaris dengan teks, maka harus menggunakan variasi hitam-putih. Untuk menentukan apakah sebuah emoji memiliki variasi, gunakan pemilih variasi. Untuk daftar lengkap dari karakter dengan variasi, tinjau bagian urutan variasi emoji pada Dokumentasi Unicode tentang variasi.
-
Pastikan emoji mendukung warna kulit. Android 7.0 memungkinkan
pengguna untuk memodifikasi
warna kulit emoji yang dirender sesuai keinginan. Aplikasi {i>keyboard<i} harus memberikan visualisasi
indikasi untuk emoji yang memiliki beberapa warna kulit dan harus memungkinkan pengguna
memilih warna kulit
yang mereka sukai. Untuk menentukan emoji sistem mana yang digunakan
pengubah warna kulit, gunakan
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 di bawah
paket android.icu
. Migrasi mudah, dan sebagian besar memerlukan
hanya mengubah dari namespace com.java.icu
menjadi
android.icu
. Jika Anda sudah menggunakan paket ICU4J dalam
aplikasi, beralih ke android.icu
API yang disediakan di Android
bisa menghasilkan penghematan besar dalam ukuran APK.
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 Anda digunakan untuk menyediakan dan merender Android System WebView. Pendekatan ini meningkatkan ingatan pada perangkat itu sendiri dan juga mengurangi {i> bandwidth<i} yang dibutuhkan untuk menjaga WebView diperbarui (karena APK WebView mandiri tidak akan diupdate lagi selama Chrome tetap diaktifkan).
Anda dapat memilih penyedia WebView dengan mengaktifkan Opsi Developer dan memilih penerapan WebView. Anda dapat menggunakan model Versi Chrome (Dev, Beta, atau Stabil) yang diinstal di perangkat Anda atau APK Webview mandiri untuk bertindak sebagai implementasi WebView.
Multiproses
Mulai Chrome versi 51 di Android 7.0, WebView akan menjalankan konten web dalam proses sandbox terpisah saat opsi developer "Multiprocess WebView" diaktifkan.
Kami sedang mencari masukan tentang kompatibilitas dan performa runtime di N sebelum mengaktifkan WebView multiproses di Android versi mendatang. Di sini versi baru, regresi waktu startup, total penggunaan memori, dan software performa rendering yang diharapkan.
Jika Anda menemukan masalah yang tidak terduga dalam mode multiproses, kami ingin mereka. Hubungi tim WebView di pelacak bug Chromium.
JavaScript berjalan sebelum laman dimuat
Mulai dengan aplikasi yang menargetkan Android 7.0, konteks JavaScript akan direset saat halaman baru dimuat. Saat ini, konteksnya dibawa untuk halaman pertama yang dimuat di instance WebView baru.
Developer yang ingin menginjeksikan JavaScript ke 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 origin yang aman (melalui HTTPS). Kebijakan ini dirancang untuk melindungi informasi pribadi pengguna saat mereka menggunakan koneksi yang tidak aman.
Pengujian dengan WebView Beta
WebView diupdate secara rutin, jadi kami sarankan agar Anda menguji kompatibilitas dengan aplikasi Anda secara rutin menggunakan saluran beta WebView. Untuk memulai pengujian versi pra-rilis WebView pada Android 7.0, unduh dan instal Chrome Dev atau Chrome Beta, lalu pilih sebagai implementasi WebView di bagian opsi developer sebagaimana dijelaskan di atas. Laporkan masalah melalui Chromium pelacak bug agar kami dapat memperbaikinya sebelum versi baru WebView dirilis.
API OpenGLTM ES 3.2
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 dilengkapi dengan
Class GLES32
. Saat menggunakan OpenGL ES 3.2, pastikan untuk mendeklarasikan
persyaratan dalam file manifes Anda, menggunakan tag <uses-feature>
dan
atribut android:glEsVersion
.
Untuk informasi tentang penggunaan OpenGL ES, termasuk cara memeriksa versi OpenGL ES yang didukung saat runtime, lihat panduan OpenGL ES API.
Perekaman Android TV
Android 7.0 menambahkan kemampuan untuk merekam dan memutar konten dari input Android TV melalui API perekaman baru. Membangun di atas pergeseran waktu yang sudah ada API, layanan input TV bisa mengontrol data saluran apa yang dapat direkam, sesi yang direkam disimpan, dan mengelola interaksi pengguna dengan konten yang direkam.
Untuk informasi selengkapnya, lihat Android TV Recording API.
Android for Work
Android for Work menambahkan banyak fitur dan API baru untuk perangkat yang menjalankan Android 7.0. Berikut beberapa fitur utamanya. Untuk mengetahui daftar lengkap fiturnya, lihat Fitur Android Enterprise daftar.
Pertanyaan keamanan profil kerja
Pemilik profil yang menargetkan N SDK
dapat menentukan pertanyaan keamanan terpisah untuk aplikasi yang berjalan di
profil kerja. Tantangan kerja ditampilkan ketika pengguna mencoba untuk membuka
aplikasi kerja apa pun. Jawaban yang benar untuk tantangan keamanan akan membuka
profil kerja dan mendekripsinya jika diperlukan. Bagi pemilik profil,
ACTION_SET_NEW_PASSWORD
meminta pengguna untuk menyetel tugas
tantangan, dan ACTION_SET_NEW_PARENT_PROFILE_PASSWORD
prompt
pengguna untuk mengatur
penguncian perangkat.
Pemilik profil dapat menetapkan kebijakan kode sandi yang berbeda untuk tantangan kerja
(seperti berapa lama PIN diperlukan, atau apakah sidik jari dapat digunakan
untuk membuka profil) menggunakan setPasswordQuality()
,
setPasswordMinimumLength()
dan metode terkait. Profil
pemilik juga dapat menyetel kunci perangkat menggunakan DevicePolicyManager
instance yang ditampilkan oleh metode getParentProfileInstance()
baru.
Selain itu, pemilik profil dapat menyesuaikan layar kredensial untuk
tantangan kerja menggunakan setOrganizationColor()
baru dan
Metode setOrganizationName()
.
Nonaktifkan profil kerja
Pada perangkat dengan profil kerja, pengguna bisa beralih mode kerja. Saat mode kerja pengguna terkelola dinonaktifkan untuk sementara, yang menonaktifkan profil kerja aplikasi, sinkronisasi latar belakang, dan notifikasi. Ini termasuk pemilik profil aplikasi. Jika mode kerja dinonaktifkan, sistem akan menampilkan 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 tertentu. Sistem akan otomatis memulai VPN itu setelah booting perangkat.
Metode DevicePolicyManager
baru adalah
setAlwaysOnVpnPackage()
dan
getAlwaysOnVpnPackage()
.
Karena layanan VPN dapat dibatasi langsung oleh sistem tanpa aplikasi
komunikasi, klien VPN perlu menangani titik
entri baru untuk VPN yang Selalu aktif. Sebagai
sebelumnya, layanan ditunjukkan ke sistem oleh filter intent yang sesuai
tindakan android.net.VpnService
.
Pengguna juga dapat secara manual menyetel klien VPN Selalu aktif yang menerapkan
VPNService
metode menggunakan
Setelan>Lainnya>Vpn. Opsi untuk mengaktifkan VPN Selalu aktif
dari Setelan hanya tersedia jika klien VPN menargetkan API level 24.
Penyediaan yang disesuaikan
Aplikasi dapat menyesuaikan penyediaan pemilik profil dan pemilik perangkat
mengalir 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 sekarang menawarkan Vision Settings langsung di layar Sambutan untuk pengaturan perangkat. Hal ini memudahkan pengguna untuk menemukan dan mengonfigurasi fitur aksesibilitas di perangkat mereka, termasuk gerakan pembesaran, {i>font<i} ukuran layar, ukuran layar, dan TalkBack.
Dengan fitur aksesibilitas yang penempatannya semakin jelas, pengguna Anda cenderung mencoba aplikasi Anda dengan mengaktifkan setelan tersebut. Pastikan Anda menguji aplikasi lebih awal dengan mengaktifkan setelan ini. Anda dapat mengaktifkannya dari Setelan > Aksesibilitas.
Di Android 7.0, layanan aksesibilitas kini juga dapat membantu pengguna gangguan motorik gangguan saat menyentuh layar. API baru memungkinkan membangun layanan dengan fitur seperti pelacakan wajah, pelacakan mata, pemindaian titik, dan sebagainya, untuk memenuhi kebutuhan para pengguna tersebut.
Untuk informasi selengkapnya, lihat dokumentasi referensi untuk
GestureDescription
.
Direct Boot
Direct Boot memperbaiki waktu startup perangkat dan memungkinkan aplikasi memiliki fungsi terbatas bahkan setelah reboot tidak terduga. Misalnya, jika perangkat terenkripsi dimulai ulang saat pengguna sedang tidur, alarm terdaftar, pesan dan panggilan masuk sekarang dapat terus memberi tahu pengguna seperti biasa. Ini juga berarti layanan aksesibilitas juga dapat segera tersedia setelah {i>restart<i}.
Direct Boot memanfaatkan enkripsi berbasis file di Android 7.0 untuk memungkinkan kebijakan enkripsi terperinci bagi data sistem dan aplikasi. Sistem menggunakan penyimpanan yang dienkripsi dengan perangkat untuk data sistem terpilih dan secara eksplisit data aplikasi yang terdaftar. Secara default, penyimpanan yang dienkripsi dengan kredensial digunakan untuk semua data sistem lainnya, data pengguna, aplikasi, dan data aplikasi.
Saat {i>booting<i}, sistem dimulai dalam
mode terbatas dengan akses ke
data yang dienkripsi dengan perangkat saja, dan tanpa
akses umum ke aplikasi atau data.
Jika Anda memiliki komponen yang ingin
dijalankan dalam mode ini, Anda dapat mendaftarkan
mereka dengan mengatur
penanda dalam manifes. Setelah {i>restart<i}, sistem akan aktif
komponen terdaftar dengan menyiarkan LOCKED_BOOT_COMPLETED
intent. Sistem memastikan data aplikasi yang dienkripsi dengan perangkat tersedia
sebelum membukanya. Semua data lainnya tidak tersedia sampai Pengguna mengonfirmasi pengunciannya
kredensial layar untuk mendekripsinya.
Pengesahan Kunci
Android 7.0 memperkenalkan pengesahan kunci, alat keamanan baru yang membantu pastikan bahwa pasangan kunci yang disimpan dalam perangkat keras yang didukung keystore melindungi informasi sensitif yang diperlukan aplikasi Anda dengan benar pengguna. Dengan menggunakan alat ini, Anda mendapatkan keyakinan tambahan bahwa aplikasi Anda berinteraksi dengan kunci yang berada di hardware aman, meskipun perangkat menjalankan aplikasi Anda di-root. Jika Anda menggunakan kunci dari keystore yang didukung hardware di aplikasi, Anda harus menggunakan alat ini, terutama jika Anda menggunakan tombol untuk memverifikasi informasi sensitif di dalam aplikasi.
Pengesahan kunci memungkinkan Anda untuk memverifikasi bahwa pasangan kunci RSA atau EC telah yang dibuat dan disimpan di keystore yang didukung perangkat keras dari perangkat Trusted Execution Environment (TEE). Alat ini juga memungkinkan Anda menggunakan di luar perangkat, seperti server {i>back-end <i}aplikasi Anda, untuk menentukan dan memverifikasi penggunaan dan validitas pasangan kunci. Fitur-fitur ini menyediakan tingkat keamanan tambahan yang melindungi pasangan kunci, bahkan jika seseorang me-root perangkat atau menyusupi keamanan platform Android yang berjalan di perangkat.
Catatan: Hanya sedikit perangkat yang menjalankan Android 7.0
mendukung pengesahan kunci tingkat hardware; semua perangkat lain yang menjalankan Android 7.0
menggunakan pengesahan kunci
tingkat perangkat lunak sebagai gantinya. Sebelum memverifikasi properti
kunci yang didukung perangkat keras di perangkat
dalam lingkungan tingkat produksi,
harus memastikan bahwa perangkat mendukung
pengesahan kunci level perangkat keras. Kepada
melakukannya, Anda harus memeriksa bahwa rantai sertifikat
pengesahan berisi sebuah {i>root <i}
yang ditandatangani oleh kunci {i>root <i}pengesahan Google dan bahwa
Elemen attestationSecurityLevel
dalam kunci
deskripsi data disetel ke keamanan TrustedEnvironment
level organisasi.
Untuk informasi selengkapnya, lihat Pengesahan Kunci dokumentasi developer.
Network Security Config
Di Android 7.0, aplikasi bisa menyesuaikan perilaku amannya (HTTPS, TLS) koneksi dengan aman, tanpa modifikasi kode, dengan menggunakan Konfigurasi Keamanan Jaringan, bukan menggunakan metode konvensional API terprogram yang rentan error (misalnya, X509TrustManager).
Fitur yang didukung:
- Trust anchor kustom. Memungkinkan aplikasi menyesuaikan Certificate Authority (CA) dipercaya karena koneksi amannya. Sebagai misalnya, mempercayai sertifikat tertentu yang ditandatangani sendiri atau serangkaian CA publik yang dibatasi.
- Penggantian khusus debug. Memungkinkan developer aplikasi men-debug dengan aman koneksi aman aplikasi mereka tanpa menambah risiko terhadap saat ini.
- Memilih tidak menggunakan traffic cleartext. Memungkinkan aplikasi melindungi dirinya sendiri dari penggunaan lalu lintas {i>cleartext<i} yang tidak disengaja.
- Penyematan sertifikat. Fitur lanjutan yang memungkinkan sebuah aplikasi membatasi kunci server mana yang dipercaya untuk koneksi aman.
Untuk mengetahui 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 bagaimana CA pengguna harus dipercaya.
APK Signature Scheme v2
Android 7.0 memperkenalkan APK Signature Scheme v2, sebuah skema penandatanganan aplikasi yang baru menawarkan waktu penginstalan aplikasi yang lebih cepat dan perlindungan yang lebih baik terhadap pada file APK. Secara default, Android Studio 2.2 dan Android Plugin untuk Gradle 2.2 menandatangani aplikasi Anda menggunakan APK Signature Scheme v2 dan skema penandatanganan tradisional, yang menggunakan penandatanganan JAR.
Meskipun kami menyarankan untuk menerapkan APK Signature Scheme v2 ke aplikasi Anda,
skema tidak wajib. Jika aplikasi Anda tidak dibangun dengan benar saat menggunakan APK
Signature Scheme v2, Anda dapat menonaktifkan skema baru. Proses penonaktifan
menyebabkan Android Studio 2.2 dan Plugin Android untuk Gradle 2.2 menandatangani
aplikasi hanya dengan menggunakan
skema penandatanganan tradisional. Untuk menandatangani hanya dengan
skema tradisional, buka file build.gradle
level modul, lalu
tambahkan baris v2SigningEnabled false
ke penandatanganan rilis Anda
konfigurasi:
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 buat perubahan lebih lanjut pada aplikasi, tanda tangan aplikasi
tidak valid. Oleh karena itu, gunakan alat seperti zipalign
sebelum menandatangani aplikasi Anda menggunakan APK Signature Scheme v2, bukan setelahnya.
Untuk 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 bisa menggunakan API baru untuk meminta akses ke API eksternal
penyimpanan, termasuk direktori pada media portabel seperti SD
kartu. API baru ini sangat menyederhanakan cara aplikasi Anda mengakses
direktori penyimpanan eksternal, seperti direktori Pictures
. Aplikasi
seperti aplikasi foto bisa menggunakan API ini daripada menggunakannya
READ_EXTERNAL_STORAGE
, yang memberikan akses ke semua penyimpanan
direktori, atau {i>Storage Access Framework<i},
yang membuat pengguna menavigasi
pada direktori tersebut.
Selain itu, API baru ini menyederhanakan langkah-langkah yang diambil pengguna untuk memberikan akses penyimpanan ke aplikasi Anda. Saat Anda menggunakan API baru, sistem akan menggunakan UI izin akses yang secara jelas merinci direktori mana aplikasi tersebut akses.
Untuk informasi selengkapnya, lihat Cakupan Dokumentasi Developer.
Bantuan Pintasan Keyboard
Di Android 7.0, pengguna dapat menekan Meta + / untuk memicu
Layar Pintasan Keyboard yang menampilkan semua pintasan yang tersedia keduanya
dari sistem dan dari aplikasi yang difokuskan. Sistem mengambil data ini
pintasan secara otomatis dari menu aplikasi jika ada pintasan. Anda dapat
juga menyediakan daftar pintasan Anda sendiri yang sudah disesuaikan untuk layar. Anda dapat melakukan
ini dengan mengganti metode onProvideKeyboardShortcuts()
.
Catatan: Kunci Meta tidak ada di semua keyboard: di keyboard Macintosh, ini adalah tombol Command, di keyboard Windows, ini adalah tombol Windows, dan di Pixel C dan keyboard ChromeOS, ini adalah tombol Penelusuran.
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 ketika pengguna menggunakan {i>mouse<i} atau touchpad untuk berinteraksi dengan Objek UI. Pointer default menggunakan ikon standar. API ini juga mencakup fungsionalitas lanjutan seperti mengubah tampilan ikon pointer berdasarkan pada gerakan mouse atau touchpad tertentu.
Untuk menyetel ikon pointer, ganti onResolvePointerIcon()
dari class View
. Metode ini menggunakan
PointerIcon
untuk menggambar ikon yang sesuai dengan
peristiwa gerakan tertentu.
Sustained Performance API
Kinerja dapat berfluktuasi secara dramatis untuk aplikasi yang berjalan lama, karena menekan mesin sistem di chip saat komponen perangkat mencapai batas suhu standar. Fluktuasi ini menampilkan target bergerak untuk aplikasi developer yang membuat aplikasi berperforma tinggi dan berjalan lama.
Untuk mengatasi keterbatasan ini, Android 7.0 menyertakan dukungan untuk mode performa berkelanjutan, yang memungkinkan OEM memberikan petunjuk tentang kemampuan kinerja perangkat untuk aplikasi yang berjalan lama. Developer aplikasi petunjuk ini bisa digunakan untuk menyesuaikan aplikasi agar tingkat kinerja perangkat yang konsisten dalam jangka waktu yang lama.
Pengembang aplikasi dapat mencoba API baru ini di Android 7.0 pada
Khusus perangkat Nexus 6P. Untuk menggunakan fitur ini,
setel flag periode performa berkelanjutan untuk jendela
yang ingin Anda jalankan dalam mode performa berkelanjutan. Tetapkan penanda ini menggunakan
Metode Window.setSustainedPerformanceMode()
. Sistem secara otomatis
akan menonaktifkan mode ini saat jendela tidak lagi menjadi 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 performa peningkatan kualitas, termasuk akses ke inti CPU yang eksklusif untuk aplikasi VR. Di dalam aplikasi, Anda dapat memanfaatkan pelacakan kepala yang cerdas, dan notifikasi stereo yang berfungsi untuk VR. Yang terpenting, Android 7.0 menyediakan grafis latensi 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 {i>printer<i} dan pekerjaan cetak.
Saat mencantumkan printer satu per satu, layanan cetak kini dapat menyetel per printer ikon dalam dua cara:
- Anda dapat menetapkan ikon dari ID resource dengan memanggil
setIconResourceId()
. - Anda dapat menampilkan ikon dari jaringan dengan memanggil
setHasCustomPrinterIcon()
, dan mengatur callback saat ikon diminta menggunakanonRequestCustomPrinterIcon()
.
Selain itu, Anda dapat menyediakan aktivitas per printer untuk menampilkan
informasi tertentu dengan memanggil setInfoIntent()
.
Anda dapat menunjukkan progres dan status tugas pencetakan dalam tugas pencetakan
notifikasi dengan memanggil
setProgress()
dan
setStatus()
.
API Metrik Frame
Frame Metrics API memungkinkan aplikasi memantau rendering UI-nya
tingkat tinggi. API tersebut menyediakan kemampuan ini dengan mengekspos Pub/Sub API streaming untuk mentransfer frame
informasi pengaturan waktu untuk jendela aplikasi saat ini. Data yang ditampilkan adalah
setara dengan yang ditampilkan adb shell
dumpsys gfxinfo framestats
, tetapi tidak terbatas pada 120 frame terakhir.
Anda dapat menggunakan Frame Metrics API untuk mengukur UI tingkat interaksi
tanpa koneksi USB. API ini
memungkinkan pengumpulan data pada
tingkat perincian yang jauh lebih tinggi daripada
adb shell dumpsys gfxinfo
. Perincian yang lebih tinggi ini dimungkinkan karena
sistem dapat mengumpulkan data untuk interaksi tertentu dalam aplikasi; sistem
pengguna tidak perlu menangkap ringkasan global dari seluruh
meningkatkan performa, atau menghapus status global. Anda dapat menggunakan
kemampuan untuk mengumpulkan data performa dan menangkap regresi dalam performa UI
untuk kasus penggunaan nyata dalam aplikasi.
Untuk memantau jendela, implementasikan metode
OnFrameMetricsAvailableListener.onFrameMetricsAvailable()
dan mendaftarkannya pada jendela tersebut.
API menyediakan objek FrameMetrics
, yang
berisi data waktu yang dilaporkan oleh subsistem rendering untuk berbagai tahap pencapaian
dalam siklus hidup {i>frame<i}. 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
Di versi Android sebelumnya, aplikasi Anda dapat menggunakan Akses Penyimpanan Kerangka kerja yang memungkinkan pengguna memilih file dari akun penyimpanan {i>cloud<i}, seperti Google Drive. Namun, tidak ada cara untuk mewakili file yang tidak memiliki representasi bytecode langsung; setiap file diperlukan untuk memberikan aliran input.
Android 7.0 menambahkan konsep file virtual ke Akses Penyimpanan
Google Workspace. Fitur file virtual memungkinkan
DocumentsProvider
untuk 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 {i>file<i} pengguna, virtual atau lainnya.
Untuk informasi selengkapnya tentang cara membuka file virtual, lihat Buka file virtual di Panduan Storage Access Frameworks.