Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

PermissionController

PermissionController 모듈은 업데이트할 수 있는 개인정보처리방침과 UI 요소(예: 권한 부여 및 관리에 관한 정책 및 UI)를 지원합니다.

Android 12부터 Role의 프레임워크 및 시스템 서버 클래스가 모듈로 이동하여 Role이 완전히 모듈화됩니다.

PermissionController 정보

com.google.android.permissioncontroller APK는 권한 관련 UI, 로직 및 역할을 처리하여 특정 목적의 앱 액세스를 허용합니다. PermissionController는 다음을 제어합니다.

  • 런타임 권한 부여(시스템 앱에 권한 부여 포함)

  • 런타임 권한 관리(권한 그룹화 포함)

  • 런타임 권한 사용 추적

  • 역할

Android 9에서 이러한 권한은 com.google.android.packageinstaller의 일부였습니다. Android 10에서는 패키지 설치 앱을 섹션으로 분할하여 권한 로직을 업데이트할 수 있도록 합니다. PermissionController는 업데이트 가능한 메인라인 모듈로서 다음을 실행합니다.

  • 안정적인 @SystemApi API를 통해서만 프레임워크와 상호작용합니다(@hide API 사용 안 함).

  • 우선순위가 0보다 큰 권한 관련 인텐트를 처리합니다.

  • OEM이 테마를 맞춤설정할 수 있도록 하는 메커니즘을 노출합니다.

  • 역할 관리, 권한 취소, 설정과 관련된 기본 권한 정보처럼 시스템과 앱이 결합할 수 있는 서비스를 제공합니다.

  • 미사용 앱 자동 취소 기능을 지원합니다(Android 11의 새로운 기능).

사용하지 않는 앱의 자동 취소

Android 11에서는 PermissionsController 모듈이 장기간 사용되지 않은 앱의 런타임 권한을 자동으로 취소할 수 있습니다. SDK 30 이상을 타겟팅하는 앱에는 자동 취소 기능이 기본적으로 사용 설정되어 있지만, SDK 29 이하를 타겟팅하는 앱에서는 기본적으로 사용 중지되어 있습니다. 자동 취소가 사용 설정되면 정책 및 시스템 고정 권한과 기본적으로 부여되거나 역할에 따라 부여되는 권한 등 사전 부여 권한을 제외한 모든 런타임 권한이 영향을 받습니다. 자세한 내용은 사용하지 않는 앱의 권한 자동 재설정을 참고하세요.

패키지 형식

PermissionController 모듈은 APK 파일로 제공됩니다.

모듈 경계

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