Perubahan perilaku: Aplikasi yang menargetkan Android 11

Seperti rilis sebelumnya, Android 11 menyertakan perubahan perilaku yang dapat memengaruhi aplikasi Anda. Perubahan perilaku berikut ini berlaku khusus bagi aplikasi yang menargetkan Android 11 atau yang lebih tinggi. Jika aplikasi Anda menetapkan targetSdkVersion ke 30, Anda harus memodifikasi aplikasi untuk mendukung perilaku ini dengan benar, jika berlaku.

Selain itu, pastikan Anda meninjau daftar perubahan perilaku yang memengaruhi semua aplikasi yang berjalan di Android 11.

Privasi

Android 11 memperkenalkan perubahan dan pembatasan untuk menyempurnakan privasi pengguna, termasuk hal berikut:

  • Penegakan penyimpanan terbatas: Akses ke direktori penyimpanan eksternal terbatas pada direktori khusus aplikasi dan jenis media tertentu yang telah dibuat aplikasi.
  • Reset otomatis izin: Jika pengguna tidak berinteraksi dengan aplikasi selama beberapa bulan, sistem akan secara otomatis mereset izin sensitif aplikasi.
  • Akses lokasi latar belakang: Pengguna harus diarahkan ke setelan sistem untuk memberikan izin akses lokasi latar belakang ke aplikasi.
  • Visibilitas paket: Saat aplikasi meminta daftar aplikasi terinstal di perangkat, daftar yang ditampilkan akan difilter.

Untuk mempelajari lebih lanjut, lihat halaman Privasi.

Keamanan

Pemberian tag pointer Heap

Detail perubahan

Nama Perubahan: NATIVE_HEAP_POINTER_TAGGING

ID Perubahan: 135754954

Cara mengganti status perubahan

Saat menguji kompatibilitas aplikasi dengan Android 11, Anda dapat mengaktifkan atau menonaktifkan perubahan ini menggunakan perintah ADB berikut:

adb shell am compat enable (135754954|NATIVE_HEAP_POINTER_TAGGING) PACKAGE_NAME
adb shell am compat disable (135754954|NATIVE_HEAP_POINTER_TAGGING) PACKAGE_NAME

Untuk mengetahui informasi selengkapnya tentang framework kompatibilitas dan mengganti status perubahan, baca Menguji kompatibilitas aplikasi dengan Android 11.

Pointer heap kini memiliki tag bukan nol dalam byte paling signifikan (MSB). Aplikasi yang menggunakan pointer secara tidak benar, termasuk yang memodifikasi MSB, sekarang dapat mengalami error atau mengalami masalah lain. Perubahan ini diperlukan untuk mendukung hardware di masa mendatang dengan Ekstensi Pemberian Tag Memori ARM (MTE) yang diaktifkan. Untuk mempelajari lebih lanjut, baca Pointer yang Diberi Tag.

Untuk menonaktifkan fitur ini, baca dokumentasi manifes allowNativeHeapPointerTagging.

Tampilan toast kustom diblokir

Detail perubahan

Nama Perubahan: CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

ID Perubahan: 128611929

Cara mengganti status perubahan

Saat menguji kompatibilitas aplikasi dengan Android 11, Anda dapat mengaktifkan atau menonaktifkan perubahan ini menggunakan perintah ADB berikut:

adb shell am compat enable (128611929|CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK) PACKAGE_NAME
adb shell am compat disable (128611929|CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK) PACKAGE_NAME

Untuk mengetahui informasi selengkapnya tentang framework kompatibilitas dan mengganti status perubahan, baca Menguji kompatibilitas aplikasi dengan Android 11.

Mulai di Android 11, tampilan toast kustom tidak digunakan lagi. Jika aplikasi Anda menargetkan Android 11, toast yang berisi tampilan kustom akan diblokir saat diposting dari latar belakang. Tampilan toast kustom akan terus berfungsi jika Anda menargetkan versi Android yang lebih lama, tetapi penggunaannya tidak disarankan.

Sebaiknya Anda menggunakan snackbar jika memungkinkan. Jika kasus penggunaan aplikasi Anda tidak memungkinkan penggunaan snackbar, seperti saat Anda harus mengirim pesan kepada pengguna ketika aplikasi berada di latar belakang, Anda masih dapat menggunakan toast teks karena tidak dibatasi oleh perubahan perilaku yang baru.

Untuk mempelajari perubahan ini lebih lanjut, baca Update untuk toast di Android 11.

