PermissionController

ماژول PermissionController Mainline شامل خط‌مشی‌های حفظ حریم خصوصی و رابط کاربری مربوط به اعطای و مدیریت مجوزها است (به عنوان مثال، خط‌مشی‌ها و رابط کاربری برای اعطای و مدیریت مجوزها).

درباره PermissionController

ماژول PermissionController رابط کاربری، منطق و نقش‌های مرتبط با مجوز را کنترل می‌کند تا امکان دسترسی به برنامه‌ها برای اهداف خاص را فراهم کند. موارد زیر را کنترل می کند:

  • اعطای مجوز زمان اجرا (از جمله اعطای مجوز به برنامه های سیستم)
  • مدیریت مجوز زمان اجرا (از جمله گروه بندی مجوزها)
  • ردیابی استفاده از مجوز زمان اجرا
  • نقش ها

با شروع اندروید 12، کلاس‌های فریمورک و سرور سیستم برای Role به ماژول منتقل می‌شوند تا Role کاملاً ماژولار شود.

در اندروید 10، برنامه Package Installer به بخش‌هایی تقسیم می‌شود تا منطق مجوزها را به‌روزرسانی کند. به عنوان یک ماژول Mainline قابل به روز رسانی، PermissionController:

  • فقط از طریق @SystemApi (بدون استفاده از @hide API) با چارچوب تعامل دارد.
  • اهداف مرتبط با مجوز را با اولویت > 0 مدیریت می کند.
  • مکانیزمی را برای فعال کردن OEMها برای سفارشی کردن موضوع نمایش می دهد.
  • خدماتی را ارائه می دهد که سیستم و برنامه ها می توانند به آنها متصل شوند، از جمله مدیریت نقش، لغو مجوز، و اطلاعات مجوز اولیه (برای تنظیمات).
  • پشتیبانی از لغو خودکار برای برنامه های استفاده نشده (جدید در اندروید 11).

در Android9، کنترل مجوز بخشی از com.android.packageinstaller است.

لغو خودکار برای برنامه های استفاده نشده

در اندروید 11، ماژول PermissionsController می تواند به طور خودکار مجوزهای زمان اجرا را برای برنامه هایی که برای مدت زمان طولانی استفاده نشده اند لغو کند. برنامه‌هایی که SDK 30 یا بالاتر را هدف قرار می‌دهند، به طور پیش‌فرض لغو خودکار فعال هستند، در حالی که برنامه‌هایی که SDK 29 یا پایین‌تر را هدف قرار می‌دهند، به طور پیش‌فرض لغو خودکار غیرفعال می‌شوند. هنگامی که فعال باشد، لغو خودکار بر تمام مجوزهای زمان اجرا تأثیر می گذارد، اما همه مجوزهای از قبل اعطا شده، از جمله مجوزهای ثابت شده توسط خط مشی و سیستم و مجوزهایی که به طور پیش فرض یا با نقش اعطا شده اند، معاف می شود. برای جزئیات، به بازنشانی خودکار مجوزهای برنامه‌های استفاده نشده مراجعه کنید.

قالب بسته

قالب ماژول PermissionController بین نسخه ها متفاوت است.

  • در اندروید 11 یا بالاتر، ماژول PermissionController با فرمت APEX است و قابل به روز رسانی است. نام بسته com.google.android.permission است.

  • در اندروید 10، ماژول PermissionController با فرمت APK است و قابل به روز رسانی نیست. نام بسته com.google.android.permissioncontroller است.

مرز ماژول

در اندروید 12، کد ماژول مجوز از packages/apps/PermissionController (پروژه platform/packages/apps/PackageInstaller ) و frameworks/base/apex/permission منتقل می‌شود (این زیر شاخه‌ای از پروژه‌های frameworks/base است).

ساختار پروژه جدید برای packages/modules/Permission به شرح زیر است:

  • فایل ها از frameworks/base/apex/permission
  • فایل های PermissionController از packages/apps/PermissionController

OEM ها می توانند از دستورات نمونه برای کمک به انتقال وصله های خود از دایرکتوری های پروژه اصلی به دایرکتوری پروژه جدید استفاده کنند.

یک پچ را از فریمورک/پایه/آپکس/مجوز منتقل کنید

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

یک وصله را از بسته ها/برنامه ها/PermissionController منتقل کنید

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

سفارشی سازی

OEM ها می توانند با استفاده از همپوشانی منابع زمان اجرا (RROS) تم UI مجوزها (رنگ ها، حاشیه ها، فونت ها و طرح های ترسیمی) را سفارشی کنند.