Perubahan framework kompatibilitas (Android–12)

Gambar 1. Layar Perubahan Kompatibilitas Aplikasi di opsi developer mencantumkan perubahan yang dapat Anda ubah.

Halaman ini menjelaskan setiap perubahan perilaku yang merupakan bagian dari framework kompatibilitas di Android 12 (API level 31). Gunakan daftar ini bersama dengan opsi developer dan perintah ADB untuk menguji dan men-debug aplikasi saat Anda bersiap untuk mendukung dan menargetkan Android 12.

Beberapa hal yang dapat Anda lakukan menggunakan alat framework kompatibilitas:

  • Menguji perubahan yang ditargetkan tanpa benar-benar mengubah targetSdkVersion aplikasi. Anda dapat menggunakan tombol alih untuk mengaktifkan paksa setiap perubahan perilaku yang ditargetkan, guna mengevaluasi dampaknya terhadap aplikasi yang ada.
  • Memfokuskan pengujian pada perubahan tertentu. Dengan tombol alih ini, Anda dapat menonaktifkan beberapa perubahan yang ditargetkan, sehingga dapat melakukan pengujian sesuai kebutuhan tanpa perlu menangani semua perubahan yang ditargetkan sekaligus.
  • Mengelola tombol alih melalui adb. Anda dapat menggunakan perintah adb untuk mengaktifkan atau menonaktifkan perubahan yang dapat diganti statusnya di lingkungan pengujian otomatis.
  • Men-debug lebih cepat menggunakan ID perubahan standar. Setiap perubahan yang dapat diganti statusnya memiliki ID dan nama unik yang dapat Anda gunakan untuk men-debug root masalah dalam output log dengan cepat.

Untuk mengetahui detail lengkap penggunaan fitur untuk setiap kasus penggunaan tersebut, lihat Alat framework kompatibilitas.

Perubahan perilaku yang disertakan dalam framework kompatibilitas

Daftar di bagian ini menjelaskan setiap perubahan perilaku yang disertakan dalam framework kompatibilitas di Android 12.

Anda dapat memfilter daftar perubahan menurut Status Default.

Perubahan perilaku ditambahkan ke framework kompatibilitas di Android 12

ALWAYS_SANDBOX_DISPLAY_APIS

ID Perubahan: 185004937
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika diaktifkan, menerapkan sandbox Display API ke paket terlepas dari mode windowing. Display API akan selalu menyediakan batas aplikasi.

Untuk mempelajari perubahan ini lebih lanjut, lihat bagian halaman perubahan perilaku Android 12 tentang Metode tampilan yang tidak digunakan lagi.

AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER

ID Perubahan: 163400105
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 32) atau yang lebih tinggi.

Mulai Android 12, platform dapat memberikan saran non-teks (seperti gambar) menggunakan framework IsiOtomatis tambahan (lihat layanan isi otomatis). Agar aplikasi dapat menangani saran ini, biasanya OnReceiveContentListener API harus diimplementasikan.

Agar API ini lebih mudah digunakan untuk aplikasi yang sebelumnya telah mengimplementasikan InputConnection.commitContent(InputContentInfo, int, Bundle) API, kita akan menggunakan kembali API tersebut sebagai penggantian jika OnReceiveContentListener belum diimplementasikan oleh aplikasi. Penggantian ini hanya diaktifkan pada Android 12 (API level 31). ID perubahan ini menonaktifkan penggantian, sehingga aplikasi yang menargetkan Android 12 (API level 32) dan yang lebih tinggi harus menerapkan OnReceiveContentListener API untuk menerima saran non-teks.

BLOCK_FLAG_SLIPPERY

ID Perubahan: 157929241
Status Default: Diaktifkan untuk semua aplikasi.

Untuk aplikasi yang berjalan di Android 12 (API level 31), periksa apakah FLAG_SLIPPERY digunakan dengan jendela apa pun di aplikasi. Kami memperkirakan tanda ini mungkin hanya digunakan oleh komponen sistem karena merupakan kolom yang tidak didukung. Jika ya, tindakan tersebut akan dibatasi.

