플랫폼 서명 공유 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}