Aplikasi istimewa adalah aplikasi sistem yang berada di direktori priv-app pada
  partisi image sistem. Partisi yang digunakan untuk rilis Android adalah:
- Android 9 dan yang lebih tinggi: /system, /product, /vendor
- Android 8.1 dan yang lebih lama: /system
Sebelumnya, produsen perangkat memiliki sedikit kontrol atas izin tanda tangan | istimewa yang dapat diberikan kepada aplikasi istimewa. Mulai Android 8.0, produsen dapat memberikan izin istimewa secara eksplisit dalam file XML konfigurasi sistem di direktori /etc/permissions. Mulai Android 9, pengimplementasi dapat
  memberikan atau menolak semua izin istimewa secara eksplisit. Jika izin istimewa tidak diberikan,
  perangkat tidak akan melakukan booting.
File privapp-permissions.xml hanya dapat memberikan atau menolak
  izin untuk aplikasi istimewa di partisi yang sama. Misalnya, jika
  aplikasi di partisi /product meminta izin istimewa,
  permintaan hanya dapat diberikan atau ditolak oleh file privapp-permissions.xml
  di /product.
Menambahkan daftar yang diizinkan
  Daftar aplikasi yang diizinkan untuk menggunakan izin dapat dicantumkan dalam satu file XML atau dalam beberapa file XML yang berada di direktori /etc/permissions:
- /etc/permissions/privapp-permissions-OEM_NAME.xml
- /etc/permissions/privapp-permissions-DEVICE_NAME.xml
Tidak ada aturan ketat yang berlaku untuk cara konten diatur. Pengembang perangkat dapat
  menentukan struktur konten selama semua aplikasi dari /system/priv-app
  masuk dalam daftar yang diizinkan. Misalnya, Google telah mengembangkan satu daftar yang diizinkan untuk semua aplikasi dengan hak istimewa.
  Sebaiknya gunakan organisasi berikut:
- Izin untuk aplikasi yang sudah disertakan dalam hierarki
    Android Open Source Project (AOSP)
    dicantumkan di /etc/permissions/privapp-permissions-platform.xml.
- Untuk aplikasi lain, gunakan file dalam bentuk,
    /etc/permissions/privapp-permissions-DEVICE_NAME.xml.
Menyesuaikan daftar yang diizinkan
AOSP menyertakan implementasi daftar yang diizinkan yang dapat disesuaikan sesuai kebutuhan.
  Jika izin harus ditolak, edit XML untuk menggunakan tag deny-permission
  alih-alih tag permission. Contoh:
<!-- This XML file declares which signature|privileged permissions to grant to privileged apps that come with the platform --> <permissions> <privapp-permissions package="com.android.backupconfirm"> <permission name="android.permission.BACKUP"/> <permission name="android.permission.CRYPT_KEEPER"/> </privapp-permissions> <privapp-permissions package="com.android.cellbroadcastreceiver"> <!-- Don't allow the application to interact across users --> <deny-permission name="android.permission.INTERACT_ACROSS_USERS"/> <permission name="android.permission.MANAGE_USERS"/> <permission name="android.permission.MODIFY_PHONE_STATE"/> <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/> <permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/> </privapp-permissions> ...
Menemukan izin yang tidak ada
Untuk menemukan izin yang tidak ada saat memulai perangkat baru, aktifkan mode log transisi:
ro.control_privapp_permissions=log
Pelanggaran dilaporkan dalam file log. Izin yang tidak memiliki hak istimewa diberikan. Dengan melakukannya, perangkat akan tetap dalam status berfungsi sambil tetap memberikan daftar pelanggaran. Format pesan error adalah sebagai berikut:
PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions allowlist
Semua pelanggaran harus ditangani dengan menambahkan izin yang tidak ada ke daftar yang diizinkan yang sesuai. Perhatikan bahwa di:
- Android 9 dan yang lebih tinggi, pelanggaran izin hak istimewa mencegah perangkat dimulai. Sebagai gantinya, Anda harus mengizinkan atau menolak semua izin istimewa secara eksplisit.
- Android 8.0 dan yang lebih rendah, izin yang tidak ada tidak diberikan ke aplikasi yang terpengaruh meskipun
    berada di jalur priv-app.
Menerapkan daftar yang diizinkan
  Setelah membuat daftar yang diizinkan, aktifkan penerapan runtime dengan menyetel properti build
  ro.control_privapp_permissions=enforce.
  Pengizinan diperlukan hanya untuk izin yang dideklarasikan oleh aplikasi dengan
  package="android". Status properti ro.control_privapp_permissions
  harus mematuhi
  Bagian 9.1 Izin
  dalam Compatibility Definition Document (CDD).
  
  