BLOCK_GPS_STATUS_USAGE

ID Perubahan: 144027538
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, semua penggunaan API GpsStatus harus diganti dengan GnssStatus API.

BLOCK_IMMUTABLE_PENDING_INTENTS

ID Perubahan: 171317480
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan objek PendingIntent lebih tinggi yang tidak dapat diubah yang diteruskan ke API lokasi akan menghasilkan IllegalArgumentException.

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

ID Perubahan: 169887240
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, API sistem LocationRequest tidak dapat digunakan dengan permintaan lokasi PendingIntent.

BLOCK_UNTRUSTED_TOUCHES

ID Perubahan: 158002302
Status Default: Diaktifkan untuk semua aplikasi.

Untuk menjaga keamanan sistem dan pengalaman pengguna yang baik, Android 12 mencegah aplikasi agar tidak menggunakan peristiwa sentuh saat overlay memblokir aplikasi dengan cara berbahaya.

Untuk mempelajari perubahan ini lebih lanjut, lihat Peristiwa sentuh tidak tepercaya akan diblokir.

CALL_ACTIVITY_RESULT_BEFORE_RESUME

ID Perubahan: 78294732
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 32) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 32) dan yang lebih tinggi, perubahan ini mengoreksi siklus proses hasil aktivitas untuk menjamin bahwa aktivitas mendapatkan hasil aktivitas tepat sebelum melanjutkan.

CAMERA_MIC_INDICATORS_NOT_PRESENT

ID Perubahan: 162547999
Status Default: Dinonaktifkan untuk semua aplikasi.

Menunjukkan bahwa perangkat ini mendukung indikator kamera dan mikrofon. Akan menjadi false jika ada, karena metode CompatChanges#isChangeEnabled menampilkan true jika ID Perubahan tidak ada.

CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS

ID Perubahan: 146211400
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 32) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 32) dan yang lebih tinggi, pengelola paket tidak akan menginstal paket jika ada grup izin yang salah format. Grup izin hanya boleh dibagikan antar-aplikasi yang menggunakan sertifikat bersama. Jika izin dimiliki suatu grup, grup tersebut juga harus ditetapkan.

CHANGE_ID_AUTH_STATE_DENIED

ID Perubahan: 181350407
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi klien yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, SecurityException ditampilkan ketika berada dalam status otorisasi yang ditolak dan mencoba mengirim pesan ke nanoapp.

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

ID Perubahan: 136069189
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, SecurityException ditampilkan jika tidak memiliki izin HIGH_SAMPLING_RATE_SENSORS, berjalan dalam mode debug, dan meminta frekuensi sampling yang lebih cepat dari 200 Hz.

DELIVER_HISTORICAL_LOCATIONS

ID Perubahan: 73144566
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, klien di lokasi dapat menerima lokasi historis (dari sebelum waktu sekarang) dalam kondisi tertentu.

DISPLAY_INFO_NR_ADVANCED_SUPPORTED

ID Perubahan: 181658987
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, memberikan kompatibilitas mundur untuk perubahan dalam TelephonyDisplayInfo.

DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE

ID Perubahan: 170503758
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, platform mungkin melakukan throttle kecepatan frame aplikasi menjadi pembagi kecepatan refresh jika lebih disarankan (misalnya, jika aplikasi dipanggil ke Surface.setFrameRate(float, int) ). Aplikasi akan mengalami Choreographer.postFrameCallback(Choreographer.FrameCallback) callback dan backpressure pada kecepatan frame yang di-throttle. Aplikasi menggunakan Display.getRefreshRate() dan Display.Mode.getRefreshRate() untuk mengetahui kecepatan refresh tampilan. Display.getRefreshRate() akan selalu menampilkan kecepatan frame aplikasi, bukan kecepatan refresh tampilan fisik untuk memungkinkan aplikasi melakukan kecepatan frame dengan benar. Display.Mode.getRefreshRate() akan menampilkan kecepatan frame aplikasi jika dikompilasi ke rilis sebelumnya dan dimulai dengan Android 12 (API level 31) akan mengembalikan kecepatan refresh tampilan fisik.

