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. Gunakan daftar ini bersama 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 fitur 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 Anda 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 Fitur framework kompatibilitas.

Perubahan perilaku yang disertakan dalam framework kompatibilitas

Daftar di bagian ini menjelaskan setiap perubahan perilaku yang disertakan dalam framework kompatibilitas pada build pratinjau developer Android 12 terbaru.

Anda dapat memfilter daftar perubahan menurut Status Default.

Perubahan perilaku ditambahkan ke framework kompatibilitas di Android 12

ALLOW_TEST_API_ACCESS

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

Mengizinkan aplikasi mengakses @TestApi API.

Catatan: Perubahan ini dinonaktifkan secara default dan hanya dapat digunakan oleh kode pengujian platform.

ALWAYS_SANDBOX_DISPLAY_APIS

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

Memaksa paket yang diterapkan untuk selalu menerapkan sandbox Display API, terlepas dari mode windowing. Display API akan selalu menyediakan batas aplikasi.

Untuk mempelajari perubahan ini lebih lanjut, lihat Display#getRealSize dan getRealMetrics: penghentian penggunaan dan sandbox.

BLOCK_FLAG_SLIPPERY

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

Untuk aplikasi yang berjalan di Android 12, 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 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 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 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, objek PendingIntent yang tidak dapat diubah dan 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 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, LocationRequest sistem API 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 sentuhan tidak tepercaya diblokir.

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.

CHANGE_ID_AUTH_STATE_DENIED

ID Perubahan: 181350407
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Untuk aplikasi klien yang menargetkan Android 12 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 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 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 atau yang lebih tinggi.

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

DOWNSCALED

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

Perubahan ini adalah penyeleksi semua perubahan penurunan skala buffering per aplikasi. Menonaktifkan perubahan ini akan mencegah faktor penskalaan berikut berfungsi:

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

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 resolusi vertikal dan horizontal 50% dari 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 resolusi vertikal dan horizontal 60% dari 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 resolusi vertikal dan horizontal 70% dari 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 resolusi vertikal dan horizontal 80% dari 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 resolusi vertikal dan horizontal 90% dari tampilan sebenarnya.

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 atau yang lebih tinggi.

Aplikasi yang menargetkan Android 12 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 atau yang lebih tinggi.

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

ENABLE_INCLUDE_ALL_VOLUMES

ID Perubahan: 182734110
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 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 atau yang lebih tinggi.

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

ID Perubahan: 183372781
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 11 (API level 30) atau yang lebih tinggi.

Mengaktifkan opsi ini untuk mengizinkan aplikasi yang memiliki peran android.app.role#SYSTEM_GALLERY guna meminta akses penyimpanan eksternal mentah.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

ID Perubahan: 142191088
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Aplikasi yang menargetkan Android 12 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: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, kini SQLiteQueryBuilder memverifikasi semua pilihan kueri CalendarProvider2 terhadap argumen berbahaya.

FGS_BG_START_USE_EXEMPTION_LIST_CHANGE_ID

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

Jika disetel ke false untuk sebuah paket, sistem tidak akan membebaskannya dari FGS-BG-start, meskipun paket tersebut berada di ActiveServices.sFgsBgStartExemptedPackages.

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 menyebutkan 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 setiap setelan default aplikasi tingkat OS. Fitur ini dinonaktifkan secara default yang artinya setelan default OS lebih diutamakan. Menetapkan tanda ini dan FORCE_ENABLE_HEVC_SUPPORT merupakan status yang tidak ditentukan dan akan menyebabkan OS 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 pada Aplikasi harus menyebutkan kemampuan media yang didukung dalam manifesnya, tetapi tanda ini dapat digunakan untuk memaksa aplikasi agar mendukung HEVC sehingga menghindari transcoding selagi mengakses media yang dienkode di HEVC. Menyetel tanda ini akan mengganti setiap setelan default aplikasi tingkat OS. Fitur ini dinonaktifkan secara default yang artinya setelan default OS akan lebih diutamakan. Menetapkan tanda ini dan FORCE_DISABLE_HEVC_SUPPORT merupakan status yang tidak ditentukan dan akan menyebabkan OS mengabaikan kedua tanda.

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 penuh layar, tetapi tidak memaksa aplikasi berubah menjadi mode multi-jendela yang dapat diubah ukurannya.

HIDE_PROP_ICUBINARY_DATA_PATH

ID Perubahan: 171979766
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, hapus akses ke properti android.icu.impl.ICUBinary.dataPath.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

