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 olduğu 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 uygulamayı kullanıcıyı bilgilendirmeden güncellemesine izin veriyordu.

Android 14'te bir uygulamanın ilk yükleyicisi kendisini "güncelleme sahibi" olarak ilan edebilir ve uygulamanın güncellemelerine sahip olabilir. 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 bir uygulama paketinin sahibi olduğunu belirtmek için her paket için sysconfig XML'nize update-ownership etiketini aşağıdaki gibi ekleyin:

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

Bu örnekte, com.example.application sahipliği alınacak uygulama paketi, com.example.installer ise paketin sahibidir. Sahipliğin güncellenmesi için bir paket etkinleştirildiğinde, diğer ayrıcalıklı mağazaların veya yükleyicilerin uygulamayı güncellemek için güncelleme sahibini yönetmesi ve kullanıcı iznini alması gerekir.

Paketleri sahiplik değişikliklerinin dışında bırakma

APK'da bir kara liste sağlayarak mağazanızın veya yükleyicinizin, paketlerin bir alt kümesini güncelleme sahibi değişikliklerinin dışında bırakmasını sağlayabilirsiniz. Bu listeye bir paket eklediğinizde hiçbir mağaza veya yükleyici, paketin güncelleme sahipliğini isteyemez.

Paketlerin başka bir mağaza veya yükleyici tarafından güncellenmesini devre dışı bırakmak için:

  1. Orijinal mağazanın 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 reddetme listesine referans verilmektedir.

  2. Aşağıdaki biçimde 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, izin verilmeyenler listesindeki bir paketin sahipliğini isterse sahiplik verilmez ve paket yüklenmeye devam eder ancak herhangi bir yükleyicinin sahipliğinde olmaz. Ayrıca, yükleyiciden bağımsız olarak, kara listedeki bir uygulamanın sahibi olamazsınız.

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

Sahibi güncellemeyi yönetme ve kullanıcı izni alma

Android 14'te bir mağaza veya uygulama yükleyicinin android.permission.INSTALL_PACKAGES izni 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 nasıl işleneceği de gösterilmektedir.

Önceden yüklenmiş uygulamaların sahipliğini belirleme

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