DOWNSCALED

ID Perubahan: 168419799
Status Default: Dinonaktifkan untuk semua aplikasi.

Perubahan ini adalah gerbang untuk semua perubahan penurunan skala buffering per aplikasi. Mengaktifkan perubahan ini memungkinkan faktor penskalaan berikut untuk diterapkan:

Jika perubahan ini diaktifkan untuk paket aplikasi, ukuran aplikasi akan diubah secara paksa ke faktor penskalaan tertinggi yang diaktifkan. Misalnya, 80% digunakan jika 80% dan 70% (DOWNSCALE_80 dan DOWNSCALE_70) diaktifkan.

DOWNSCALE_30

ID Perubahan: 189970040
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 30% resolusi vertikal dan horizontal dari tampilan sebenarnya.

DOWNSCALE_35

ID Perubahan: 189969749
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 35% resolusi vertikal dan horizontal dari tampilan sebenarnya.

DOWNSCALE_40

ID Perubahan: 189970038
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 40% resolusi vertikal dan horizontal dari tampilan sebenarnya.

DOWNSCALE_45

ID Perubahan: 189969782
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 45% resolusi vertikal dan horizontal dari tampilan sebenarnya.

DOWNSCALE_50

ID Perubahan: 176926741
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 50% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_55

ID Perubahan: 189970036
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 55% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_60

ID Perubahan: 176926771
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 60% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_65

ID Perubahan: 189969744
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 65% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_70

ID Perubahan: 176926829
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 70% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_75

ID Perubahan: 189969779
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 75% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_80

ID Perubahan: 176926753
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 80% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_85

ID Perubahan: 189969734
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 85% resolusi vertikal dan horizontal tampilan sebenarnya.

DOWNSCALE_90

ID Perubahan: 182811243
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika DOWNSCALED juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan memaksa aplikasi menganggapnya berjalan pada layar dengan 90% resolusi vertikal dan horizontal tampilan sebenarnya.

DO_NOT_DOWNSCALE_TO_1080P_ON_TV

ID Perubahan: 157629738
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Aplikasi Android TV yang menargetkan Android 12 (API level 31) dan yang lebih tinggi diharapkan dapat menangani semua ukuran Jendela, termasuk ukuran Jendela yang lebih besar dari 1080p. Aplikasi yang menargetkan versi Android sebelumnya tidak akan menerima Jendela yang lebih besar dari 1080p, sehingga Jendelanya diperkecil ke 1080p jika perlu.

DROP_CLOSE_SYSTEM_DIALOGS

ID Perubahan: 174664120
Status Default: Diaktifkan untuk semua aplikasi.

Untuk meningkatkan kontrol pengguna saat berinteraksi dengan aplikasi dan sistem, tindakan intent ACTION_CLOSE_SYSTEM_DIALOGS tidak digunakan lagi di Android 12.

Untuk mempelajari perubahan ini lebih lanjut, lihat Aplikasi tidak dapat menutup dialog sistem.

ENABLE_CHECKS_FOR_PRIVATE_FILES

ID Perubahan: 172100307
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi tidak dapat menyisipkan atau memperbarui file pribadi menggunakan penyedia media.

ENABLE_DEFERRED_SCAN

ID Perubahan: 180326732
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Mengaktifkan opsi ini untuk menunda pemindaian yang dipicu sebagai bagian dari MediaProvider#update().

ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION

ID Perubahan: 157233955
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, mengaktifkan perlindungan READ_PHONE_STATE pada API yang membuat kueri dan memberi tahu status panggilan, seperti TelecomManager#getCallState, TelephonyManager.getCallStateForSubscription(), dan TelephonyCallback.CallStateListener.

ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION

ID Perubahan: 183407956
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, mengaktifkan perlindungan READ_PHONE_NUMBERS atau READ_PRIVILEGED_PHONE_STATE di getPhoneAccount(PhoneAccountHandle).

ENABLE_INCLUDE_ALL_VOLUMES

