Danh sách cho phép UID dùng chung do nền tảng ký

Ứng dụng được ký trên nền tảng là những ứng dụng dùng chung cùng một chứng chỉ ký (hoặc chứng chỉ ký tương thích) với gói nền tảng (android). Ứng dụng được ký trên nền tảng có thể là ứng dụng hệ thống (nằm trên một phân vùng ảnh hệ thống) hoặc ứng dụng không phải hệ thống. Mã nhận dạng duy nhất dùng chung được ký trên nền tảng là mã nhận dạng duy nhất dùng chung (android:sharedUserId) chứa các ứng dụng được ký trên nền tảng. Bản dựng có thể gỡ lỗi là bản dựng có android.os.Build.isDebuggable() trả về true, chẳng hạn như bản dựng userdebug hoặc eng.

Trước đây, các nhà sản xuất thiết bị có rất ít quyền kiểm soát đối với việc ứng dụng không phải là ứng dụng hệ thống nào được nền tảng ký có thể tham gia vào một UID dùng chung do nền tảng ký. Kể từ Android 15, các nhà sản xuất có thể cho phép rõ ràng các ứng dụng không phải hệ thống đã ký bằng nền tảng tham gia các UID dùng chung đã ký bằng nền tảng trong các tệp XML cấu hình hệ thống trong thư mục /etc/sysconfig. Nếu một ứng dụng không phải là ứng dụng hệ thống được nền tảng ký không được thêm vào danh sách cho phép đối với một mã nhận dạng duy nhất dùng chung được nền tảng ký và ứng dụng vẫn cố gắng tham gia mã nhận dạng duy nhất dùng chung được nền tảng ký (với android:sharedUserId trong tệp kê khai), thì ứng dụng đó không thể cài đặt trên các bản dựng không gỡ lỗi.

Thêm danh sách cho phép

Bạn có thể liệt kê danh sách cho phép cho các ứng dụng trong một tệp XML duy nhất hoặc trong nhiều tệp XML, tương tự như frameworks/base/data/etc/package-shareduid-allowlist.xml:

<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.

- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
  -->

<config>
    <allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>

Tìm danh sách cho phép bị thiếu

Để tìm một mục bị thiếu trong danh sách cho phép, hãy thử cài đặt ứng dụng không phải ứng dụng hệ thống đã ký trên nền tảng của bạn trên một bản dựng không thể gỡ lỗi và kiểm tra xem ứng dụng đó có thể cài đặt hay không. Nếu không, bạn có thể kiểm tra nhật ký thiết bị để xem định dạng sau đây của thông báo cảnh báo:

Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}