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 paketi, com.example.installer ise paketin sahibidir. Bir paketin sahipliği güncellenmek üzere etkinleştirildiğinde, diğer ayrıcalıklı mağazaların veya yükleyicilerin uygulamayı güncellemek için sahip güncellemeyi yönetmesi ve kullanıcı izni alması gerekir.

Paketleri sahiplik değişikliklerinden hariç tutma

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. Bu listeye eklenen bir 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. Orijinal mağazaya veya yükleyicinin AndroidManifest.xml dosyasına aşağıdaki özelliği ekleyin:

    <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, engellenenler listesinde yer alan bir paketin sahipliğini talep ederse sahiplik verilmez ve paket yüklenir ancak hiçbir yükleyicinin mülkiyetine geçmez. Ayrıca, yükleyiciden bağımsız olarak, engellenenler listesinde yer alan bir uygulamanın sahibi olamazsınız.

Bu listedeki paket grubu, listeyi sağlayan yükleyici APK'sında yapılan bir güncellemeyle değişebilir. Daha sonra bir engellenenler listesine eklenen bir paket için ayarlanan sahiplikler, yükleyici güncellendiğinde temizlenir. Bu nedenle, reddedilenler listesindeki uygulama paketinin sonraki güncellemeleri için kullanıcı etkileşimi gerekmez.

Sahibi güncelleme 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.

Önceden yüklenmiş uygulamalar için sahiplik belirleme

Önceden yüklenmiş uygulamalar genellikle belirli bir yükleyiciye ait 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.