Uygulamalar için güncelleme sahipliğini yapılandırın ve yönetin,Uygulamalar için güncelleme sahipliğini yapılandırın ve yönetin

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

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

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

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

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

Bu örnekte com.example.application , sahip olunacak uygulama paketidir ve com.example.installer ise paketin sahibidir. Bir paket, sahipliği güncellemek üzere seçildiğinde, diğer ayrıcalıklı mağazaların veya yükleyicilerin , güncelleme sahibiyle ilgilenmesi ve uygulamayı güncellemek için kullanıcı onayı alması gerekir .

Paketleri sahiplik değişikliklerinin dışında bırakın

APK'da bir reddedilenler listesi sağlayarak mağazanızın veya yükleyicinizin, paketlerin bir alt kümesini güncelleme sahibi değişikliklerinin dışında tutmasını sağlayabilirsiniz. Bu listeye bir paket eklendiğinde hiçbir mağaza veya yükleyici paketin güncelleme sahipliğini talep edemez.

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

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

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

    Bu örnek, legacyOwnershipDenylist adı verilen bir XML red listesine başvuruyor.

  2. Aşağıdaki formatta ham XML kaynağı olarak bir red listesi oluşturun:

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

Bir mağaza veya yükleyici, reddedilen listedeki bir paketin sahipliğini talep ederse, sahiplik verilmeyecek ve paket hâlâ yüklü olacak ancak herhangi bir yükleyiciye ait olmayacaktır. Ayrıca, yükleyiciden bağımsız olarak, reddedilenler listesindeki bir uygulama hiç kimseye ait olamaz.

Bu listedeki paketler, listeyi sağlayan yükleyici APK'sında yapılan bir güncelleme yoluyla değişebilir. Daha sonra reddetme listesine eklenen bir paket için belirlenen tüm sahiplikler, yükleyici güncellendiğinde temizlenir. Bu nedenle, reddetme listesindeki uygulama paketinin sonraki güncellemeleri kullanıcı etkileşimi gerektirmeyecektir.

Güncelleme sahibini yönetin ve kullanıcının onayını alın

Android 14'te, bir mağaza veya uygulama yükleyicisi 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ı aynı zamanda STATUS_PENDING_USER_ACTION nasıl işleneceğini de gösterir.

Ö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, Sahipliği 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.