플랫폼 서명 앱은 플랫폼 패키지(android)와 동일한 서명 인증서 또는 호환되는 서명 인증서를 공유하는 앱입니다. 플랫폼 서명 앱은 시스템 이미지 파티션에 있는 시스템 앱이거나 비시스템 앱일 수 있습니다. 플랫폼 서명 공유 UID는 플랫폼 서명 앱을 포함하는 공유 UID(android:sharedUserId)입니다. 디버그 가능한 빌드는 android.os.Build.isDebuggable()가 true를 반환하는 빌드(예: userdebug 또는 eng 빌드)입니다.
지금까지 기기 제조업체에는 어떤 플랫폼 서명 비시스템 앱이 플랫폼 서명 공유 UID에 참여할 수 있는지를 제어하는 권한이 부족했습니다. Android 15부터는 제조업체가 /etc/permissions 디렉터리의 시스템 구성 XML 파일에서 플랫폼 서명된 비시스템 앱이 플랫폼 서명된 공유 UID에 참여하도록 명시적으로 허용할 수 있습니다. 플랫폼 서명된 비시스템 앱이 플랫폼 서명된 공유 UID의 허용 목록에 추가되지 않았는데도 앱이 여전히 매니페스트에 android:sharedUserId가 있는 플랫폼 서명된 공유 UID에 참여하려고 하면 디버그 불가능한 빌드에 앱을 설치할 수 없습니다.
누락된 허용 목록 항목을 찾으려면 디버그 불가능한 빌드에 플랫폼 서명된 비시스템 앱을 설치해 보고 여전히 설치할 수 있는지 확인합니다. 그렇지 않은 경우 기기 로그에서 다음 형식의 경고 메시지를 검사할 수 있습니다.
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Platform-signed shared UID allowlist\n\nPlatform-signed apps are apps sharing the same (or compatible) signing\ncertificate with the platform package (`android`). A platform-signed app can be\na system app (located on a system image partition), or a nonsystem app.\nPlatform-signed shared UIDs are shared UIDs (`android:sharedUserId`) that\ncontain platform-signed apps. Debuggable builds are builds whose\n`android.os.Build.isDebuggable()` return `true`, such as `userdebug` or `eng`\nbuilds.\n\nHistorically, device manufacturers had little control over which platform-signed\nnonsystem apps could join a platform-signed shared UID. Starting in Android\n15, manufacturers can explicitly allow platform-signed\nnonsystem apps to join platform-signed shared UIDs in the system configuration\nXML files in the `/etc/permissions` directory. If a platform-signed nonsystem\napp isn't added to the allowlist for a platform-signed shared UID, and the app\nstill tries to join the platform-signed shared UID (with `android:sharedUserId`\nin its manifest), that app can't be installed on nondebuggable builds.\n| **Note:** The allowlist isn't enforced on debuggable builds to facilitate easier testing.\n| **Note:** Platform-signed system apps aren't affected by this change.\n\nAdd an allowlist\n----------------\n\nYou can list allowlists for apps in a single XML file or in multiple XML files,\nsimilar to\n[`frameworks/base/data/etc/package-shareduid-allowlist.xml`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/data/etc/package-shareduid-allowlist.xml): \n\n \u003c!--\n This XML defines an allowlist for packages that want to join a particular shared-uid.\n If a non-system package that is signed with platform signature, is trying to join a particular\n shared-uid, and not in this list, the installation will fail.\n\n - The \"package\" XML attribute refers to the app's package name.\n - The \"shareduid\" XML attribute refers to the shared uid name.\n --\u003e\n\n \u003cconfig\u003e\n \u003callow-package-shareduid package=\"android.test.settings\" shareduid=\"android.uid.system\" /\u003e\n \u003c/config\u003e\n\nFind missing allowlist\n----------------------\n\nTo find a missing allowlist entry, try to install your platform-signed nonsystem\napp on a nondebuggable build and check if it can still be installed. If not, you\ncan inspect device logs for the following format of warning messages: \n\n Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}"]]