ID Perubahan: 182734110
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Mengaktifkan opsi ini untuk menyertakan baris database file dari volume yang baru dilepaskan di MediaProvider#query.

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

ID Perubahan: 178209446
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Mengaktifkan opsi ini untuk mengizinkan aplikasi yang memiliki izin Manifest.permission.MANAGE_EXTERNAL_STORAGE guna meminta akses penyimpanan eksternal mentah.

ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS

ID Perubahan: 185199076
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, semua alarm yang tidak tepat harus memiliki ukuran jendela minimum, yang diharapkan sesuai urutan beberapa menit. Pada praktiknya, alarm apa pun yang memerlukan jendela lebih kecil sama dengan alarm yang tepat dan harus menggunakan API yang sesuai yang disediakan, seperti setExact(int, long, PendingIntent). Alarm tidak tepat dengan jendela yang lebih singkat yang ditetapkan akan membuat jendelanya diperpanjang oleh sistem.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

ID Perubahan: 142191088
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi harus menyatakan dependensi ke pustaka bersama native publik yang ditentukan oleh pembuat perangkat menggunakan tag uses-native-library di AndroidManifest.xml. Jika salah satu dependensi tidak dapat terpenuhi, misalnya salah satu dependensi tidak ada, pengelola paket tidak akan bisa menginstal aplikasi. Dependensi dapat ditentukan sebagai dependensi opsional menggunakan atribut android:required dalam tanda, dan kegagalan memenuhi dependensi tidak akan menghentikan penginstalan.

Setelah diinstal, aplikasi disediakan hanya dengan pustaka bersama native yang ditentukan dalam manifes aplikasi. Pemanggilan dlopen di library bersama native yang tidak muncul di manifes aplikasi akan gagal meskipun sebenarnya kode ada di perangkat.

ENFORCE_STRICT_QUERY_BUILDER

ID Perubahan: 143231523
Status Default: Dinonaktifkan untuk semua aplikasi.

Saat diaktifkan, SQLiteQueryBuilder akan memverifikasi semua pilihan kueri CalendarProvider2 terhadap argumen berbahaya.

FGS_BG_START_RESTRICTION_CHANGE_ID

ID Perubahan: 170668199
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan lebih tinggi, membatasi kapan aplikasi dapat memulai layanan latar depan saat berjalan di latar belakang.

FGS_START_EXCEPTION_CHANGE_ID

ID Perubahan: 174041399
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, memungkinkan sistem memunculkan IllegalStateException jika aplikasi mencoba memulai layanan latar depan saat berjalan di latar belakang.

FINISH_INPUT_NO_FALLBACK_CONNECTION

ID Perubahan: 156215187
Status Default: Dinonaktifkan untuk semua aplikasi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, selesaikan InputConnection saat perangkat menjadi non-interactive.

Jika diaktifkan oleh input method saat ini, koneksi input saat ini akan menjadi finished setiap kali perangkat menjadi non-interaktif.

Jika tidak diaktifkan, sambungan input saat ini akan dinonaktifkan secara otomatis saat perangkat menjadi tidak interaktif, dan pasangan onFinishInput() dan onStartInput() akan dikirimkan saat perangkat menjadi interaktif kembali.

FORCE_DISABLE_HEVC_SUPPORT

ID Perubahan: 174227820
Status Default: Dinonaktifkan untuk semua aplikasi.

Menonaktifkan aplikasi secara paksa agar tidak mendukung kemampuan media HEVC. Aplikasi harus menyatakan kemampuan media yang didukung dalam manifesnya, tetapi tanda ini dapat digunakan untuk memaksa aplikasi agar tidak mendukung HEVC sehingga memaksa transcoding saat mengakses media yang dienkode di HEVC. Menyetel tanda ini akan mengganti default tingkat OS untuk aplikasi. Fitur ini dinonaktifkan secara default, yang berarti setelan default OS lebih diutamakan. Jika tanda ini dan FORCE_ENABLE_HEVC_SUPPORT diaktifkan, OS akan mengabaikan kedua tanda.

FORCE_ENABLE_HEVC_SUPPORT

