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, lihat Menguji dan melakukan debug perubahan perilaku platform di aplikasi.
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
.
Pembaruan pada toast
Toast kustom dari latar belakang telah diblokir
Demi keamanan dan mempertahankan pengalaman yang baik bagi pengguna, sistem akan memblokir toast yang berisi tampilan kustom jika toast tersebut dikirim dari latar belakang oleh aplikasi yang menargetkan Android 11 atau versi yang lebih tinggi. Perlu diketahui bahwa toast teks
masih diizinkan; berikut ini adalah toast yang dibuat menggunakan
Toast.makeText()
yang
tidak memanggil setView()
.
Namun, jika aplikasi Anda mencoba memposting toast yang berisi tampilan kustom dari latar belakang, sistem tidak akan menampilkan pesan kepada pengguna. Sebagai gantinya, sistem akan membuat log pesan berikut di logcat:
W/NotificationService: Blocking custom toast from package \ <package> due to package not in the foreground
Callback toast
Jika Anda ingin mendapatkan notifikasi saat toast (teks atau kustom) muncul atau menghilang,
gunakan metode
addCallback()
yang ditambahkan di Android 11.
Perubahan API toast teks
Aplikasi yang menargetkan Android 11 atau versi lebih tinggi akan melihat efek samping berikut untuk toast teks:
- Metode
getView()
menampilkannull
. - Nilai yang ditampilkan dari metode berikut tidak mencerminkan nilai sebenarnya, sehingga Anda tidak boleh mengandalkannya di aplikasi Anda:
- Metode berikut bersifat tanpa pengoperasian, jadi sebaiknya aplikasi Anda tidak menggunakannya:
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, lihat Menguji dan melakukan debug perubahan perilaku platform di aplikasi.
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 interaksi dengan mesin TTS dalam file manifes
Adanya perubahan pada visibilitas
paket mengakibatkan aplikasi yang menargetkan
Android 11 dan berinteraksi dengan mesin text-to-speech (TTS) harus
menambahkan <queries>
berikut ke file manifesnya:
<queries> <intent> <action android:name="android.intent.action.TTS_SERVICE" /> </intent> </queries>
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, lihat Menguji dan melakukan debug perubahan perilaku platform di aplikasi.
Mulai Android 11, layanan aksesibilitas Anda tidak dapat membuat
deklarasi waktu proses bahwa layanan memiliki asosiasi dengan
tombol aksesibilitas sistem. Jika Anda menambahkan
AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON
ke properti flags
objek AccessibilityServiceInfo
, framework tidak akan meneruskan
peristiwa callback tombol aksesibilitas ke layanan Anda.
Untuk menerima peristiwa callback aksesibilitas di layanan aksesibilitas Anda,
gunakan file metadata layanan aksesibilitas untuk menyatakan keterkaitan layanan dengan
tombol aksesibilitas. Sertakan nilai flagRequestAccessibilityButton
dalam
definisi atribut
accessibilityFlags
. Lokasi umum untuk file metadata layanan aksesibilitas adalah
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:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
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, lihat Menguji dan melakukan debug perubahan perilaku platform di aplikasi.
Aplikasi yang menargetkan Android 11 (API level 30) atau versi 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 ada. Tabel resource yang tidak dapat dipetakan memori harus
dibaca menjadi buffer dalam RAM, sehingga menyebabkan tekanan memori yang tidak perlu pada
sistem dan peningkatan penggunaan RAM pada perangkat.
Jika sebelumnya Anda menggunakan file resources.arsc
yang dikompresi, cobalah strategi
alternatif, seperti menyingkat resource
aplikasi atau metode lain untuk
menyingkat, meng-obfuscate, dan mengoptimalkan aplikasi Anda.
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.
Pengenalan ucapan
Karena adanya perubahan pada visibilitas
paket, aplikasi yang menargetkan
Android 11 dan berinteraksi dengan layanan pengenalan ucapan perlu
menambahkan elemen <queries>
berikut ke file manifesnya:
<queries> <intent> <action android:name="android.speech.RecognitionService" /> </intent> </queries>
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, lihat Menguji dan melakukan debug perubahan perilaku platform di aplikasi.
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 beberapa 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.