Định cấu hình và xử lý quyền sở hữu bản cập nhật cho ứng dụng, Định cấu hình và xử lý quyền sở hữu bản cập nhật cho ứng dụng

Khi một ứng dụng được cài đặt bởi cửa hàng hoặc trình cài đặt, cửa hàng hoặc trình cài đặt được coi là "trình cài đặt bản ghi" nghĩa là trình cài đặt cuối cùng của ứng dụng. Trước Android 14, Android đã cho phép một cửa hàng hoặc trình cài đặt ứng dụng khác trở thành trình cài đặt chính thức và cập nhật ứng dụng mà không cần thông báo cho người dùng.

Trong Android 14, trình cài đặt ban đầu của ứng dụng có thể tự khai báo là "chủ sở hữu bản cập nhật" và sở hữu các bản cập nhật cho ứng dụng đó. Nếu một trình cài đặt khác cố gắng cập nhật ứng dụng, người dùng sẽ có cơ hội phê duyệt bản cập nhật mới trước khi tiếp tục.

Chọn tham gia các gói để cập nhật quyền sở hữu

Để khai báo rằng cửa hàng hoặc trình cài đặt sở hữu gói ứng dụng, hãy bao gồm thẻ update-ownership trong XML sysconfig của bạn cho mỗi gói như sau:

<update-ownership package="com.example.application" installer="com.example.installer" />

Trong ví dụ này, com.example.application là gói ứng dụng được sở hữu và com.example.installer là chủ sở hữu của gói. Khi một gói được chọn tham gia cập nhật quyền sở hữu, các cửa hàng hoặc trình cài đặt đặc quyền khác phải xử lý chủ sở hữu bản cập nhật và nhận được sự đồng ý của người dùng để cập nhật ứng dụng.

Chọn các gói không thay đổi quyền sở hữu

Bạn có thể yêu cầu cửa hàng hoặc trình cài đặt của mình chọn một tập hợp con các gói không nằm trong danh sách thay đổi của chủ sở hữu bản cập nhật bằng cách cung cấp danh sách từ chối trong APK. Bằng cách đưa một gói vào danh sách này, không cửa hàng hoặc trình cài đặt nào có thể yêu cầu quyền sở hữu cập nhật đối với gói đó.

Để chọn không cho cửa hàng hoặc trình cài đặt khác cập nhật các gói:

  1. Bao gồm thuộc tính sau trong tệp AndroidManifest.xml của cửa hàng hoặc trình cài đặt ban đầu:

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

    Ví dụ này tham chiếu đến danh sách từ chối XML có tên là legacyOwnershipDenylist .

  2. Tạo danh sách từ chối dưới dạng tài nguyên XML thô với định dạng sau:

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

Nếu cửa hàng hoặc trình cài đặt yêu cầu quyền sở hữu gói trong danh sách từ chối, quyền sở hữu sẽ không được cấp và gói vẫn được cài đặt nhưng sẽ không thuộc sở hữu của bất kỳ trình cài đặt nào. Hơn nữa, bất kể trình cài đặt là gì, bất kỳ ai cũng không thể sở hữu một ứng dụng trong danh sách từ chối.

Tập hợp các gói trong danh sách này có thể thay đổi thông qua bản cập nhật cho APK trình cài đặt cung cấp danh sách. Mọi quyền sở hữu được đặt cho gói sau đó được đưa vào danh sách từ chối sẽ bị xóa khi trình cài đặt được cập nhật. Do đó, các bản cập nhật tiếp theo của gói ứng dụng trong danh sách từ chối sẽ không yêu cầu sự tương tác của người dùng.

Xử lý chủ sở hữu cập nhật và nhận được sự đồng ý của người dùng

Với Android 14, ngay cả khi cửa hàng hoặc trình cài đặt ứng dụng có quyền android.permission.INSTALL_PACKAGES , nó vẫn cần xử lý trạng thái STATUS_PENDING_USER_ACTION nếu muốn cập nhật một ứng dụng có bản cập nhật thuộc sở hữu của một cửa hàng hoặc trình cài đặt khác.

Ứng dụng mẫu InstallAPKSessionApi.java cũng hiển thị cách xử lý STATUS_PENDING_USER_ACTION .

Thiết lập quyền sở hữu cho các ứng dụng được tải sẵn

Các ứng dụng tải sẵn thường không thuộc quyền sở hữu của một trình cài đặt cụ thể. Thay vào đó, các ứng dụng tải sẵn sẽ được chỉ định chủ sở hữu mới bằng cách sử dụng cấu hình hệ thống như được hiển thị trong gói Opt in to update owner .