ID Perubahan: 174228127
Status Default: Dinonaktifkan untuk semua aplikasi.

Mengaktifkan aplikasi secara paksa untuk mendukung kemampuan media HEVC. Aplikasi harus menyatakan kemampuan media yang didukung dalam manifesnya, tetapi tanda ini dapat digunakan untuk memaksa aplikasi agar mendukung HEVC sehingga menghindari transcoding saat mengakses media yang dienkode di HEVC. Menyetel tanda ini akan mengganti default tingkat OS untuk aplikasi. Opsi ini dinonaktifkan secara default, yang berarti default OS akan lebih diutamakan. Jika flag ini dan FORCE_DISABLE_HEVC_SUPPORT diaktifkan, OS akan mengabaikan kedua flag tersebut.

FORCE_NON_RESIZE_APP

ID Perubahan: 181136395
Status Default: Dinonaktifkan untuk semua aplikasi.

Memaksa paket yang diterapkan agar ukurannya tidak dapat diubah.

FORCE_RESIZE_APP

ID Perubahan: 174042936
Status Default: Dinonaktifkan untuk semua aplikasi.

Memaksa paket yang diterapkan agar ukurannya dapat diubah. Pengubahan ukuran hanya diizinkan dalam mode jendela layar penuh, tetapi tidak memaksa aplikasi masuk ke mode multi-aplikasi yang dapat diubah ukurannya.

HIDE_PROP_ICUBINARY_DATA_PATH

ID Perubahan: 171979766
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, menghapus akses ke properti android.icu.impl.ICUBinary.dataPath.

IGNORE_ALLOW_BACKUP_IN_D2D

ID Perubahan: 183147249
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, android:allowBackup diabaikan untuk aplikasi selama migrasi perangkat ke perangkat (D2D).

IGNORE_FULL_BACKUP_CONTENT_IN_D2D

ID Perubahan: 180523564
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, aturan sertakan dan kecualikan yang ditentukan menggunakan android:fullBackupContent akan diabaikan selama transfer perangkat ke perangkat (D2D).

IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY

ID Perubahan: 169273070
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, getSupportedLocales() kini menampilkan daftar lokalitas kosong jika tidak disetel, bukan lokalitas sistem default.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

ID Perubahan: 158482162
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, izin BACKUP yang diperlukan untuk isBackupServiceActive() diberlakukan di sisi layanan, bukan di sisi klien dalam BackupManager.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

ID Perubahan: 169897160
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika diaktifkan, pembuatan operasi keystore mungkin akan gagal sesuai dengan strategi pemangkasan baru. Sebelumnya, keystore biasanya bekerja dengan asumsi bahwa pembuatan operasi kriptografi selalu berhasil. Namun, backend KeyMint hanya memiliki sejumlah slot operasi yang terbatas.

Untuk mempertahankan tampilan slot operasi "tak terbatas", daemon Keystore akan memangkas operasi yang paling jarang digunakan jika tidak ada slot operasi yang tersedia. Akibatnya, operasi yang baik dapat dihentikan sebelum waktunya. Tindakan ini membuka AndroidKeystore pada denial-of-service (DoS) dan livelock yang tidak diinginkan. Misalnya, jika beberapa aplikasi aktif bersamaan karena pengoptimalan pengelolaan daya dan mencoba melakukan operasi kripto, aplikasi tersebut akan mulai menghentikan operasi lain tanpa ada kemajuan apa pun.

Untuk keluar dari livelock dan mencegah upaya DoS, kami telah mengubah strategi pemangkasan sehingga lebih memilih klien yang menggunakan sedikit slot operasi secara singkat. Akibatnya, operasi tunggal yang tidak aktif selama lebih dari 5 detik hampir selalu akan berakhir tanpa hambatan oleh strategi pemangkasan. Masih ada beberapa operasi terkait enkripsi sistem file yang bahkan dapat memangkas operasi ini, tetapi kasus tersebut sangat jarang terjadi. Sebagai efek samping operasi strategi pemangkasan baru ini, kini pembuatan bisa gagal jika klien memiliki daya pemangkasan yang lebih rendah daripada semua operasi yang sudah ada.

