Mengonfigurasi dan menangani kepemilikan update untuk aplikasi

Jika aplikasi diinstal oleh app store atau penginstal, app store atau penginstal dianggap sebagai "installer data" yang berarti penginstal terakhir aplikasi. Sebelum Android 14, Android mengizinkan app store atau penginstal aplikasi lain untuk menjadi penginstal data dan mengupdate aplikasi tanpa memberi tahu pengguna.

Di Android 14, penginstal awal aplikasi dapat mendeklarasikan dirinya sebagai "pemilik update" dan memiliki update untuk aplikasi. Jika penginstal lain mencoba mengupdate aplikasi, pengguna diberi kesempatan untuk menyetujui update baru sebelum melanjutkan.

Memilih paket untuk memperbarui kepemilikan

Untuk mendeklarasikan bahwa toko atau penginstal memiliki paket aplikasi, sertakan tag update-ownership dalam 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. Saat paket diikutsertakan untuk memperbarui kepemilikan, app store atau penginstal dengan hak istimewa lainnya harus menangani pemilik update dan mendapatkan izin pengguna untuk mengupdate aplikasi.

Memilih paket agar tidak ikut 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 pembaruan kepemilikan paket.

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

  1. 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.

  2. 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 penginstal meminta kepemilikan paket dalam daftar tolak, kepemilikan tidak akan diberikan dan paket tetap terinstal, tetapi tidak akan dimiliki oleh penginstal mana pun. Selain itu, terlepas dari penginstalnya, 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. Setiap kepemilikan yang ditetapkan untuk paket yang kemudian dimasukkan ke daftar tolak akan dihapus saat penginstal diupdate. 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 yang dipramuat

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.