Uygulamaların güncelleme sahipliğini yapılandırma ve yönetme

Bir uygulama bir mağaza veya yükleyici tarafından yüklendiğinde, mağaza veya yükleyici "kayıtlı yükleyici" olarak kabul edilir. Bu, uygulamanın son yükleyicisi anlamına gelir. Android 14'ten önce Android, başka bir mağazanın veya uygulama yükleyicisinin kayıtlı yükleyici olmasına ve kullanıcıyı bilgilendirmeden uygulamayı güncellemesine izin veriyordu.

Android 14'te, bir uygulamanın ilk yükleyicisi kendisini "güncelleme sahibi" olarak tanımlayabilir ve uygulamadaki güncellemeleri sahiplenebilir. Başka bir yükleyici uygulamayı güncellemeye çalışırsa kullanıcıya, devam etmeden önce yeni güncellemeyi onaylama fırsatı verilir.

Sahipliği güncellemek için paketleri etkinleştirme

Bir mağazanın veya yükleyicinin uygulama paketine sahip olduğunu beyan etmek için her paketin sysconfig XML'ine aşağıdaki gibi update-ownership etiketini ekleyin:

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

Bu örnekte com.example.application sahip olunacak uygulama paketidir ve com.example.installer, paketin sahibi. Bir paket etkinleştirildiğinde diğer özel mağazaların veya yükleyicilerin sahipliği güncellemek için Uygulamayı güncellemek için sahibi güncelleme işlemini gerçekleştirme ve kullanıcı rızası alma.

Paketleri sahiplik değişikliklerini devre dışı bırakma

APK'da bir engellenenler listesi sağlayarak mağazanızın veya yükleyicinizin, paketlerin bir alt kümesini güncelleme sahibi değişikliklerinden hariç tutmasını sağlayabilirsiniz. Bir paket ekleyerek Bu listede hiçbir mağaza veya yükleyici, paketin sahipliğini güncelleme isteğinde bulunamaz.

Paketlerin başka bir mağaza veya yükleyici tarafından güncellenememesini tercih etmek için:

  1. Aşağıdaki özelliği orijinal mağazaya veya yükleyicinin sayfasına ekleyin: AndroidManifest.xml dosyası:

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

    Bu örnekte, legacyOwnershipDenylist adlı bir XML engellenenler listesi referans gösterilmektedir.

  2. Aşağıdaki biçime sahip ham XML kaynağı olarak bir ret listesi oluşturun:

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

Bir mağaza veya yükleyici, ret listesindeki bir paketin sahipliğini isterse sahiplik verilmeyecek ve paket hâlâ yüklü olsa da kullanılamayacak herhangi bir yükleyiciye ait. Ayrıca yükleyiciden bağımsız olarak, ret listesinin sahibi olamaz.

Bu listedeki paket grubu, yükleyicinin güncellenmesiyle değişebilir Listeyi sağlayan APK. Şu özelliklere sahip bir paket için ayarlanmış herhangi bir sahiplik: ardından gelen reddetme listesine eklenen yükleyici, yükleme işlemini tamamlamaya güncellendi. Bu nedenle, reddedilenler listesindeki uygulama paketinin sonraki güncellemeleri için kullanıcı etkileşimi gerekmez.

Güncelleme sahibini yönetme ve kullanıcı izni alma

Android 14'te, bir mağaza veya uygulama yükleyici android.permission.INSTALL_PACKAGES iznine sahip olsa bile güncellemeleri başka bir mağazaya veya yükleyiciye ait olan bir uygulamayı güncellemek istiyorsa STATUS_PENDING_USER_ACTION durumunu yönetmesi gerekir.

InstallAPKSessionApi.java örnek uygulamasında STATUS_PENDING_USER_ACTION'ın nasıl kullanılacağı da gösterilmektedir.

Önyüklenmiş uygulamaların sahipliğini belirleme

Önceden yüklenmiş uygulamaların sahibi genellikle belirli bir yükleyici değildir. Bunun yerine, önceden yüklenmiş uygulamalara Sahiplik bilgilerini güncellemek için paketleri etkinleştirme bölümünde gösterildiği gibi sistem yapılandırması kullanılarak yeni bir sahip atanır.