Moduł PermissionController Mainline zawiera polityki prywatności oraz interfejs użytkownika związany z nadawaniem i zarządzaniem uprawnieniami (na przykład zasady i interfejs użytkownika dotyczący nadawania i zarządzania uprawnieniami).
Informacje o kontrolerze uprawnień
Moduł PermissionController obsługuje interfejs użytkownika, logikę i role związane z uprawnieniami, aby umożliwić dostęp aplikacjom w określonym celu. Kontroluje następujące elementy:
- Udzielanie uprawnień wykonawczych (w tym przyznawanie aplikacjom systemowym)
- Zarządzanie uprawnieniami w czasie wykonywania (w tym grupowanie uprawnień)
- Śledzenie wykorzystania uprawnień w czasie wykonywania
- Role
Począwszy od systemu Android 12, klasy serwerów frameworkowych i systemowych dla Role
zostały przeniesione do modułu, dzięki czemu Role
jest całkowicie modułowa.
W systemie Android 10 aplikacja Instalator pakietów jest podzielona na sekcje, aby umożliwić aktualizację logiki uprawnień. Jako aktualizowalny moduł Mainline PermissionController:
- Interakcja z frameworkiem odbywa się wyłącznie za pośrednictwem stabilnego @SystemApi (bez użycia API @hide).
- Obsługuje intencje związane z uprawnieniami z priorytetem > 0.
- Udostępnia mechanizm umożliwiający producentom OEM dostosowywanie motywów.
- Zapewnia usługi, z którymi można powiązać system i aplikacje, w tym zarządzanie rolami, cofanie uprawnień i podstawowe informacje o uprawnieniach (w przypadku Ustawień).
- Obsługuje automatyczne unieważnianie nieużywanych aplikacji (nowość w Androidzie 11).
W systemie Android9 kontrola uprawnień jest częścią com.android.packageinstaller
.
Automatyczne unieważnianie nieużywanych aplikacji
W systemie Android 11 moduł PermissionsController może automatycznie odbierać uprawnienia wykonawcze aplikacjom, które nie były używane przez dłuższy czas. W przypadku aplikacji przeznaczonych dla pakietu SDK 30 lub nowszego funkcja automatycznego unieważniania jest domyślnie włączona , natomiast w przypadku aplikacji przeznaczonych dla pakietu SDK 29 lub nowszego funkcja automatycznego unieważniania jest domyślnie wyłączona . Po włączeniu automatyczne unieważnianie wpływa na wszystkie uprawnienia środowiska wykonawczego, ale wyklucza wszystkie wstępnie przyznane uprawnienia, w tym uprawnienia ustalone przez zasady i system oraz uprawnienia przyznane domyślnie lub przez rolę. Aby uzyskać szczegółowe informacje, zobacz Automatyczne resetowanie uprawnień nieużywanych aplikacji .
Format pakietu
Format modułu PermissionController różni się w zależności od wersji.
W systemie Android 11 lub nowszym moduł PermissionController ma format APEX i można go aktualizować. Nazwa pakietu to
com.google.android.permission
.W systemie Android 10 moduł PermissionController ma format APK i nie można go aktualizować. Nazwa pakietu to
com.google.android.permissioncontroller
.
Granica modułu
W Androidzie 12 kod modułu Permission został przeniesiony z packages/apps/PermissionController
(projekt platform/packages/apps/PackageInstaller
) i frameworks/base/apex/permission
(jest to podkatalog frameworks/base
).
Nowa struktura projektu dla packages/modules/Permission
wygląda następująco:
- Pliki z
frameworks/base/apex/permission
- Pliki PermissionController z
packages/apps/PermissionController
Producenci OEM mogą skorzystać z przykładowych poleceń, aby pomóc w przenoszeniu poprawek z oryginalnych katalogów projektu do nowego katalogu projektu.
Przenieś łatkę z frameworks/base/apex/permission
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
Przenieś łatkę z pakietów/aplikacji/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
Dostosowywanie
Producenci OEM mogą dostosować motyw interfejsu użytkownika (kolory, marginesy, czcionki i elementy rysunkowe) przy użyciu nakładek zasobów środowiska wykonawczego (RROS) .