Strategi pemangkasan: Untuk menemukan kandidat yang sesuai, kami menghitung malus untuk pemanggil dan setiap operasi yang ada. Malus adalah kebalikan dari pruning power (pemanggil) atau pruning resistance (operasi yang ada). Agar dapat memangkas operasi, pemanggil harus menemukan operasi dengan malus yang lebih tinggi dari miliknya sendiri. Untuk detail strategi pemangkasan selengkapnya, lihat penerapan operation.rs. Di Android 11 (level API 30) dan yang lebih rendah, KeyStore2 akan melakukan polling pada daemon Keystore untuk slot operasi gratis. Untuk aplikasi yang menargetkan Android 11 (API level 30) dan yang lebih rendah, inisialisasi objek cipher dan tanda tangan akan selalu berhasil. Namun, mungkin perlu waktu lebih lama untuk mendapatkan operasi. Semua versi Android mendapatkan manfaat dari penjadwalan slot operasi yang lebih adil dan peluang yang lebih baik agar berhasil menyelesaikan operasi.

LOCK_DOWN_CLOSE_SYSTEM_DIALOGS

ID Perubahan: 174664365
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, Intent.ACTION_CLOSE_SYSTEM_DIALOGS tidak dapat dikirim kecuali jika aplikasi juga memiliki izin android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS. Perhatikan bahwa ini adalah versi #DROP_CLOSE_SYSTEM_DIALOGS yang lebih ketat yang mengharapkan aplikasi berhenti mengirimkan intent Intent.ACTION_CLOSE_SYSTEM_DIALOGS setelah aplikasi mulai menargetkan Android 12 (API level 31) atau yang lebih tinggi.

LOCK_DOWN_COLLAPSE_STATUS_BAR

ID Perubahan: 173031413
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, izin Manifest.permission.STATUS_BAR diperlukan untuk menciutkan panel status bar karena alasan keamanan. Hal ini dieksploitasi oleh malware untuk mencegah pengguna mengakses notifikasi penting.

LOW_POWER_EXCEPTIONS

ID Perubahan: 168936375
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, semua objek LocationRequest yang ditandai sebagai objek berdaya rendah akan memberikan pengecualian jika pemanggil tidak memiliki izin LOCATION_HARDWARE, bukan menurunkan secara otomatis bagian permintaan berdaya rendah.

MISSING_EXPORTED_FLAG

ID Perubahan: 150232615
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, nilai eksplisit harus ditentukan untuk atribut android:exported setiap kali filter intent ditentukan.

Untuk mempelajari lebih lanjut perubahan ini, lihat Mengekspor komponen dengan lebih aman.

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

ID Perubahan: 207557677
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 32) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 32) dan yang lebih tinggi, alokasi heap native dalam proses AppZygote dan turunannya menggunakan tag bukan nol pada byte yang paling signifikan.

Untuk mempelajari perubahan ini lebih lanjut, lihat Pointer yang Diberi Tag.

NATIVE_HEAP_ZERO_INIT

ID Perubahan: 178038272
Status Default: Dinonaktifkan untuk semua aplikasi.

Mengaktifkan zero-inisialisasi otomatis untuk alokasi memori heap native.

NATIVE_MEMTAG_ASYNC

ID Perubahan: 135772972
Status Default: Dinonaktifkan untuk semua aplikasi.

Mengaktifkan pemeriksaan tag memori asinkron (ASYNC) dalam proses ini. Tanda ini hanya memengaruhi hardware yang mendukung Ekstensi Pemberian Tag Memori (MTE) ARM.

NATIVE_MEMTAG_SYNC

ID Perubahan: 177438394
Status Default: Dinonaktifkan untuk semua aplikasi.

Mengaktifkan pemeriksaan tag memori sinkron (SINKRONISASI) dalam proses ini. Tanda ini hanya memengaruhi hardware yang mendukung Ekstensi Pemberian Tag Memori (MTE) ARM. Jika NATIVE_MEMTAG_ASYNC dan opsi ini diaktifkan, opsi ini akan diutamakan dan MTE akan diaktifkan dalam mode SINKRONISASI.

