Saat aplikasi diinstal oleh {i>store<i} atau {i>installer<i}, itu toko atau penginstal adalah dianggap sebagai "{i>installer of record<i}" yang berarti {i>installer<i} terakhir untuk aplikasi tersebut. Sebelum Android 14, Android mengizinkan penginstal app store atau aplikasi lain untuk menjadi {i>installer<i} catatan dan untuk memperbarui 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.
Ikut sertakan 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 memilih subset paket dari memperbarui perubahan pemilik dengan menyediakan daftar tolak di APK. Dengan menyertakan paket dalam daftar ini, tidak ada toko atau pemasang yang dapat meminta pembaruan kepemilikan paket.
Untuk memilih agar paket tidak diperbarui oleh toko atau penginstal lain:
Sertakan properti berikut di toko asli atau milik penginstal File
AndroidManifest.xml
:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>
Contoh ini merujuk ke 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, pembaruan paket aplikasi berikutnya dalam daftar tolak tidak akan memerlukan interaksi pengguna.
Menangani pemilik update dan mendapatkan izin pengguna
Dengan Android 14, meskipun jika app store atau penginstal aplikasi memiliki
izin android.permission.INSTALL_PACKAGES
, aplikasi masih harus menangani
STATUS_PENDING_USER_ACTION
jika ingin memperbarui aplikasi yang pembaruannya dimiliki oleh toko atau penginstal lain.
Tujuan
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 dipramuat diberi pemilik baru menggunakan konfigurasi sistem sebagai yang ditampilkan di Pilih paket untuk memperbarui kepemilikan.