PermissionController

PermissionController Mainline modülü, gizlilik ilkelerini ve izinlerin verilmesi ve yönetilmesiyle ilgili kullanıcı arayüzünü (örneğin, izinlerin verilmesi ve yönetilmesine ilişkin politikalar ve kullanıcı arayüzü) içerir.

PermissionController Hakkında

PermissionController modülü, belirli amaçlara yönelik uygulamalara erişime izin vermek için izinle ilgili kullanıcı arayüzünü, mantığı ve rolleri yönetir. Aşağıdakileri kontrol eder:

  • Çalışma zamanı izni verme (sistem uygulamalarına izin verme dahil)
  • Çalışma zamanı izin yönetimi (izinlerin gruplandırılması dahil)
  • Çalışma zamanı izin kullanımı takibi
  • Roller

Android 12'den başlayarak Role çerçevesi ve sistem sunucusu sınıfları, Role tamamen modüler hale getirmek için modüle taşınmıştır.

Android 10'da Paket Yükleyici uygulaması, izin mantığının güncellenmesini sağlamak için bölümlere ayrılmıştır. Güncellenebilir bir Ana Hat modülü olarak PermissionController:

  • Çerçeveyle yalnızca kararlı @SystemApi aracılığıyla etkileşime girer (@hide API kullanımı yoktur).
  • İzinle ilgili amaçları öncelik > 0 ile işler.
  • OEM'lerin temayı özelleştirmesine olanak tanıyan bir mekanizmayı ortaya çıkarır.
  • Rol yönetimi, izin iptali ve temel izin bilgileri (Ayarlar için) dahil olmak üzere sistem ve uygulamaların bağlanabileceği hizmetler sağlar.
  • Kullanılmayan uygulamalar için otomatik iptali destekler (Android 11'de yeni).

Android9'da izin kontrolü com.android.packageinstaller bir parçasıdır.

Kullanılmayan uygulamalar için otomatik iptal

Android 11'de PermissionsController modülü, uzun süredir kullanılmayan uygulamaların çalışma zamanı izinlerini otomatik olarak iptal edebilir. SDK 30 veya daha üstünü hedefleyen uygulamalarda otomatik iptal varsayılan olarak etkindir ; SDK 29 veya daha düşükünü hedefleyen uygulamalarda ise otomatik iptal varsayılan olarak devre dışıdır . Etkinleştirildiğinde, otomatik iptal tüm çalışma zamanı izinlerini etkiler ancak politika ve sistem tarafından sabitlenen izinler ve varsayılan olarak veya rol tarafından verilen izinler dahil olmak üzere önceden verilen tüm izinleri muaf tutar. Ayrıntılar için Kullanılmayan uygulamalara ilişkin izinlerin otomatik sıfırlanması konusuna bakın.

Paket formatı

PermissionController modülünün formatı sürümler arasında farklılık gösterir.

  • Android 11 veya üzeri sürümlerde PermissionController modülü APEX formatındadır ve güncellenebilir. Paket adı com.google.android.permission .

  • Android 10'da PermissionController modülü APK biçimindedir ve güncellenemez. Paket adı com.google.android.permissioncontroller .

Modül sınırı

Android 12'de İzin modülü kodu, packages/apps/PermissionController ( platform/packages/apps/PackageInstaller projesi) ve frameworks/base/apex/permission (bu, frameworks/base projesinin bir alt dizini) konumundan taşınır.

packages/modules/Permission için yeni proje yapısı aşağıdaki gibidir:

  • frameworks/base/apex/permission dosyalar
  • packages/apps/PermissionController PermissionController dosyaları

OEM'ler yamalarını orijinal proje dizinlerinden yeni proje dizinine taşımaya yardımcı olmak için örnek komutları kullanabilir.

Bir yamayı frameworks/base/apex/permission'dan taşıma

root/frameworks/base/$ git format-patch -1 --relative=apex/permission commit --stdout > patch-file.txt

root/packages/modules/Permission$ git am -p2 patch-file.txt

Paketlerden/uygulamalardan/PermissionController'dan bir yamayı taşıma

root/packages/apps/PermissionController$ git format-patch -1 commit --stdout > patch-file.txt

root/packages/modules/Permission$ git am -p2 --directory=PermissionController patch-file.txt

Özelleştirme

OEM'ler, çalışma zamanı kaynak katmanlarını (RROS) kullanarak izin kullanıcı arayüzü temasını (renkler, kenar boşlukları, yazı tipleri ve çizilebilir öğeler) özelleştirebilir.