Mengonfigurasi dan menangani kepemilikan update untuk aplikasi

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:

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

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