Konektivitas

Pembatasan akses baca ke database APN

Detail perubahan

Nama Perubahan: APN_READING_PERMISSION_CHANGE_ID

ID Perubahan: 124107808

Cara mengganti status perubahan

Saat menguji kompatibilitas aplikasi dengan Android 11, Anda dapat mengaktifkan atau menonaktifkan perubahan ini menggunakan perintah ADB berikut:

adb shell am compat enable (124107808|APN_READING_PERMISSION_CHANGE_ID) PACKAGE_NAME
adb shell am compat disable (124107808|APN_READING_PERMISSION_CHANGE_ID) PACKAGE_NAME

Untuk mengetahui informasi selengkapnya tentang framework kompatibilitas dan mengganti status perubahan, baca Menguji kompatibilitas aplikasi dengan Android 11.

Aplikasi yang menargetkan Android 11 kini memerlukan izin hak istimewa Manifest.permission.WRITE_APN_SETTINGS untuk membaca atau mengakses database APN penyedia Telepon. Mencoba mengakses database APN tanpa izin ini akan menyebabkan pengecualian keamanan.

Aksesibilitas

Mendeklarasikan penggunaan tombol aksesibilitas di file metadata

Detail perubahan

Nama Perubahan: REQUEST_ACCESSIBILITY_BUTTON_CHANGE

ID Perubahan: 136293963

Cara mengganti status perubahan

Saat menguji kompatibilitas aplikasi dengan Android 11, Anda dapat mengaktifkan atau menonaktifkan perubahan ini menggunakan perintah ADB berikut:

adb shell am compat enable (136293963|REQUEST_ACCESSIBILITY_BUTTON_CHANGE) PACKAGE_NAME
adb shell am compat disable (136293963|REQUEST_ACCESSIBILITY_BUTTON_CHANGE) PACKAGE_NAME

Untuk mengetahui informasi selengkapnya tentang framework kompatibilitas dan mengganti status perubahan, baca Menguji kompatibilitas aplikasi dengan Android 11.

Mulai di Android 11, layanan aksesibilitas tidak dapat mendeklarasikan pengaitan dengan tombol aksesibilitas sistem pada waktu proses. Jika Anda menambahkan AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON ke properti flags objek AccessibilityServiceInfo, framework tidak akan meneruskan peristiwa callback tombol aksesibilitas ke layanan Anda.

Sekarang, Anda dapat mendeklarasikan atribusi layanan aksesibilitas dengan tombol aksesibilitas menggunakan tanda flagRequestAccessibilityButton di file metadata layanan aksesibilitas, biasanya berupa res/raw/accessibilityservice.xml.

Kamera

Tindakan intent media memerlukan kamera default sistem

Mulai di Android 11, hanya aplikasi kamera sistem yang terinstal secara default yang dapat merespons tindakan intent berikut:

Jika ada lebih dari satu aplikasi kamera sistem yang terinstal secara default, sistem akan menampilkan dialog bagi pengguna untuk memilih salah satunya. Jika Anda ingin aplikasi menggunakan aplikasi kamera pihak ketiga tertentu untuk mengambil foto atau video baginya, tetapkan intent ini sebagai intent eksplisit dengan menentukan nama paket atau komponen bagi intent tersebut.

Pemaketan dan penginstalan aplikasi

File resource terkompresi

Detail perubahan

Nama Perubahan: RESOURCES_ARSC_COMPRESSED

ID Perubahan: 132742131

Cara mengganti status perubahan

Saat menguji kompatibilitas aplikasi dengan Android 11, Anda dapat mengaktifkan atau menonaktifkan perubahan ini menggunakan perintah ADB berikut:

adb shell am compat enable (132742131|RESOURCES_ARSC_COMPRESSED) PACKAGE_NAME
adb shell am compat disable (132742131|RESOURCES_ARSC_COMPRESSED) PACKAGE_NAME

Untuk mengetahui informasi selengkapnya tentang framework kompatibilitas dan mengganti status perubahan, baca Menguji kompatibilitas aplikasi dengan Android 11.

Aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi tidak dapat diinstal jika berisi file terkompresi resources.arsc atau jika file ini tidak selaras dengan batas 4 byte. File ini tidak dapat dipetakan memori oleh sistem jika salah satu kondisi ini terjadi. Tabel Resource yang tidak dapat dipetakan memori harus dibaca menjadi buffer dalam RAM yang menyebabkan tekanan memori yang tidak perlu pada sistem dan meningkatkan penggunaan RAM perangkat.

