Updateinhaberschaft für Apps konfigurieren und verwalten

Wenn eine App von einem App-Shop oder Installer installiert wird, gilt der Store oder Installer als „Installer of Record“, d. h. der letzte Installer der App. Vor Android 14 konnte ein anderer App-Shop oder App-Installer zum eingetragenen Installationsprogramm 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

Wenn Sie angeben möchten, dass ein Store oder Installer Inhaber eines App-Pakets ist, fügen Sie für jedes Paket das Tag update-ownership in Ihre sysconfig-XML-Datei ein. Gehen Sie dazu so vor:

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

In diesem Beispiel ist com.example.application das App-Paket, dessen Inhaber Sie werden möchten, und com.example.installer ist der Inhaber 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 festlegen, dass Ihr Store oder Installer Änderungen am Eigentümer von Updates für einen Teil der Pakete deaktiviert. Dazu müssen Sie im APK eine Sperrliste angeben. Wenn Sie ein Paket in diese Liste aufnehmen, kann kein Store oder kein Installationsprogramm die Inhaberschaft für das Paket aktualisieren.

So deaktivieren Sie die Aktualisierungen von Paketen durch einen anderen Speicher oder Installationsprogramm:

  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-Deaktivierungsliste 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 Store oder ein Installateur die Inhaberschaft für ein Paket auf einer Sperrliste anfordert, wird die Inhaberschaft nicht gewährt. Das Paket wird zwar weiterhin installiert, hat aber keinen Inhaber. 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. Alle Eigentumsrechte für ein Paket, das anschließend in eine Ablehnungsliste aufgenommen wird, werden gelöscht, wenn das Installationsprogramm aktualisiert wird. Daher ist bei späteren Aktualisierungen des App-Pakets auf der Sperrliste keine Nutzerinteraktion erforderlich.

Inhaber aktualisieren und Nutzereinwilligung einholen

Unter Android 14 muss ein App-Shop oder App-Installer, der die Berechtigung android.permission.INSTALL_PACKAGES hat, trotzdem den Status STATUS_PENDING_USER_ACTION verarbeiten, wenn eine App aktualisiert werden soll, 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 vorinstallierte Apps festlegen

Vorinstallierte Apps gehören normalerweise keinem bestimmten Installationsprogramm. Stattdessen wird vorinstallierten Apps über die Systemkonfiguration ein neuer Inhaber zugewiesen, wie unter Pakete aktivieren, um die Inhaberschaft zu aktualisieren beschrieben.