Разрешения Android предоставляют элементы управления, которые повышают осведомленность пользователя и ограничивают доступ приложения к конфиденциальным данным. Настройка разрешений на Android 8.0 и ниже включает в себя список разрешений, без которого привилегированные приложения отключаются, даже если они находятся в пути priv-app
. На Android 9 и выше устройство, которое пытается использовать приложения, не внесенные в список разрешенных, не загрузится.
Android 10 представил концепцию роли , уникального имени в системе, связанного с определенными требованиями и привилегиями. Назначайте роли приложениям, чтобы предоставлять им разрешения для определенной цели, и настраивайте роли по умолчанию с помощью ресурсов конфигурации платформы.
Усиление защиты от потенциально вредоносных приложений (PHA) улучшает:
- Прозрачность потенциально вредоносного поведения приложений.
- Контроль пользователя над поведением приложения.
- Разработчики приложений используют конфиденциальные данные по своему усмотрению, защищенные разрешениями.
Установка пакета и разрешение
В Android 9 и ниже функции установки пакетов и управления разрешениями содержались в пакете PackageInstaller
( //packages/apps/PackageInstaller
). В Android 10 и выше функции управления разрешениями находятся в отдельном пакете PermissionController
( //packages/apps/PermissionController
). На рисунке 1 показано, где находятся два пакета в Android 10.

Рисунок 1. Функции установки пакетов и контроля разрешений в Android 10
Списки разрешений и доступ
В Android 6.0 и выше приложения запрашивают доступ к опасным разрешениям во время выполнения . В Android 10 добавлены разрешения во время выполнения распознавания активности (AR), которые предлагают пользователю изменить или разрешить опасные разрешения.
Android 8.0 требовал от вас явно разрешить привилегированные приложения в XML-файлах конфигурации системы в каталоге /etc/permissions
. В Android 9 и выше привилегированные разрешения должны быть разрешены , иначе устройство не сможет загрузиться.
Чтобы ограничить внутреннюю видимость API и предотвратить случайный доступ приложений к библиотекам платформы, в Android 7.0 появились пространства имен для собственных библиотек . Это отделяет системные библиотеки от библиотек приложений, и производители устройств могут добавлять собственные собственные библиотеки.
Начиная с Android 10 приложения должны иметь как разрешения на подпись, так и согласие пользователя на доступ к содержимому экрана устройства . Привилегированные приложения, которые полагаются на функциональность бесшумного захвата, например, создание снимка экрана, должны использовать вместо этого класс MediaProjection .
Android 15 требует, чтобы вы явно разрешили разрешения подписи платформы, запрашиваемые несистемными приложениями или вновь запрашиваемые обновлениями системных приложений, в XML-файлах конфигурации системы в каталоге /etc/permissions
.
Прозрачность и конфиденциальность
В Android 6.0 и выше заводской MAC-адрес устройства защищен от доступа со стороны поставщиков услуг Wi-Fi и анализаторов пакетов. Дополнительные ограничения, начиная с Android 10, ограничивают приложения от доступа к неизменяемым идентификаторам устройств (ID) , если они не включены в список разрешенных для привилегированных разрешений . (В разделе «Подключение» представлено соответствующее обсуждение идентификаторов устройств , поскольку это влияет на операторов.)
На Android 9 и ниже пользователи делают постоянный выбор при предоставлении доступа к местоположению приложениям. Начиная с Android 10, функция разрешений на местоположение в трех состояниях дает пользователям три варианта разрешения приложению доступа к местоположению устройства. Эти требования к разрешениям применяются к приложениям в Android 10 независимо от целевого SDK.
Настройте разрешения для других функций прозрачности и конфиденциальности, начиная с Android 10
- Напоминание о фоновом доступе к местоположению показывается пользователям, когда приложение получает доступ к местоположению их устройства, используя разрешение
ACCESS_FINE_LOCATION
в фоновом режиме. - Данные, связанные с контактами-сродством, управляемые компонентом Contacts Provider, доступны по-другому: приложения не могут записывать или читать данные о контактах-сродствах в базе данных. Это влияет на API, связанные с вызывающими абонентами .
Оптимизированные конфигурации
Настройки разрешений были оптимизированы для Android 6.0 и выше.
- Возможности окружения для служб, запущенных
init
сохраняют все аспекты конфигурации службы в одном файле.rc
. При настройке возможностей для служб, не запущенныхinit
, настройте возможности файловой системы с помощьюfs_config.c
. - Android 7.x и более ранние версии расширяют механизм идентификаторов Android (AID), используя специфичный для устройства файл
android_filesystem_config.h
для указания возможностей файловой системы и/или пользовательских идентификаторов AID производителя устройства. Android 8.0 и более поздние версии поддерживают новый метод расширения возможностей файловой системы . - В Android 8.0 обработка команд USB переместилась из скриптов
init
, специфичных для устройств (замена слоев HAL), в собственный демон USB. Интерфейс USB HAL должен быть реализован на каждом устройстве, запускаемом на Android 8.0 и выше.