Eigentum für Updates von Apps konfigurieren und verwalten

Wenn eine App von einem Store oder Installateur installiert wird, gilt dieser als „eingetragener Installateur“, also als der letzte Installateur der App. Vor Android 14 konnte ein anderer Store oder App-Installateur zum eingetragenen Installateur werden und die App aktualisieren, ohne den Nutzer zu benachrichtigen.

Unter Android 14 kann sich der ursprüngliche Installateur einer App als „Updateinhaber“ deklarieren und eigene Updates für die App veröffentlichen. Wenn ein anderer Installateur versucht, die App zu aktualisieren, hat der Nutzer die Möglichkeit, das neue Update zu genehmigen, bevor es fortgesetzt wird.

Pakete aktivieren, um die Inhaberschaft zu aktualisieren

So deklarieren Sie, dass ein Store oder Installationsprogramm Inhaber eines App-Pakets ist, Füge das update-ownership-Tag in deiner sysconfig-XML für jedes Paket als folgt:

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

In diesem Beispiel ist com.example.application das App-Paket, com.example.installer ist der Eigentümer des Pakets. Wenn für ein Paket die Aktualisierung der Inhaberschaft aktiviert ist, müssen andere berechtigte Shops oder Installationsprogramme den Updateinhaber verwalten und die Nutzereinwilligung einholen, um die App zu aktualisieren.

Änderungen an Eigentumsrechten für Pakete deaktivieren

Sie können in Ihrem Store oder Installationsprogramm festlegen, dass Änderungen am Eigentümer von Updates für einen Teil der Pakete deaktiviert werden. Dazu müssen Sie im APK eine Sperrliste angeben. Durch Hinzufügen eines Pakets in dieser Liste kann kein Speicher oder Installationsprogramm eine Aktualisierung der Eigentümerschaft des Pakets anfordern.

So verhindern Sie, dass Pakete über einen anderen Store oder ein anderes Installationsprogramm aktualisiert werden können:

  1. Fügen Sie der AndroidManifest.xml-Datei des ursprünglichen Store- oder Installationsprogramms die folgende Property hinzu:

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

    In diesem Beispiel wird auf eine XML-Sperrliste mit dem Namen legacyOwnershipDenylist verwiesen.

  2. Erstellen Sie eine Sperrliste als Roh-XML-Ressource im folgenden Format:

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

Wenn ein Speicher oder Installationsprogramm die Inhaberschaft eines Pakets auf einer Sperrliste anfordert, wird die Inhaberschaft nicht gewährt und das Paket ist immer noch installiert, einem Installateur gehört. Unabhängig vom Installationsprogramm kann eine App auf einer Sperrliste niemandem gehören.

Die Pakete in dieser Liste können sich durch ein Update des Installations-APKs ändern, das die Liste enthält. Jede Eigentümerschaft, die für ein Paket festgelegt wird, eine Sperrliste hinzugefügt wird, wird gelöscht, wenn das Installationsprogramm aktualisiert. Daher ist für nachfolgende Updates des App-Pakets auf der Sperrliste keine Nutzerinteraktion erforderlich.

Inhaber des Updates verwalten und Nutzereinwilligung einholen

Mit Android 14 ist es selbst dann möglich, wenn ein App-Shop oder ein App-Installationsprogramm android.permission.INSTALL_PACKAGES hat, muss noch die STATUS_PENDING_USER_ACTION wenn sie eine App aktualisieren möchte, deren Updates einem anderen App-Shop oder Installationsprogramm gehören.

In der Beispiel-App InstallAPKSessionApi.java wird auch gezeigt, wie mit STATUS_PENDING_USER_ACTION umgegangen wird.

Inhaberschaft für vorab geladene Apps festlegen

Vorinstallierte Apps gehören in der Regel keinem bestimmten Installationsprogramm. Stattdessen wird mithilfe der Systemkonfiguration wie unter Aktualisierung der Eigentumsrechte für Pakete aktivieren beschrieben.