NEVER_SANDBOX_DISPLAY_APIS

ID Perubahan: 184838306
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika diaktifkan, mencegah sandbox Display API diterapkan ke tampilan lebar atau aktivitas SCM. Display API akan terus menyediakan batas DisplayArea.

Untuk mempelajari perubahan ini lebih lanjut, lihat bagian halaman perubahan perilaku Android 12 tentang Metode tampilan yang tidak digunakan lagi.

NOTIFICATION_CANCELLATION_REASONS

ID Perubahan: 175319604
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Mengizinkan pemroses notifikasi untuk memahami alasan pembatalan baru yang lebih spesifik.

NOTIFICATION_TRAMPOLINE_BLOCK

ID Perubahan: 167676448
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk meningkatkan performa aplikasi dan UX, aplikasi yang menargetkan Android 12 tidak dapat menggunakan layanan atau penerima siaran sebagai trampoline notifikasi.

Untuk mempelajari perubahan ini lebih lanjut, lihat Trampoline notifikasi tidak dapat dibuat dari layanan atau penerima siaran.

NULL_TELEPHONY_THROW_NO_CB

ID Perubahan: 182185642
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Digunakan untuk memeriksa apakah versi SDK target untuk proses saat ini adalah Android 12 (API level 31) atau yang lebih tinggi.

Berlaku untuk metode berikut:

OVERRIDE_MIN_ASPECT_RATIO

ID Perubahan: 174042980
Status Default: Dinonaktifkan untuk semua aplikasi.

Perubahan ini adalah penyeleksi semua perubahan yang memaksa rasio lebar tinggi minimum tertentu. Mengaktifkan perubahan ini memungkinkan rasio lebar tinggi minimum berikut diterapkan:

Jika perubahan ini diaktifkan untuk paket aplikasi, rasio aspek minimum yang diberikan dalam manifes aplikasi akan diganti ke rasio aspek terbesar yang diaktifkan kecuali nilai manifes aplikasi lebih tinggi.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

ID Perubahan: 180326787
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika OVERRIDE_MIN_ASPECT_RATIO juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan menetapkan rasio aspek minimum aktivitas ke nilai besar seperti yang ditetapkan oleh OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

ID Perubahan: 180326845
Status Default: Dinonaktifkan untuk semua aplikasi.

Jika OVERRIDE_MIN_ASPECT_RATIO juga diaktifkan, mengaktifkan perubahan ini untuk sebuah paket akan menetapkan rasio lebar tinggi minimum aktivitas ke nilai sedang seperti yang ditetapkan oleh OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE.

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

ID Perubahan: 160794467
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, Anda harus menentukan mutabilitas setiap objek PendingIntent yang dibuat oleh aplikasi Anda. Persyaratan tambahan ini meningkatkan keamanan aplikasi Anda.

Untuk mempelajari perubahan ini lebih lanjut, lihat Intent tertunda harus menyebutkan mutasi.

PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT

ID Perubahan: 165573442
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Aplikasi admin yang menargetkan Android 12 (API level 31) dan yang lebih tinggi tidak dapat menggunakan DevicePolicyManager.setPasswordQuality(ComponentName, int) untuk menetapkan kualitas sandi pada instance DevicePolicyManager yang diperoleh dengan memanggil DevicePolicyManager.getParentProfileInstance(ComponentName). Sebagai gantinya, mereka harus menggunakan DevicePolicyManager.setRequiredPasswordComplexity(int) untuk menetapkan persyaratan sandi samar di seluruh perangkat.

RATE_LIMIT_TOASTS

ID Perubahan: 174840628
Status Default: Perubahan ini tidak dapat dialihkan. Perubahan hanya dicatat ke dalam log oleh framework kompatibilitas.

