앱의 업데이트 소유권 구성 및 처리

앱이 스토어나 설치 프로그램을 통해 설치되면 그 스토어나 설치 프로그램은 앱의 마지막 설치 프로그램을 의미하는 '기록 설치 프로그램'으로 간주됩니다. Android 14 전에는 Android에서 또 다른 스토어나 앱 설치 프로그램이 기록 설치 프로그램이 될 수 있었고 사용자에게 알리지 않고 앱을 업데이트할 수 있었습니다.

Android 14에서는 앱의 초기 설치 프로그램이 자체적으로 '업데이트 소유자'로 선언하고 앱 업데이트를 소유할 수 있습니다. 다른 설치 프로그램이 앱을 업데이트하려고 하면 사용자는 진행하기 전에 새 업데이트를 승인할 수 있습니다.

패키지를 선택하여 소유권 업데이트

스토어나 설치 프로그램이 앱 패키지를 소유한다고 선언하려면 다음과 같이 각 패키지의 sysconfig XML에 update-ownership 태그를 포함하세요.

<update-ownership package="com.example.application" installer="com.example.installer" />

이 예에서 com.example.application은 소유할 앱 패키지이며 com.example.installer는 패캐지 소유자입니다. 소유권을 업데이트하려고 패캐지를 선택한 경우 권한이 있는 다른 스토어나 설치 프로그램은 업데이트 소유자를 처리하고 사용자 동의를 얻어 앱을 업데이트해야 합니다.

소유권 변경에서 패키지 선택 해제

APK에 차단 목록을 제공하여 업데이트 소유주 변경에서 패키지의 하위 집합을 선택 해제할 수 있습니다. 이 목록에 패키지를 포함하면 스토어나 설치 프로그램은 패키지의 업데이트 소유권을 요청할 수 없습니다.

다른 스토어나 설치 프로그램이 패키지를 업데이트하지 않도록 하려면 다음을 실행하세요.

  1. 원래 스토어나 설치 프로그램의 AndroidManifest.xml 파일에 다음 속성을 포함합니다.

    <application …>
      <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST"
                android:resource="@xml/legacyOwnershipDenylist" />
    </application>
    

    이 예에서는 legacyOwnershipDenylist라는 XML 차단 목록을 참조합니다.

  2. 다음 형식을 사용하여 원시 XML 리소스로 차단 목록을 만듭니다.

    <deny-ownership>com.example.app1</deny-ownership>
    <deny-ownership>com.example.app2</deny-ownership>
    

스토어나 설치 프로그램이 차단 목록에 있는 패키지의 소유권을 요청하면 소유권은 부여되지 않으며 패키지는 여전히 설치되지만 설치 프로그램에서 소유하지 않습니다. 또한 설치 프로그램과 관계없이 차단 목록의 앱은 누구도 소유할 수 없습니다.

이 목록에 있는 패키지 세트는 목록을 제공하는 설치 프로그램 APK의 업데이트를 통해 변경될 수 있습니다. 이후 차단 목록에 추가된 패키지에 설정된 소유권은 설치 프로그램이 업데이트될 때 삭제됩니다. 따라서 차단 목록에 있는 앱 패키지의 후속 업데이트에는 사용자 상호작용이 필요하지 않습니다.

업데이트 소유자 처리 및 사용자 동의 얻기

Android 14에서는 스토어나 앱 설치 프로그램에 android.permission.INSTALL_PACKAGES 권한이 있어도 다른 스토어나 설치 프로그램이 업데이트를 소유하고 있는 앱을 업데이트하려면 STATUS_PENDING_USER_ACTION 상태를 처리해야 합니다.

InstallAPKSessionApi.java 샘플 앱도 STATUS_PENDING_USER_ACTION 처리 방법을 보여줍니다.

미리 로드된 앱의 소유권 설정

미리 로드된 앱은 일반적으로 특정 설치 프로그램이 소유하지 않습니다. 대신 미리 로드된 앱에는 패키지를 선택하여 소유권 업데이트에 나온 대로 시스템 구성을 사용하여 새 소유자가 할당됩니다.