ID Perubahan: 158482162
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 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: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, pembuatan operasi keystore saat ini bisa jadi gagal. Sebelumnya, keystore biasanya bekerja dengan asumsi bahwa pembuatan operasi kriptografi selalu berhasil. Namun, backend KeyMint hanya memiliki jumlah slot operasi yang terbatas.

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

Untuk mengurangi livelock dan mencegah upaya DoS, strategi pemangkasan telah diubah sehingga lebih memilih klien yang hanya menggunakan sedikit slot operasi. Hasilnya, operasi tunggal yang tidak aktif selama lebih dari 5 detik hampir akan selalu diselesaikan oleh strategi pemangkasan. Masih ada beberapa operasi yang berkaitan dengan enkripsi sistem file yang bahkan dapat memangkas operasi ini, tetapi kasus tersebut sangat jarang terjadi. Efek samping dari operasi strategi pemangkasan baru ini yaitu pembuatan bisa gagal jika klien memiliki daya pemangkasan yang lebih rendah daripada semua operasi yang ada.

Strategi pemangkasan: Untuk menemukan kandidat yang sesuai, kami menghitung malus untuk pemanggil dan setiap operasi yang ada. Malus adalah balikan dari daya pemangkasan (pemanggil) atau hambatan pemangkasan (operasi yang ada). Agar pemanggil dapat memangkas operasi, operator harus menemukan operasi dengan malus yang lebih tinggi dari operasinya sendiri. Untuk mengetahui detail strategi pemangkasan selengkapnya, lihat penerapan operation.rs. Di Android 11 (API level 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 ciphet dan objek tanda tangan akan selalu terlihat berhasil, tetapi mungkin butuh 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.

LOW_POWER_EXCEPTIONS

ID Perubahan: 168936375
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, semua objek LocationRequest yang ditandai sebagai objek berdaya rendah akan memberikan pengecualian jika pemanggil tidak memiliki izin LOCATION_HARDWARE, dan tidak akan menurunkan bagian daya rendah dari permintaan tersebut secara diam-diam.

MISSING_EXPORTED_FLAG

ID Perubahan: 150232615
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

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

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

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.

Memaksa paket yang diterapkan agar tidak pernah menerapkan sandbox Display API bagi tampilan lebar atau aktivitas SCM. Display API akan terus menyediakan batas DisplayArea.

Untuk mempelajari perubahan ini lebih lanjut, lihat Display#getRealSize dan getRealMetrics: penghentian penggunaan dan sandbox.

NOTIFICATION_CANCELLATION_REASONS

ID Perubahan: 175319604
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 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 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 atau yang lebih tinggi.

Digunakan untuk memeriksa apakah versi SDK target untuk proses saat ini adalah Android 12 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 lebar tinggi minimum yang diberikan dalam manifes aplikasi akan diganti ke rasio lebar tinggi 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 lebar tinggi 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 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 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.

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: Dinonaktifkan untuk semua aplikasi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, aplikasi harus memiliki izin Manifest.permission.SCHEDULE_EXACT_ALARM baru agar dapat menggunakan setExactAndAllowWhileIdle(int, long, PendingIntent) dan setAlarmClock(AlarmClockInfo, PendingIntent).

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

ID Perubahan: 151105954
Status Default: Diaktifkan untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, memberlakukan bahwa semua attributionTags yang dikirim ke noteOp(String, int, String), noteProxyOp(String, String), dan startOp(String, int, String) ditentukan dalam manifes paket yang ditentukan 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 atau yang lebih tinggi.

Untuk aplikasi yang menargetkan Android 12 dan yang lebih tinggi, pilih perubahan SELinux terbaru. Sulit untuk menonaktifkan perubahan ini untuk aplikasi yang menargetkan Android 12 atau yang lebih tinggi. Tidak memiliki efek untuk aplikasi yang menggunakan ID pengguna bersama.

SELINUX_R_CHANGES

ID Perubahan: 168782947
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.

SETTINGS_API_V2

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

API preferensi pengguna baru untuk memverifikasi domain yang ditandai android: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 perubahan ini menggunakan adb shell pm set-app-links-user-selection dan perintah serupa.

THROW_EXCEPTION_ON_REQUIRE_INSTALL_PACKAGES_TO_ADD_INSTALLER_PACKAGE

ID Perubahan: 150857253
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) dan yang lebih tinggi, menambahkan nama paket penginstal ke paket yang belum memiliki satu set sekarang memerlukan izin INSTALL_PACKAGES. Jika penelepon menargetkan Android 11 (API level 30), SecurityException akan ditampilkan. Jika tidak, permintaan diam-diam akan gagal. Di kedua kasus ini, dan terlepas dari apakah perubahan ini diaktifkan atau tidak, paket penginstal tetap tidak berubah.