Mengaktifkan pembatasan kapasitas jumlah panggilan Toast.show() untuk mencegah beban berlebih pada pengguna yang memiliki jumlah toast yang terlalu banyak dalam waktu terbatas. Setiap upaya untuk menampilkan jumlah toast yang terlalu banyak dari jumlah yang diizinkan dalam jangka waktu tertentu akan mengakibatkan toast dihapus.

REQUIRE_EXACT_ALARM_PERMISSION

ID Perubahan: 171306433
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, aplikasi harus memiliki izin Manifest.permission.SCHEDULE_EXACT_ALARM agar dapat menggunakan API apa pun untuk menyetel alarm yang tepat, seperti setExactAndAllowWhileIdle(int, long, PendingIntent) dan setAlarmClock(AlarmClockInfo, PendingIntent).

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

ID Perubahan: 182478738
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, aplikasi harus memiliki izin Manifest.permission.READ_PHONE_STATE agar dapat memanggil TelephonyCallback.ActiveDataSubscriptionIdListener.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO

ID Perubahan: 184323934
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, aplikasi harus memiliki izin Manifest.permission.READ_PHONE_STATE agar dapat memanggil TelephonyCallback.CellInfoListener.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO

ID Perubahan: 183164979
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, aplikasi harus memiliki izin Manifest.permission.READ_PHONE_STATE agar dapat memanggil TelephonyCallback.DisplayInfoListener.

RESTRICT_ADB_BACKUP

ID Perubahan: 171032338
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, adb backup otomatis diaktifkan untuk aplikasi yang berjalan sebagai dapat di-debug (android:debuggable disetel ke true) dan tidak tersedia untuk aplikasi lain.

RESTRICT_DOMAINS

ID Perubahan: 175408749
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, diperlukan formulir API verifikasi link aplikasi yang telah diupdate. Persyaratan ini berarti aplikasi harus mendeklarasikan domain di dalam filter intent yang menyertakan semua hal berikut:

  • android:autoVerify="true"
  • Intent.ACTION_VIEW
  • Intent.CATEGORY_BROWSABLE
  • Intet.CATEGORY_DEFAULT
  • Hanya IntentFilter.SCHEME_HTTP dan/atau IntentFilter.SCHEME_HTTPS, tanpa skema lain

Pada versi Android sebelumnya, Intent.CATEGORY_BROWSABLE bukan merupakan persyaratan, skema lainnya diizinkan, dan setelan autoVerify sampai true dalam filter intent apa pun akan secara implisit berpura-pura bahwa semua filter intent telah disetel ke autoVerify="true".

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

ID Perubahan: 151105954
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, menerapkan bahwa semua attributionTags yang dikirim ke noteOp(String, int, String), noteProxyOp(String, String), dan startOp(String, int, String) ditentukan dalam manifes paket yang ditetapkan sebagai parameter metode.

Untuk mengaktifkan perubahan ini, panggilan paket noteOp(String, int, String) serta paket yang ditentukan sebagai parameter metode harus mengaktifkan perubahan ini.

SELINUX_LATEST_CHANGES

ID Perubahan: 143539591
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih baru, ikut serta untuk memilih perubahan SELinux terbaru. Sulit untuk menonaktifkan perubahan ini untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi. Tidak memiliki efek untuk aplikasi yang menggunakan ID pengguna bersama.

SETTINGS_API_V2

ID Perubahan: 178111421
Status Default: Diaktifkan untuk semua aplikasi.

API preferensi pengguna baru untuk memverifikasi domain yang ditandai autoVerify=true di filter intent AndroidManifest.xml belum diterapkan di pratinjau platform saat ini. Untuk saat ini, Anda dapat melihat pratinjau perubahan preferensi pengguna baru dengan mengaktifkan ChangeId ini dan menggunakan adb shell pm set-app-links-user-selection serta perintah serupa.

USE_SHORT_FGS_USAGE_INTERACTION_TIME

ID Perubahan: 183972877
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 (API level 31) atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 (API level 31) dan yang lebih tinggi, tentukan apakah akan menggunakan waktu tunggu yang lebih singkat sebelum meningkatkan bucket standby ke ACTIVE saat aplikasi memulai layanan latar depan.