플랫폼 서명 앱은 플랫폼 패키지(android
)와 동일한 서명 인증서(또는 호환되는 인증서)를 공유하는 앱입니다. 플랫폼 서명 앱은 시스템 이미지 파티션에 있는 시스템 앱이거나 비시스템 앱일 수 있습니다. 플랫폼 서명 권한은 플랫폼 패키지에 의해 정의되고 signature
보호 수준도 있는 권한입니다. 디버그 가능한 빌드는 android.os.Build.isDebuggable()
가 true
를 반환하는 빌드(예: userdebug
또는 eng
빌드)입니다.
지금까지 기기 제조업체에는 플랫폼 서명된 비시스템 앱에 부여할 수 있는 플랫폼 signature
권한을 제어하는 권한이 부족했습니다.
Android 15부터는 제조업체가 /etc/permissions
디렉터리의 시스템 구성 XML 파일에서 플랫폼 서명 권한을 명시적으로 부여할 수 있습니다. 플랫폼 서명 비시스템 앱이 플랫폼 서명 권한의 허용 목록에 추가되지 않은 경우 해당 권한은 디버그 불가능한 빌드에서 앱이 플랫폼 서명되지 않은 것처럼 작동합니다.
허용 목록 추가
앱의 권한 허용 목록은 다음과 같이 frameworks/base/etc/permissions
디렉터리에 있는 단일 XML 또는 여러 XML 파일에 나열할 수 있습니다.
/etc/permissions/signature-permissions-OEM_NAME.xml
/etc/permissions/signature-permissions-DEVICE_NAME.xml
콘텐츠 구성 방법에는 엄격한 규칙이 적용되지 않습니다. 기기 구현자는 적절한 앱과 권한이 허용 목록에 추가되기만 하면 콘텐츠 구조를 파악할 수 있습니다.
허용 목록 맞춤설정
AOSP에는 권한이 있는 권한 허용 목록과 마찬가지로 필요에 따라 맞춤설정할 수 있는 허용 목록 구현이 포함되어 있습니다. 예를 들면 다음과 같습니다.
<!--
~ This XML file declares which platform signature permissions to grant to
~ platform signed nonsystem apps.
-->
<permissions>
<signature-permissions package="com.android.example">
<permission name="android.permission.READ_DEVICE_CONFIG"/>
...
</signature-permissions>
...
</permissions>
누락된 권한 찾기
누락된 권한을 찾으려면 플랫폼 서명 앱을 설치하고 기기 로그에서 다음 형식의 경고 메시지를 검사합니다.
Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist
시스템은 여전히 디버그 가능한 빌드에 권한을 부여할 수 있지만 user
빌드와 같이 디버그 불가능한 빌드에는 권한을 부여할 수 없습니다.