Android 11 memperkenalkan alat untuk menguji dan men-debug aplikasi Anda terhadap perubahan perilaku yang diterapkan dalam versi terbaru platform ini. Alat ini merupakan bagian dari framework kompatibilitas baru yang memungkinkan developer aplikasi mengaktifkan dan menonaktifkan perubahan satu per satu. Manfaatkan fleksibilitas ini untuk menonaktifkan satu perubahan dan melanjutkan pengujian aplikasi Anda terhadap perubahan lain pada platform, atau untuk mengisolasi dan melakukan pengujian terhadap satu perubahan perilaku saja dalam satu waktu.
Kedua jenis perubahan perilaku dapat diubah, termasuk perubahan yang memengaruhi semua aplikasi dan yang hanya memengaruhi aplikasi yang menargetkan Android 11.
Cara mengidentifikasi perubahan yang diaktifkan
Anda dapat memeriksa perubahan perilaku yang saat ini aktif menggunakan opsi developer, logcat, atau perintah ADB.
Mengidentifikasi perubahan yang saat ini aktif dengan opsi developer

Gambar 1. Layar Perubahan Kompatibilitas Aplikasi di opsi developer.
Anda dapat melihat perubahan yang saat ini diaktifkan dan mengaktifkan atau menonaktifkannya melalui opsi developer perangkat. Untuk mengakses opsi ini, ikuti langkah-langkah berikut:
- Jika opsi developer belum diaktifkan, aktifkan sekarang.
- Di aplikasi Setelan perangkat, buka System > Advanced > Developer options > App Compatibility Changes.
- Pilih aplikasi Anda dari daftar.
Setiap perubahan perilaku biasanya termasuk dalam salah satu dari dua kategori berikut:
Perubahan yang memengaruhi semua aplikasi saat dijalankan di Android 11, terlepas dari
targetSdkVersion
aplikasi tersebut.Perubahan ini diaktifkan secara default di framework kompatibilitas, dan dicantumkan pada UI di bagian Perubahan yang Diaktifkan secara Default.
Perubahan yang hanya memengaruhi aplikasi yang menargetkan Android 11.
Perubahan ini diaktifkan secara default di framework kompatibilitas jika aplikasi Anda menargetkan Android 11, dan dicantumkan pada UI di bagian Diaktifkan Setelah SDK 29.
Anda juga akan melihat bagian pada gambar 1 yang disebut Perubahan yang Dinonaktifkan secara Default. Perubahan yang termasuk dalam bagian ini biasanya merupakan perubahan eksperimental.
Mengidentifikasi perubahan yang saat ini aktif melalui logcat
Untuk setiap perubahan perilaku, pada kali pertama dalam proses aplikasi saat aplikasi Anda memanggil API yang terpengaruh, sistem akan menampilkan pesan logcat seperti berikut:
D CompatibilityChangeReporter: Compat change id reported: 141455849; UID 10265; state: ENABLED
Setiap pesan logcat mencakup informasi berikut:
- ID Perubahan
- Menunjukkan perubahan yang memengaruhi aplikasi. Nilai ini merujuk pada salah satu
perubahan perilaku yang tercantum di layar Perubahan Kompatibilitas Aplikasi
(lihat gambar 1). Dalam contoh ini,
141455849
merujuk padaANONYMIZED_DEVICE_ADDRESS_CHANGE_ID
. - UID
- Menunjukkan aplikasi yang terpengaruh oleh perubahan tersebut.
- Status
Menunjukkan apakah perubahan saat ini memengaruhi aplikasi.
Status dapat berupa salah satu nilai berikut:
Status Arti ENABLED
Perubahan tersebut saat ini diaktifkan dan akan memengaruhi perilaku aplikasi jika aplikasi menggunakan API yang diubah. DISABLED
Perubahan tersebut saat ini dinonaktifkan dan tidak akan memengaruhi aplikasi.
Catatan: Jika perubahan ini dinonaktifkan karena
targetSDKVersion
aplikasi berada di bawah nilai minimum yang ditetapkan (aplikasi tidak menargetkan Android 11), perubahan akan diaktifkan secara default saattargetSDKVersion
aplikasi ditingkatkan untuk menargetkan Android 11.LOGGED
Perubahan tersebut dicatat ke dalam log melalui framework kompatibilitas, tetapi tidak dapat diaktifkan atau dinonaktifkan. Meskipun demikian, perubahan ini masih dapat memengaruhi perilaku aplikasi Anda. Lihat deskripsi perubahan dalam daftar perubahan perilaku untuk mengetahui informasi selengkapnya. Dalam banyak kasus, jenis perubahan ini bersifat eksperimental dan dapat diabaikan.
Mengidentifikasi perubahan yang saat ini aktif melalui ADB
Jalankan perintah ADB berikut untuk melihat rangkaian perubahan lengkap (diaktifkan dan dinonaktifkan) di seluruh perangkat:
adb shell dumpsys platform_compat
Outputnya mencantumkan informasi berikut untuk setiap perubahan:
- ID Perubahan
- ID unik untuk perubahan perilaku ini. Contoh,
141455849
. - Nama
- Nama perubahan perilaku. Contohnya,
ANONYMIZED_DEVICE_ADDRESS_CHANGE_ID
. - Kriteria targetSDKVersion
targetSDKVersion
dengan perubahan yang dilindungi (jika ada).Misalnya, jika perubahan ini hanya diaktifkan untuk aplikasi yang menargetkan versi SDK 30 atau yang lebih tinggi, output-nya adalah
enableAfterTargetSdk=29
. Jika perubahan tidak dilindungi olehtargetSDKVersion
, output-nya adalahenableAfterTargetSdk=0
.- Penggantian paket
Nama setiap paket dengan status default perubahan (baik diaktifkan atau dinonaktifkan) yang telah diganti.
Misalnya, jika perubahan diaktifkan secara default, nama paket aplikasi Anda akan dicantumkan jika Anda menonaktifkan perubahan menggunakan opsi developer atau ADB. Dalam hal ini, output-nya adalah:
packageOverrides={com.my.package=false}
Perubahan yang dilindungi oleh
targetSDKVersion
dapat diaktifkan atau dinonaktifkan secara default, sehingga daftar paket dapat menyertakan instance benar atau salah, tergantung padatargetSDKVersion
setiap aplikasi tersebut. Contoh:packageOverrides={com.my.package=true, com.another.package=false}
Waktu untuk mengganti status perubahan
Tujuan utama framework kompatibilitas adalah memberikan kontrol dan fleksibilitas kepada Anda saat Anda menguji aplikasi dengan versi baru Android.
Waktu untuk menonaktifkan perubahan
Perubahan yang memengaruhi semua aplikasi diaktifkan secara default untuk versi platform
tertentu, terlepas dari targetSDKVersion
aplikasi Anda. Biasanya, Anda perlu menguji
dan mengupdate aplikasi untuk perubahan ini terlebih dahulu guna memastikan pengguna yang menjalankan
versi platform tersebut tidak mengalami penurunan kualitas pengalaman aplikasi. Pengujian perubahan ini juga
harus diprioritaskan karena
saat menggunakan build rilis publik Android, Anda tidak dapat menonaktifkan perubahan ini (untuk melindungi
keamanan pengguna akhir).
Jika aplikasi Anda menargetkan targetSDKVersion
tertentu, perubahan apa pun yang
dilindungi oleh versi tersebut juga akan diaktifkan secara default.
Karena aplikasi Anda mungkin terpengaruh oleh lebih dari satu perubahan ini, Anda dapat menonaktifkan perubahan satu per satu. Jika aplikasi mengalami error, gunakan pendekatan ini untuk membantu Anda menentukan perubahan platform mana yang telah menyebabkan error pada aplikasi.
Waktu untuk mengaktifkan perubahan
Perubahan yang dilindungi oleh targetSDKVersion
tertentu dinonaktifkan secara default
setiap kali aplikasi menargetkan versi SDK yang lebih rendah dari versi yang dilindungi. Dalam beberapa
kasus, Anda mungkin perlu mengaktifkan perubahan ini.
Misalnya, Anda mungkin akan menguji aplikasi terhadap serangkaian perubahan platform pada targetSdkVersion
berikutnya. Menggunakan opsi developer atau perintah ADB, Anda dapat
mengaktifkan dan menguji setiap perubahan yang dilindungi satu per satu, bukan mengubah
manifes aplikasi dan memilih ikut serta dalam setiap perubahan sekaligus. Kontrol tambahan ini dapat membantu Anda
menguji perubahan secara terpisah serta menghindari proses debug dan update pada
beberapa bagian aplikasi sekaligus.
Mengaktifkan atau menonaktifkan perubahan
Framework kompatibilitas memungkinkan Anda mengaktifkan atau menonaktifkan setiap perubahan menggunakan opsi developer atau perintah ADB. Mengaktifkan atau menonaktifkan perubahan dapat menyebabkan error pada aplikasi atau menonaktifkan perubahan keamanan penting, sehingga ada beberapa pembatasan untuk mengganti status perubahan.
Mengganti status perubahan menggunakan opsi developer
Gunakan opsi developer untuk mengaktifkan atau menonaktifkan perubahan. Untuk menemukan opsi developer, ikuti langkah-langkah berikut:
- Jika opsi developer belum diaktifkan, aktifkan sekarang.
- Di aplikasi Setelan perangkat, buka Sistem > Lanjutan > Opsi developer > Perubahan Kompatibilitas Aplikasi.
- Pilih aplikasi Anda dari daftar.
Dari daftar perubahan, temukan perubahan yang ingin Anda aktifkan atau nonaktifkan, lalu ketuk tombolnya.
Beralih perubahan menggunakan ADB
Untuk mengaktifkan atau menonaktifkan perubahan menggunakan ADB, jalankan salah satu perintah berikut:
adb shell am compat enable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
adb shell am compat disable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
Teruskan CHANGE_ID
(misalnya 141455849
) atau
CHANGE_NAME
(misalnya
ANONYMIZED_DEVICE_ADDRESS_CHANGE_ID
) beserta
PACKAGE_NAME
aplikasi Anda.
Anda juga dapat menggunakan perintah berikut untuk mereset perubahan kembali ke status defaultnya, yang akan menghapus semua penggantian yang telah ditetapkan menggunakan ADB atau opsi developer:
adb shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
Pembatasan dalam mengganti status perubahan
Secara default, setiap perubahan perilaku akan diaktifkan atau dinonaktifkan. Perubahan yang
memengaruhi semua aplikasi diaktifkan secara default. Perubahan lainnya dilindungi oleh
targetSdkVersion
. Perubahan ini diaktifkan secara default saat aplikasi menargetkan
versi SDK yang sesuai atau yang lebih tinggi, dan dinonaktifkan secara default saat aplikasi
menargetkan versi SDK yang lebih rendah dari versi yang dilindungi. Saat mengaktifkan atau menonaktifkan
perubahan, Anda akan mengganti status default-nya.
Agar framework kompatibilitas tidak digunakan secara tidak benar, ada beberapa pembatasan untuk mengganti status perubahan. Penggantian status perubahan bergantung pada jenis perubahan, apakah aplikasi Anda dapat di-debug, dan jenis build yang berjalan di perangkat Anda. Tabel berikut menjelaskan kapan Anda diizinkan untuk mengganti berbagai jenis perubahan:
Jenis build | Aplikasi yang tidak dapat di-debug | Aplikasi yang dapat di-debug | |
---|---|---|---|
Semua perubahan | Perubahan yang dilindungi oleh targetSDKVersion | Semua perubahan lainnya | |
Pratinjau Developer atau versi Beta | Tidak dapat beralih | Dapat beralih | Dapat beralih |
Build pengguna publik | Tidak dapat beralih | Dapat beralih | Tidak dapat beralih |
Perubahan perilaku yang disertakan dalam framework kompatibilitas
Daftar di bagian ini menjelaskan setiap perubahan perilaku yang disertakan dalam framework kompatibilitas di Android 11. Gunakan daftar ini bersama opsi developer dan perintah ADB untuk menguji dan men-debug aplikasi Anda.
ADD_CONTENT_OBSERVER_FLAGS
ID Perubahan: 150939131
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, terdapat overload API publik baru
onChange(boolean, Uri, int)
yang menyertakan argumen flags
integer.
Metode baru ini merupakan alternatif SDK publik untuk aplikasi yang menggunakan metode overload
onChange()
non-SDK yang menyertakan argumen userId
integer.
ADMIN_APP_PASSWORD_COMPLEXITY
ID Perubahan: 123562444
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi admin yang menargetkan Android 11, tampilkan error setiap kali
aplikasi menetapkan persyaratan sandi yang tidak relevan dengan kualitas sandi yang
ditetapkan saat ini. Misalnya, saat kualitas sandi ditetapkan ke
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
,
aplikasi tidak akan dapat menetapkan panjang sandi minimum. Dalam hal ini, sebelum
mencoba menetapkan panjang sandi minimum, aplikasi harus terlebih dahulu memanggil metode
setPasswordQuality()
,
kemudian memanggil metode
setPasswordMinimumLength()
setelahnya.
Selain itu, saat aplikasi admin yang menargetkan Android 11 menurunkan kualitas sandi, persyaratan sandi yang ada dan tidak berlaku lagi akan direset ke nilai default-nya.
APP_DATA_DIRECTORY_ISOLATION
ID Perubahan: 143937733
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Aplikasi yang menargetkan Android 11 tidak dapat lagi mengakses file di direktori data pribadi aplikasi apa pun, terlepas dari versi SDK target aplikasi lainnya.
Untuk mempelajari lebih lanjut, baca Akses ke direktori pribadi.
APN_READING_PERMISSION_CHANGE_ID
ID Perubahan: 124107808
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, mengakses database APN kini
memerlukan izin Manifest.permission.WRITE_APN_SETTINGS
.
Untuk mempelajari perubahan ini lebih lanjut, baca Akses baca terbatas ke database APN.
BACKGROUND_RATIONALE_CHANGE_ID
ID Perubahan: 147316723
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Aplikasi kini harus memberikan alasan yang valid setiap kali meminta akses lokasi perangkat di latar belakang.
Untuk mempelajari perubahan ini lebih lanjut, lihat panduan tentang cara Mengakses lokasi latar belakang di Android 11 yang membahas perubahan privasi terkait lokasi di Android 11.
CALLBACK_ON_CLEAR_CHANGE
ID Perubahan: 119147584
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Setiap kali
Editor.clear
dipanggil, callback kini dilakukan ke
OnSharedPreferenceChangeListener.onSharedPreferenceChanged
dengan kunci null
.
Untuk mempelajari perubahan ini lebih lanjut, lihat Perubahan callback untuk OnSharedPreferenceChangeListener.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
ID Perubahan: 130595455
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Kode error kini diperluas untuk updateAvailableNetworks(List,
Executor,
Consumer)
dan setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
.
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
ID Perubahan: 148180766
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Ini adalah perubahan perilaku yang tidak begitu terlihat pada startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Sebelum diberlakukannya perubahan ini, sistem memanggil kembali op yang diaktifkan. Sekarang,
sistem akan memanggil kembali op yang benar-benar diminta atau semua op yang diaktifkan jika
tidak ada op yang ditentukan.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
ID Perubahan: 136219221
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, layanan latar depan hanya menerima
kemampuan selagi-digunakan dari kamera dan mikrofon apabila
R.attr.foregroundServiceType
dikonfigurasi sebagai
ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
dan
ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
,
masing-masing dalam file manifes. Pada versi Android sebelumnya, layanan
latar depan menerima kemampuan kamera dan mikrofon secara otomatis.
Untuk mempelajari perubahan ini lebih lanjut, lihat Jenis layanan latar depan di Android 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
ID Perubahan: 128611929
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Aplikasi tidak dapat lagi memposting toast kustom di latar belakang. Namun, aplikasi tetap dapat
memposting toast menggunakan metode Toast.makeText(Context, CharSequence,
int)
dan variannya saat berada di latar belakang.
Untuk mempelajari perubahan ini lebih lanjut, baca Tampilan toast kustom diblokir.
CHANGE_RESTRICT_SAW_INTENT
ID Perubahan: 135920175
Status default: Perubahan ini tidak dapat diganti statusnya. Perubahan hanya dicatat ke dalam log oleh framework kompatibilitas.
Intent yang menggunakan tindakan android.settings.MANAGE_APP_OVERLAY_PERMISSION
dan
skema URI data package
tidak lagi mengarahkan pengguna ke layar
khusus aplikasi untuk mengelola izin terkait. Sekarang, pengguna akan diarahkan ke
layar tempat mereka dapat mengelola semua aplikasi yang telah meminta izin.
CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
ID Perubahan: 147798919
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Toast teks kini dirender oleh SystemUI dan bukan dalam aplikasi. Dengan demikian, aplikasi tidak akan menghindari pembatasan saat memposting toast kustom di latar belakang.
DEFAULT_SCOPED_STORAGE
ID Perubahan: 149924527
Status default: Diaktifkan untuk semua aplikasi.
Semua aplikasi yang menargetkan Android 11 sekarang menggunakan penyimpanan terbatas secara default dan tidak dapat lagi memilih untuk tidak menggunakan penyimpanan terbatas.
Namun, Anda dapat menguji aplikasi tanpa penyimpanan terbatas, terlepas dari versi SDK target dan nilai tanda manifes aplikasi, dengan menonaktifkan perubahan ini.
Untuk mempelajari lebih lanjut perubahan pada penyimpanan terbatas di Android 11, lihat bagian Penyimpanan terbatas di halaman tentang perubahan pada penyimpanan Android di Android 11.
EMPTY_INTENT_ACTION_CATEGORY
ID Perubahan: 151163173
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, sistem sekarang akan menampilkan error jika
action
atau
category
pada filter intent berupa string kosong. Bug
yang ada di platform sebelum Android 11 memungkinkan kasus ini untuk diteruskan
tanpa menampilkan error. Perhatikan bahwa ini tidak termasuk kasus
jika atribut bernilai null atau tidak ada karena kasus tersebut selalu menampilkan error.
FILTER_APPLICATION_QUERY
ID Perubahan: 135549675
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Aplikasi kini harus mendeklarasikan paket dan intent yang perlu digunakan sebelum memperoleh detail tentang aplikasi lain di suatu perangkat. Deklarasi tersebut harus dibuat
menggunakan tag <queries>
dalam manifes aplikasi.
Untuk mempelajari lebih lanjut tentang cara membuat kueri dan berinteraksi dengan aplikasi terinstal lainnya di Android 11, lihat halaman privasi visibilitas paket.
FORCE_ENABLE_SCOPED_STORAGE
ID Perubahan: Value: 132649864
Status default: Dinonaktifkan untuk semua aplikasi.
Semua aplikasi yang menargetkan Android 11 sekarang menggunakan penyimpanan terbatas secara default dan tidak dapat lagi memilih untuk tidak menggunakan penyimpanan terbatas.
Namun, jika aplikasi Anda masih menargetkan Android 10 (API level 29) atau yang lebih rendah, Anda dapat menguji aplikasi dengan penyimpanan terbatas, terlepas dari versi SDK target dan nilai tanda manifes aplikasi, dengan mengaktifkan perubahan ini.
Untuk mempelajari lebih lanjut perubahan pada penyimpanan terbatas di Android 11, lihat bagian Penyimpanan terbatas di halaman tentang perubahan pada penyimpanan Android di Android 11.
GET_DATA_CONNECTION_STATE_R_VERSION
ID Perubahan: 148535736
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk memeriksa versi SDK bagi PreciseDataConnectionState#getDataConnectionState
.
GET_DATA_STATE_R_VERSION
ID Perubahan: 148534348
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk memeriksa versi SDK bagi
getDataState()
.
GET_PROVIDER_SECURITY_EXCEPTIONS
ID Perubahan: 150935354
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi,
getProvider(String)
tidak lagi melempar pengecualian keamanan apa pun.
GET_TARGET_SDK_VERSION_CODE_CHANGE
ID Perubahan: 145147528
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 10 (API level 29) atau yang lebih tinggi.
Untuk memeriksa versi SDK bagi metode SmsManager.sendResolverResult()
.
GWP_ASAN
ID Perubahan: 135634846
Status default: Dinonaktifkan untuk semua aplikasi.
Mengaktifkan deteksi bug memori native yang diambil sampelnya dalam aplikasi.
Untuk mempelajari perubahan ini lebih lanjut, lihat panduan GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
ID Perubahan: 149997251
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 10 (API level 29) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 10 (API level 29) atau lebih tinggi, menghapus akses ke semua
antarmuka non-SDK yang merupakan bagian dari max-target-p
(greylist-max-p
)
daftar
untuk Android 10 (API level 29).
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
ID Perubahan: 149994052
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11 (API level 30) atau lebih tinggi, menghapus akses ke semua
antarmuka non-SDK yang merupakan bagian dari max-target-q
(greylist-max-q
)
daftar
untuk Android 11 (API level 30).
Untuk mempelajari perubahan ini lebih lanjut, lihat antarmuka non-SDK yang kini diblokir di Android 11.
LISTEN_CODE_CHANGE
ID Perubahan: 147600208
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 10 (API level 29) atau yang lebih tinggi.
Untuk memeriksa versi SDK bagi TelephonyManager.listen(PhoneStateListener,
int)
.
MISSING_APP_TAG
ID Perubahan: 150776642
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, error sekarang akan ditampilkan jika file
manifes aplikasi tidak memiliki tag application
atau instrumentation
.
NATIVE_HEAP_POINTER_TAGGING
ID Perubahan: 135754954
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, alokasi heap native kini memiliki tag bukan nol pada byte yang paling signifikan.
Untuk mempelajari lebih lanjut, baca Pemberian tag pointer heap.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
ID Perubahan: 150880553
Status default: Diaktifkan untuk semua aplikasi.
Untuk aplikasi yang menargetkan Android 11, sekarang terdapat batas jumlah objek
PhoneStateListener
yang dapat didaftarkan oleh setiap proses melalui TelephonyManager.listen(PhoneStateListener, int)
.
Batas defaultnya adalah 50, yang dapat berubah melalui update konfigurasi perangkat jarak jauh. Batas
ini diterapkan melalui IllegalStateException
yang ditampilkan dari TelephonyManager.listen(PhoneStateListener, int)
saat
proses yang melanggar mencoba mendaftarkan terlalu banyak pemroses.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
ID Perubahan: 142365358
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Aplikasi yang menargetkan Android 11 tidak dapat lagi menggunakan lapisan refleksi tambahan untuk mengakses antarmuka non-SDK yang dibatasi.
PROCESS_CAPABILITY_CHANGE_ID
ID Perubahan: 136274596
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, tanda
Context.BIND_INCLUDE_CAPABILITIES
kini dapat digunakan untuk meneruskan kemampuan selagi-digunakan dari proses klien ke
layanan terikat.
REMOVE_ANDROID_TEST_BASE
ID Perubahan: 133396946
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk aplikasi yang menargetkan Android 11, library android.test.base
telah dihapus jika aplikasi tidak bergantung pada android.test.runner
(karena
aplikasi tersebut bergantung pada class dari library android.test.base
).
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
ID Perubahan: 136293963
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Untuk layanan aksesibilitas yang menargetkan Android 11, tanda
FLAG_REQUEST_ACCESSIBILITY_BUTTON
kini harus ditentukan dalam file metadata layanan aksesibilitas.
Jika tidak, flag akan diabaikan.
Untuk mempelajari perubahan ini lebih lanjut, lihat Menyatakan penggunaan tombol aksesibilitas dalam file metadata.
RESOURCES_ARSC_COMPRESSED
ID Perubahan: 132742131
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Aplikasi yang menargetkan Android 11 (API level 30) tidak dapat diinstal jika
berisi file terkompresi resources.arsc
atau jika file ini tidak disejajarkan pada
batas 4 byte.
Untuk mempelajari perubahan ini lebih lanjut, lihat File resource yang terkompresi.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
ID Perubahan: 141600225
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Jika aplikasi Anda menargetkan Android 11 dan menggunakan Storage Access
Framework (SAF), Anda tidak
dapat lagi mengakses direktori tertentu menggunakan tindakan intent
ACTION_OPEN_DOCUMENT
dan
ACTION_OPEN_DOCUMENT_TREE
. Untuk mempelajari perubahan ini lebih lanjut, lihat bagian pembatasan
akses Dokumen di halaman yang membahas tentang pembaruan privasi terkait penyimpanan di
Android 11.
SELINUX_LATEST_CHANGES
ID Perubahan: 143539591
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Perubahan ini melindungi akses aplikasi ke domain SELinux untrusted_app_R-targetSDk.
Ini merupakan salah satu perubahan mendasar dalam framework kompatibilitas yang
memungkinkan aplikasi mengganti status perubahan lain yang dilindungi oleh targetSdkVersion
tanpa
mengubah targetSDKVersion
aplikasinya. Karena itu, Anda tidak boleh menonaktifkan
perubahan ini untuk aplikasi yang menargetkan Android 11, atau aplikasi tidak
akan berfungsi.
Perubahan ini tidak berpengaruh pada aplikasi yang menggunakan ID pengguna bersama.
THROW_SECURITY_EXCEPTIONS
ID Perubahan: 147340954
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Sebelum Android 11, SecurityException
hanya akan ditampilkan oleh setEnabled
API untuk error izin. Di Android 11, hal ini tidak berlaku lagi, dan SecurityException
dapat ditampilkan karena sejumlah alasan dan tidak ada satu alasan pun yang ditunjukkan ke
pemanggil.
Untuk mempertahankan perilaku API yang ada, jika kegagalan izin lama atau kegagalan
penerapan pembuat terjadi untuk aplikasi yang tidak menargetkan
Android 11, pengecualian tersebut otomatis masuk ke
IllegalStateException
yang
ada di sumber sebelum Android 11.
USE_SET_LOCATION_ENABLED
ID Perubahan: 117835097
Status default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.
Aplikasi admin yang menargetkan Android 11 tidak dapat lagi menggunakan
DevicePolicyManager.setSecureSetting(ComponentName, String, String)
untuk mengubah setelan Settings.Secure.LOCATION_MODE
yang tidak digunakan lagi. Sekarang, sebaiknya gunakan DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
.