Uygulamalar için güncelleme sahipliğini yapılandırma ve işleme

Uygulama bir mağaza veya yükleyici tarafından yüklendiğinde, mağaza veya yükleyici, uygulamanın son yükleyicisi olan "kayıt yükleyicisi" olarak kabul edilir. Android 14'ten önce Android, başka bir mağazanın veya uygulama yükleyicinin kaydın yükleyicisi 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 uygulama paketinin sahibinin bir mağaza veya yükleyici 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 paket sahipliği güncellemeye dahil edildiğinde diğer ayrıcalıklı mağazaların veya yükleyicilerin, uygulamayı güncellemek için sahip bilgilerini güncellemek ve kullanıcı rızasını 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 bulunabilecek mağaza veya yükleyici yoktur.

Paketlerin başka bir mağaza veya yükleyici tarafından güncellenmesini devre dışı bırakmak 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, reddedilenler listesindeki bir uygulamanın sahibi kimse olamaz.

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 sahiplik, yükleyici güncellendiğinde temizlenir. Bu nedenle, reddetme listesindeki uygulama paketinin sonraki güncellemeleri için kullanıcı etkileşimi gerekmez.

Sahibi güncelleme işlemini gerçekleştirme 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 oluşturma

Ö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.