Saat aplikasi diinstal oleh app store atau penginstal, app store atau penginstal dianggap sebagai "penginstal resmi" yang berarti penginstal terakhir aplikasi. Sebelum Android 14, Android mengizinkan app store atau penginstal aplikasi lain menjadi penginstal resmi dan mengupdate aplikasi tanpa memberi tahu pengguna.
Di Android 14, penginstal awal aplikasi dapat menyatakan dirinya sebagai "pemilik update" dan memiliki pembaruan untuk aplikasi. Jika penginstal lain mencoba memperbarui aplikasi, pengguna diberi kesempatan untuk menyetujui pembaruan sebelum melanjutkan.
Memilih paket untuk memperbarui kepemilikan
Untuk mendeklarasikan bahwa toko atau
{i>installer <i}memiliki paket aplikasi,
sertakan tag update-ownership
dalam XML sysconfig
Anda untuk setiap paket sebagai
berikut ini:
<update-ownership package="com.example.application" installer="com.example.installer" />
Dalam contoh ini, com.example.application
adalah paket aplikasi yang akan dimiliki dan
com.example.installer
adalah pemilik paket. Saat sebuah paket diikutsertakan
memperbarui kepemilikan, toko atau penginstal dengan hak istimewa lainnya harus
menangani pemilik update dan mendapatkan izin pengguna untuk mengupdate aplikasi.
Menyisihkan paket dari perubahan kepemilikan
Anda dapat meminta toko atau penginstal untuk memilih sebagian paket agar tidak terpengaruh perubahan pemilik update dengan memberikan daftar tolak di APK. Dengan menyertakan paket dalam daftar ini, tidak ada toko atau penginstal yang dapat meminta kepemilikan update paket.
Untuk memilih agar paket tidak diperbarui oleh toko atau penginstal lain:
Sertakan properti berikut dalam file
AndroidManifest.xml
penginstal atau toko asli:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>
Contoh ini mereferensikan daftar tolak XML yang disebut
legacyOwnershipDenylist
.Buat daftar tolak sebagai resource XML mentah dengan format berikut:
<deny-ownership>com.example.app1</deny-ownership> <deny-ownership>com.example.app2</deny-ownership>
Jika toko atau {i>installer<i} meminta kepemilikan paket dalam daftar tolak, kepemilikan tidak akan diberikan dan paket masih terinstal tetapi tidak akan diberikan dimiliki oleh setiap {i>installer<i}. Selanjutnya, terlepas dari penginstal, aplikasi di daftar tolak tidak dapat dimiliki oleh siapa pun.
Kumpulan paket dalam daftar ini dapat berubah melalui pembaruan pada {i>installer<i} APK yang menyediakan daftar tersebut. Setiap kepemilikan yang ditetapkan untuk paket yang yang kemudian dimasukkan ke dalam daftar tolak akan dihapus ketika {i>installer<i} diperbarui. Dengan demikian, update paket aplikasi berikutnya di daftar tolak tidak akan memerlukan interaksi pengguna.
Menangani pemilik update dan mendapatkan izin pengguna
Dengan Android 14, meskipun penginstal aplikasi atau app store memiliki
izin android.permission.INSTALL_PACKAGES
, penginstal aplikasi atau app store tersebut masih perlu menangani
status
STATUS_PENDING_USER_ACTION
jika ingin mengupdate aplikasi yang update-nya dimiliki oleh app store atau penginstal lain.
Aplikasi contoh
InstallAPKSessionApi.java
juga menunjukkan cara menangani STATUS_PENDING_USER_ACTION
.
Menetapkan kepemilikan untuk aplikasi pramuat
Aplikasi bawaan biasanya tidak dimiliki oleh penginstal tertentu. Sebagai gantinya, aplikasi yang dimuat sebelumnya akan diberi pemilik baru menggunakan konfigurasi sistem seperti yang ditampilkan di Mengaktifkan paket untuk memperbarui kepemilikan.