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

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

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

허용 목록 추가

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}