Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release thay vì aosp-main để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Ứng dụng được ký bằng nền tảng là những ứng dụng dùng chung cùng một chứng chỉ ký (hoặc tương thích) với gói nền tảng (android). Ứng dụng được ký bằng nền tảng có thể là ứng dụng hệ thống (nằm trên phân vùng hình ảnh hệ thống) hoặc ứng dụng không phải hệ thống. Quyền chữ ký nền tảng là các quyền do gói nền tảng xác định và cũng có cấp độ bảo vệ signature. Bản dựng có thể gỡ lỗi là các 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, nhà sản xuất thiết bị có rất ít quyền kiểm soát đối với việc cấp quyền signature của nền tảng cho các ứng dụng không phải hệ thống được ký bằng nền tảng.
Kể từ Android 15, nhà sản xuất có thể cấp quyền ký nền tảng một cách rõ ràng trong các tệp XML cấu hình hệ thống trong thư mục /etc/permissions. Nếu một ứng dụng không phải hệ thống được ký bằng nền tảng không được thêm vào danh sách cho phép cho quyền chữ ký nền tảng, thì quyền đó sẽ hoạt động như thể ứng dụng không được ký bằng nền tảng 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 quyền cho ứng dụng trong một tệp XML hoặc trong nhiều tệp XML nằm trong thư mục frameworks/base/etc/permissions:
Không có quy tắc nghiêm ngặt nào áp dụng cho cách sắp xếp nội dung. Người triển khai thiết bị có thể xác định cấu trúc nội dung miễn là các ứng dụng thích hợp và quyền của các ứng dụng đó được thêm vào danh sách cho phép.
Tuỳ chỉnh danh sách cho phép
AOSP bao gồm một cách triển khai danh sách cho phép mà bạn có thể tuỳ chỉnh nếu cần, tương tự như danh sách cho phép quyền đặc quyền. Ví dụ:
Để tìm các quyền bị thiếu, hãy cài đặt ứng dụng đã ký trên nền tảng và kiểm tra nhật ký thiết bị theo định dạng sau của thông báo cảnh báo:
Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist
Hệ thống vẫn có thể cấp quyền trên các bản dựng có thể gỡ lỗi, nhưng không cấp quyền trên các bản dựng không thể gỡ lỗi như bản dựng user.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Signature permission allowlist\n\nPlatform signed apps are apps sharing the same (or compatible) signing\ncertificate with the platform package (`android`). A platform signed app can be\na system app (located on a system image partition), or a nonsystem app.\nPlatform signature permissions are permissions defined by the platform package\nthat also have the `signature` protection level. Debuggable builds are builds\nwhose `android.os.Build.isDebuggable()` return `true`, such as `userdebug` or\n`eng` builds.\n| **Note:** On this page, `/etc/permissions` resolves to \u003cvar translate=\"no\"\u003epartition\u003c/var\u003e`/etc/permissions`.\n\nHistorically, device manufacturers had little control over which platform\n`signature` permissions could be granted to platform signed nonsystem apps.\nStarting in Android 15, manufacturers can explicitly\ngrant platform signature permissions in the system configuration XML files in\nthe `/etc/permissions` directory. If a platform signed nonsystem app isn't\nadded to the allowlist for a platform signature permission, that permission acts\nas if the app isn't platform signed on nondebuggable builds.\n| **Note:** The allowlist isn't enforced on debuggable builds to facilitate easier testing.\n| **Note:** platform signed system apps and their requested permissions aren't affected by this change, however permissions newly requested by a system app update (but not requested by the original system app) still need to be added to the allowlist.\n\nAdd an allowlist\n----------------\n\nYou can list permission allowlists for apps in a single XML file or in multiple\nXML files located in the `frameworks/base/etc/permissions` directory:\n\n- `/etc/permissions/signature-permissions-`\u003cvar translate=\"no\"\u003eOEM_NAME\u003c/var\u003e`.xml`\n- `/etc/permissions/signature-permissions-`\u003cvar translate=\"no\"\u003eDEVICE_NAME\u003c/var\u003e`.xml`\n\nNo strict rule applies to how content is organized. Device implementers can\ndetermine content structure as long as the appropriate apps and their\npermissions are added to the allowlist.\n\nCustomize an allowlist\n----------------------\n\nAOSP includes an allowlist implementation that you can customize as needed,\nsimilar to the\n[privileged permission allowlist](/docs/core/permissions/perms-allowlist). For\nexample: \n\n \u003c!--\n ~ This XML file declares which platform signature permissions to grant to\n ~ platform signed nonsystem apps.\n --\u003e\n\n \u003cpermissions\u003e\n \u003csignature-permissions package=\"com.android.example\"\u003e\n \u003cpermission name=\"android.permission.READ_DEVICE_CONFIG\"/\u003e\n ...\n \u003c/signature-permissions\u003e\n ...\n \u003c/permissions\u003e\n\nFind missing permissions\n------------------------\n\nTo find missing permissions, install your platform signed app and inspect device\nlogs for the following format of warning messages: \n\n Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist\n\nThe system can still grant the permission on debuggable builds, but not on\nnondebuggable builds such as `user` builds."]]