Mengonfigurasi dan menangani kepemilikan update untuk aplikasi

Saat aplikasi diinstal oleh toko atau penginstal, toko atau penginstal tersebut dianggap sebagai "penginstal resmi", yang berarti penginstal terakhir aplikasi. Sebelum Android 14, Android mengizinkan toko 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 update ke aplikasi. Jika penginstal lain mencoba mengupdate aplikasi, pengguna diberi kesempatan untuk menyetujui update baru sebelum dilanjutkan.

Memilih paket untuk memperbarui kepemilikan

Untuk menyatakan bahwa toko atau penginstal memiliki paket aplikasi, sertakan tag update-ownership di XML sysconfig untuk setiap paket sebagai berikut:

<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. Jika paket diikutsertakan dalam kepemilikan update, penginstal atau toko istimewa lainnya harus menangani pemilik update dan mendapatkan izin pengguna untuk mengupdate aplikasi.

Memilih tidak ikut perubahan kepemilikan paket

Toko atau penginstal Anda dapat membatalkan keikutsertaan subset paket dari perubahan pemilik update dengan memberikan daftar yang ditolak di APK. Dengan menyertakan paket dalam daftar ini, tidak ada toko atau penginstal yang dapat meminta kepemilikan update paket.

Untuk memilih agar paket tidak dapat diupdate oleh toko atau penginstal lain:

  1. Sertakan properti berikut dalam file AndroidManifest.xml di toko atau penginstal asli:

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

    Contoh ini mereferensikan daftar yang tidak diizinkan XML bernama legacyOwnershipDenylist.

  2. Buat daftar yang ditolak sebagai resource XML mentah dengan format berikut:

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

Jika toko atau penginstal meminta kepemilikan paket dalam daftar yang ditolak, kepemilikan tidak akan diberikan dan paket tetap diinstal, tetapi tidak akan dimiliki oleh penginstal mana pun. Selain itu, terlepas dari penginstal, aplikasi dalam daftar yang ditolak tidak dapat dimiliki oleh siapa pun.

Kumpulan paket dalam daftar ini dapat berubah melalui update pada APK penginstal yang menyediakan daftar tersebut. Kepemilikan apa pun yang ditetapkan untuk paket yang kemudian dimasukkan ke daftar penolakan akan dihapus saat penginstal diupdate. Dengan demikian, update paket aplikasi berikutnya dalam daftar penolakan tidak akan memerlukan interaksi pengguna.

Menangani pemilik pembaruan dan mendapatkan izin pengguna

Dengan Android 14, meskipun penginstal aplikasi atau toko memiliki izin android.permission.INSTALL_PACKAGES, penginstal aplikasi atau toko tersebut tetap perlu menangani status STATUS_PENDING_USER_ACTION jika ingin mengupdate aplikasi yang update-nya dimiliki oleh penginstal atau toko lain.

Aplikasi contoh InstallAPKSessionApi.java juga menunjukkan cara menangani STATUS_PENDING_USER_ACTION.

Menetapkan kepemilikan untuk aplikasi yang dipramuat

Aplikasi yang sudah dimuat sebelumnya biasanya tidak dimiliki oleh penginstal tertentu. Sebagai gantinya, aplikasi yang sudah dimuat sebelumnya akan ditetapkan pemilik barunya menggunakan konfigurasi sistem seperti yang ditunjukkan di Mengikutsertakan paket untuk memperbarui kepemilikan.