Konfigurasikan dan tangani kepemilikan pembaruan untuk aplikasi, Konfigurasikan dan tangani kepemilikan pembaruan untuk aplikasi

Ketika suatu aplikasi dipasang oleh toko atau pemasang, toko atau pemasang tersebut dianggap sebagai "pemasang rekaman" yang berarti pemasang terakhir aplikasi tersebut. Sebelum Android 14, Android mengizinkan toko atau penginstal aplikasi lain untuk menjadi penginstal tercatat dan mengupdate aplikasi tanpa memberi tahu pengguna.

Di Android 14, penginstal awal suatu aplikasi dapat mendeklarasikan dirinya sebagai "pemilik pembaruan" dan memiliki pembaruan pada aplikasi tersebut. Jika penginstal lain mencoba memperbarui aplikasi, pengguna diberi kesempatan untuk menyetujui pembaruan baru sebelum melanjutkan.

Ikut serta dalam paket untuk memperbarui kepemilikan

Untuk mendeklarasikan bahwa toko atau penginstal memiliki paket aplikasi, sertakan tag update-ownership di XML sysconfig Anda 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 tersebut. Ketika sebuah paket diikutsertakan untuk memperbarui kepemilikan, penyimpanan atau penginstal dengan hak istimewa lainnya harus menangani pemilik pembaruan dan mendapatkan persetujuan pengguna untuk memperbarui aplikasi.

Menyisihkan paket dari perubahan kepemilikan

Anda dapat meminta toko atau penginstal Anda memilih sebagian paket dari perubahan pemilik pembaruan dengan memberikan daftar penolakan di APK. Dengan menyertakan sebuah paket dalam daftar ini, tidak ada toko atau penginstal yang dapat meminta pembaruan kepemilikan paket tersebut.

Untuk memilih agar paket tidak dapat diperbarui oleh toko atau pemasang lain:

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

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

    Contoh ini mereferensikan daftar penolakan XML yang disebut legacyOwnershipDenylist .

  2. Buat daftar penolakan sebagai sumber daya 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 pada daftar yang ditolak, kepemilikan tidak akan diberikan dan paket tersebut tetap diinstal tetapi tidak akan dimiliki oleh penginstal mana pun. Selain itu, apa pun penginstalnya, aplikasi yang berada dalam daftar penolakan tidak dapat dimiliki oleh siapa pun.

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

Tangani pemilik pembaruan dan dapatkan persetujuan pengguna

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

Aplikasi contoh InstallAPKSessionApi.java juga menunjukkan cara menangani STATUS_PENDING_USER_ACTION .

Tetapkan kepemilikan untuk aplikasi yang dimuat sebelumnya

Aplikasi yang dimuat sebelumnya biasanya tidak dimiliki oleh penginstal tertentu. Sebaliknya, aplikasi yang dimuat sebelumnya akan diberi pemilik baru menggunakan konfigurasi sistem seperti yang ditunjukkan dalam Paket ikut serta untuk memperbarui kepemilikan .