PermissionController Mainline 모듈에는 개인 정보 보호 정책과 권한 부여 및 관리와 관련된 UI(예: 권한 부여 및 관리를 위한 정책 및 UI)가 포함되어 있습니다.
PermissionController 정보
PermissionController 모듈은 권한 관련 UI, 로직 및 역할을 처리하여 특정 목적을 위한 앱에 대한 액세스를 허용합니다. 다음을 제어합니다.
- 런타임 권한 부여(시스템 앱에 대한 부여 포함)
- 런타임 권한 관리(권한 그룹화 포함)
- 런타임 권한 사용 추적
- 역할
Android 12부터 Role
Role
완전히 모듈화됩니다.
Android 10에서 패키지 설치 프로그램 앱은 권한 논리를 업데이트할 수 있도록 섹션으로 분할됩니다. 업데이트 가능한 Mainline 모듈인 PermissionController:
- 안정적인 @SystemApi를 통해서만 프레임워크와 상호 작용합니다(@hide API 사용 없음).
- 우선 순위가 0보다 큰 권한 관련 의도를 처리합니다.
- OEM이 테마를 사용자 지정할 수 있도록 하는 메커니즘을 노출합니다.
- 역할 관리, 권한 취소 및 기본 권한 정보(설정용)를 포함하여 시스템 및 애플리케이션이 바인딩할 수 있는 서비스를 제공합니다.
- 사용하지 않는 앱에 대한 자동 취소를 지원합니다(Android 11의 새로운 기능).
Android9에서 권한 제어는 com.android.packageinstaller
의 일부입니다.
사용하지 않는 앱 자동 취소
Android 11에서 PermissionsController 모듈은 장기간 사용되지 않은 앱에 대한 런타임 권한을 자동으로 취소할 수 있습니다. SDK 30 이상을 대상으로 하는 앱은 기본적으로 자동 취소가 활성화 되어 있고 SDK 29 이하를 대상으로 하는 앱은 기본적으로 자동 취소가 비활성화 되어 있습니다. 활성화되면 자동 취소는 모든 런타임 권한에 영향을 주지만 정책 및 시스템 고정 권한과 기본적으로 또는 역할별로 부여되는 권한을 포함하여 사전에 부여된 모든 권한을 제외합니다. 자세한 내용 은 사용하지 않는 앱의 권한 자동 재설정 을 참조하세요.
패키지 형식
PermissionController 모듈의 형식은 릴리스마다 다릅니다.
Android 11 이상에서 PermissionController 모듈은 APEX 형식이며 업데이트할 수 있습니다. 패키지 이름은
com.google.android.permission
입니다.Android 10에서 PermissionController 모듈은 APK 형식이며 업데이트할 수 없습니다. 패키지 이름은
com.google.android.permissioncontroller
입니다.
모듈 경계
Android 12에서 권한 모듈 코드는 packages/apps/PermissionController
( platform/packages/apps/PackageInstaller
프로젝트) 및 frameworks/base/apex/permission
( frameworks/base
프로젝트의 하위 디렉토리)에서 이동되었습니다.
packages/modules/Permission
의 새 프로젝트 구조는 다음과 같습니다.
-
frameworks/base/apex/permission
의 파일 -
packages/apps/PermissionController
의 PermissionController 파일
OEM은 샘플 명령을 사용하여 원래 프로젝트 디렉토리에서 새 프로젝트 디렉토리로 패치를 이동할 수 있습니다.
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
packages/apps/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 테마(색상, 여백, 글꼴 및 드로어블)를 사용자 지정할 수 있습니다.