Разрешения 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
в фоновом режиме. - Доступ к данным о привязке контактов, управляемым компонентом «Поставщик контактов», осуществляется иначе: приложения не могут записывать данные о привязке контактов в базе данных или читать их. Это влияет на 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 и выше.