Konfigurieren und verwalten Sie den Update-Besitz für Apps. Konfigurieren und verwalten Sie den Update-Besitz für Apps

Wenn eine App von einem Store oder Installateur installiert wird, gilt der Store oder Installer als „Installer of Record“, d. h. als letzter Installer der App. Vor Android 14 erlaubte Android einem anderen Store oder App-Installer, der eingetragene Installer zu werden und die App zu aktualisieren, ohne den Benutzer zu benachrichtigen.

In Android 14 kann sich der Erstinstaller einer App selbst zum „Update-Besitzer“ erklären und Updates für die App besitzen. Wenn ein anderer Installer versucht, die App zu aktualisieren, erhält der Benutzer die Möglichkeit, das neue Update zu genehmigen, bevor es fortfährt.

Aktivieren Sie Pakete, um den Besitz zu aktualisieren

Um zu deklarieren, dass ein Store oder Installer ein App-Paket besitzt, fügen Sie das Tag update-ownership wie folgt in Ihre sysconfig XML ein:

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

In diesem Beispiel ist com.example.application das App-Paket, dessen Besitzer sein soll, und com.example.installer ist der Besitzer des Pakets. Wenn für ein Paket der Update-Besitz aktiviert ist, müssen andere privilegierte Stores oder Installer den Update-Eigentümer verwalten und die Zustimmung des Benutzers zum Aktualisieren der App einholen .

Deaktivieren Sie Pakete von Eigentümerwechseln

Sie können Ihren Shop oder Ihr Installationsprogramm veranlassen, eine Teilmenge der Pakete von Änderungen des Update-Eigentümers auszuschließen, indem Sie im APK eine Sperrliste bereitstellen. Durch die Aufnahme eines Pakets in diese Liste kann kein Store oder Installer den Update-Eigentümer des Pakets anfordern.

So deaktivieren Sie die Aktualisierbarkeit von Paketen durch einen anderen Store oder Installer:

  1. Fügen Sie die folgende Eigenschaft in die AndroidManifest.xml Datei des ursprünglichen Stores oder Installationsprogramms ein:

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

    Dieses Beispiel verweist auf eine XML-Denylist mit dem Namen legacyOwnershipDenylist .

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

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

Wenn ein Store oder Installer den Besitz eines Pakets auf einer Sperrliste anfordert, wird der Besitz nicht gewährt und das Paket wird weiterhin installiert, gehört aber keinem Installer. Darüber hinaus kann eine App auf einer Sperrliste unabhängig vom Installationsprogramm niemandem gehören.

Der Paketsatz in dieser Liste kann sich durch ein Update des Installations-APK ändern, das die Liste bereitstellt. Jeder Besitz, der für ein Paket festgelegt ist, das anschließend in eine Verweigerungsliste aufgenommen wird, wird gelöscht, wenn das Installationsprogramm aktualisiert wird. Daher erfordern nachfolgende Aktualisierungen des App-Pakets auf der Ablehnungsliste keine Benutzerinteraktion.

Behandeln Sie den Update-Eigentümer und holen Sie die Zustimmung des Benutzers ein

Selbst wenn ein Store oder App-Installer mit Android 14 über die Berechtigung android.permission.INSTALL_PACKAGES verfügt, muss er dennoch den Status STATUS_PENDING_USER_ACTION verarbeiten, wenn er eine App aktualisieren möchte, deren Updates einem anderen Store oder Installer gehören.

Die Beispiel-App InstallAPKSessionApi.java zeigt auch, wie STATUS_PENDING_USER_ACTION umgegangen wird.

Richten Sie den Besitz für vorinstallierte Apps ein

Vorinstallierte Apps gehören normalerweise nicht einem bestimmten Installationsprogramm. Stattdessen wird vorinstallierten Apps mithilfe der Systemkonfiguration ein neuer Besitzer zugewiesen, wie unter „Pakete zur Aktualisierung des Besitzes aktivieren“ gezeigt.