APK Signature Scheme v2 kini diwajibkan

Aplikasi yang menargetkan Android 11 (API level 30) yang saat ini hanya ditandatangani menggunakan APK Signature Scheme v1 kini juga harus ditandatangani menggunakan APK Signature Scheme v2 atau yang lebih baru. Pengguna tidak dapat menginstal atau mengupdate aplikasi yang hanya ditandatangani dengan APK Signature Scheme v1 di perangkat yang menjalankan Android 11.

Untuk memastikan bahwa aplikasi Anda ditandatangani dengan APK Signature Scheme v2 atau yang lebih tinggi, Anda dapat menggunakan Android Studio, atau alat apksigner pada command line.

Firebase

Firebase JobDispatcher dan GCMNetworkManager

Jika aplikasi Anda menargetkan API level 30 atau yang lebih tinggi, panggilan Firebase JobDispatcher dan GcmNetworkManager API akan dinonaktifkan di perangkat yang menjalankan Android 6.0 (API level 23) atau yang lebih tinggi. Untuk mengetahui informasi tentang migrasi, baca Melakukan migrasi dari Firebase JobDispatcher ke WorkManager dan Melakukan migrasi dari GCMNetworkManager ke WorkManager.

Transfer file antarperangkat

Jika aplikasi Anda menargetkan Android 11, Anda tidak dapat lagi menonaktifkan migrasi antarperangkat untuk file aplikasi menggunakan atribut allowBackup. Sistem akan mengizinkan fungsi ini secara otomatis.

Namun, Anda tetap dapat menonaktifkan pencadangan dan pemulihan berbasis cloud untuk file aplikasi dengan menetapkan atribut allowBackup ke false, meskipun aplikasi menargetkan Android 11.

Perubahan callback untuk OnSharedPreferenceChangeListener

Detail perubahan

Nama Perubahan: CALLBACK_ON_CLEAR_CHANGE

ID Perubahan: 119147584

Cara mengganti status perubahan

Saat menguji kompatibilitas aplikasi dengan Android 11, Anda dapat mengaktifkan atau menonaktifkan perubahan ini menggunakan perintah ADB berikut:

adb shell am compat enable (119147584|CALLBACK_ON_CLEAR_CHANGE) PACKAGE_NAME
adb shell am compat disable (119147584|CALLBACK_ON_CLEAR_CHANGE) PACKAGE_NAME

Untuk mengetahui informasi selengkapnya tentang framework kompatibilitas dan mengganti status perubahan, baca Menguji kompatibilitas aplikasi dengan Android 11.

Untuk aplikasi yang menargetkan Android 11 (API level 30), setiap kali Editor.clear dipanggil, callback kini dilakukan ke OnSharedPreferenceChangeListener.onSharedPreferenceChanged dengan kunci null.

Pembatasan antarmuka non-SDK

Android 11 menyertakan daftar terbaru antarmuka non-SDK yang dibatasi berdasarkan kolaborasi dengan developer Android dan pengujian internal terbaru. Jika memungkinkan, kami akan memastikan ketersediaan alternatif publik sebelum membatasi antarmuka non-SDK.

Jika aplikasi Anda tidak menargetkan Android 11, beberapa perubahan ini mungkin tidak langsung memengaruhi Anda. Namun, meskipun saat ini Anda dapat menggunakan antarmuka non-SDK (bergantung pada API level target aplikasi Anda), penggunaan metode atau kolom non-SDK tetap sangat berisiko merusak aplikasi Anda.

Jika tidak yakin apakah aplikasi Anda menggunakan antarmuka non-SDK atau tidak, Anda dapat menguji aplikasi untuk mencari tahu. Jika aplikasi Anda mengandalkan antarmuka non-SDK, sebaiknya mulailah merencanakan migrasi ke alternatif SDK. Meskipun begitu, kami paham bahwa beberapa aplikasi memiliki kasus penggunaan yang valid untuk menggunakan antarmuka non-SDK. Jika tidak dapat menemukan alternatif penggunaan antarmuka non-SDK untuk fitur dalam aplikasi Anda, sebaiknya minta API publik baru.

Untuk mempelajari perubahan dalam rilis Android ini lebih lanjut, baca Update pembatasan antarmuka non-SDK di Android 11. Untuk mempelajari lebih lanjut tentang antarmuka non-SDK secara umum, baca Pembatasan antarmuka non-SDK.