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:
Orijinal mağazanın veya yükleyicinin
AndroidManifest.xmldosyası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,
legacyOwnershipDenylistadlı bir XML reddetme listesine referans verilmektedir.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.