ماژول 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 مجوزها (رنگ ها، حاشیه ها، فونت ها و طرح های ترسیمی) را سفارشی کنند.