Mengonfigurasi dan menangani kepemilikan update untuk aplikasi

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:

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