Konfiguruj i obsługuj własność aktualizacji dla aplikacji. Konfiguruj i obsługuj własność aktualizacji dla aplikacji

Kiedy aplikacja jest instalowana przez sklep lub instalatora, sklep lub instalator jest uważany za „zarejestrowanego instalatora”, czyli ostatniego instalatora aplikacji. Przed wersją Androida 14 Android pozwalał innemu instalatorowi sklepu lub aplikacji zostać zarejestrowanym instalatorem i aktualizować aplikację bez powiadamiania użytkownika.

W systemie Android 14 początkowy instalator aplikacji może zadeklarować się jako „właściciel aktualizacji” i być właścicielem aktualizacji aplikacji. Jeśli inny instalator spróbuje zaktualizować aplikację, użytkownik będzie miał możliwość zatwierdzenia nowej aktualizacji przed jej kontynuowaniem.

Włącz pakiety, aby zaktualizować własność

Aby zadeklarować, że sklep lub instalator jest właścicielem pakietu aplikacji, dołącz znacznik update-ownership do pliku XML sysconfig dla każdego pakietu w następujący sposób:

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

W tym przykładzie com.example.application to pakiet aplikacji, który ma być własnością, a com.example.installer jest właścicielem pakietu. Gdy pakiet ma zgodę na aktualizację własności, inne uprzywilejowane sklepy lub instalatorzy muszą obsłużyć właściciela aktualizacji i uzyskać zgodę użytkownika na aktualizację aplikacji.

Zrezygnuj z pakietów ze zmianami własności

Możesz poprosić swój sklep lub instalatora o wyłączenie podzbioru pakietów ze zmian właściciela aktualizacji, udostępniając listę odrzuconych w pliku APK. Umieszczając pakiet na tej liście, żaden sklep ani instalator nie będzie mógł zażądać aktualizacji własności pakietu.

Aby zrezygnować z możliwości aktualizacji pakietów przez inny sklep lub instalatora:

  1. Dołącz następującą właściwość do oryginalnego pliku AndroidManifest.xml sklepu lub instalatora:

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

    Ten przykład odwołuje się do listy odrzuconych XML o nazwie legacyOwnershipDenylist .

  2. Utwórz listę odrzuconych jako surowy zasób XML w następującym formacie:

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

Jeśli sklep lub instalator poprosi o własność pakietu znajdującego się na liście odrzuconych, własność nie zostanie przyznana, a pakiet będzie nadal zainstalowany, ale nie będzie własnością żadnego instalatora. Co więcej, niezależnie od instalatora, aplikacja znajdująca się na liście odrzuconych nie może być niczyją własnością.

Zestaw pakietów na tej liście może ulec zmianie poprzez aktualizację instalatora APK udostępniającego tę listę. Wszelka własność ustawiona dla pakietu, który zostanie następnie wprowadzony na listę odrzuconych, zostanie wyczyszczona po aktualizacji instalatora. W związku z tym kolejne aktualizacje pakietu aplikacji znajdującego się na liście odrzuconych nie będą wymagały interakcji użytkownika.

Zajmij się właścicielem aktualizacji i uzyskaj zgodę użytkownika

W systemie Android 14, nawet jeśli sklep lub instalator aplikacji ma uprawnienia android.permission.INSTALL_PACKAGES , nadal musi obsłużyć stan STATUS_PENDING_USER_ACTION , jeśli chce zaktualizować aplikację, której aktualizacje są własnością innego sklepu lub instalatora.

Przykładowa aplikacja InstallAPKSessionApi.java pokazuje również, jak obsługiwać STATUS_PENDING_USER_ACTION .

Ustal własność wstępnie załadowanych aplikacji

Fabrycznie załadowane aplikacje zazwyczaj nie są własnością konkretnego instalatora. Zamiast tego wstępnie załadowanym aplikacjom przypisywany jest nowy właściciel przy użyciu konfiguracji systemu, jak pokazano w opcji Opt pakiety w celu aktualizacji własności .