권한 컨트롤러

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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 테마(색상, 여백, 글꼴 및 드로어블)를 사용자 지정할 수 있습니다.