플랫폼 서명 공유 UID 허용 목록

플랫폼 서명 앱은 플랫폼 패키지(android)와 동일한 서명 인증서 또는 호환되는 서명 인증서를 공유하는 앱입니다. 플랫폼 서명 앱은 시스템 이미지 파티션에 있는 시스템 앱이거나 비시스템 앱일 수 있습니다. 플랫폼 서명 공유 UID는 플랫폼 서명 앱을 포함하는 공유 UID(android:sharedUserId)입니다. 디버그 가능한 빌드는 android.os.Build.isDebuggable()true를 반환하는 빌드(예: userdebug 또는 eng 빌드)입니다.

지금까지 기기 제조업체에는 어떤 플랫폼 서명 비시스템 앱이 플랫폼 서명 공유 UID에 참여할 수 있는지를 제어하는 권한이 부족했습니다. Android 15부터 제조업체는 /etc/permissions 디렉터리의 시스템 구성 XML 파일에서 플랫폼 서명된 비시스템 앱이 플랫폼 서명된 공유 UID에 참여하도록 명시적으로 허용할 수 있습니다. 플랫폼 서명된 비시스템 앱이 플랫폼 서명된 공유 UID의 허용 목록에 추가되지 않았는데도 앱이 여전히 매니페스트에 android:sharedUserId가 있는 플랫폼 서명된 공유 UID에 참여하려고 하면 디버그 불가능한 빌드에 앱을 설치할 수 없습니다.

허용 목록 추가

frameworks/base/data/etc/package-shareduid-allowlist.xml와 마찬가지로 앱의 허용 목록을 단일 XML 파일 또는 여러 XML 파일에 나열할 수 있습니다.

<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.

- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
  -->

<config>
    <allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>

누락된 허용 목록 찾기

누락된 허용 목록 항목을 찾으려면 디버그 불가능한 빌드에 플랫폼 서명된 비시스템 앱을 설치해 보고 여전히 설치할 수 있는지 확인합니다. 그렇지 않은 경우 기기 로그에서 다음 형식의 경고 메시지를 검사할 수 있습니다.

Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}