Arhn - архитектура программирования

Как UID приложения определяется во время установки в Android?

Следующая ссылка дает краткое описание процесса установки пакета в Android.

http://java.dzone.com/articles/depth-android-package-manager

Мне любопытно узнать, как определяется UID приложения во время его установки на основе набора разрешений, присутствующих в его файле манифеста.

Также есть файл platform.xml (в каталоге /frameworks/base/data/etc для исходного кода 4.0 ICS), который содержит список разрешений со связанными с ними gid. В описании сказано

Следующие теги связывают низкоуровневые идентификаторы групп с именами разрешений. Указав такое сопоставление, вы говорите, что любой процесс приложения, которому предоставлено данное разрешение, также будет работать с данным идентификатором группы, прикрепленным к его процессу, поэтому он может выполнять любые операции с файловой системой (чтение, запись, выполнение), разрешенные для этой группы.

Аналогичным образом существует список разрешений высокого уровня, назначенных для определенных uid.

Мой вопрос: когда приложение установлено с разрешениями X, Y, Z, как указан его доступ, это из сопоставления с этой платформы.xml

Кроме того, каждый раз, когда приложение запускается, сопоставление происходит в каждый момент (это не кажется правильным из первоначального дизайна Android, где разрешения приложения не могут быть изменены, если нет обновления). Итак, если это так, где он хранит информацию о том, что это приложение должно работать с таким-то доступом или таким-то uid.

Надеюсь, я ясно изложил свой вопрос, дайте мне знать, если вам нужна дополнительная информация. Я просто пытаюсь узнать больше о том, как работают внутренности ОС Android.

Спасибо


  • Ссылка в вопросе не работает, я считаю, что это фактическая ссылка: dzone.com/ статьи/глубина-менеджер-пакетов-android 25.09.2020
  • да, эта ссылка говорит, что есть шаг «Определить UID приложения». Где код этого шага? то есть как uid назначается данному пакету? 28.05.2021

Ответы:


1

UID приложения не зависит от набора запрошенных разрешений. В общем случае PackageManager при установке присваивает приложению из набора [FIRST_APPLICATION_UID; LAST_APPLICATION_UID] уникальный UID (на самом деле этот процесс немного изменился с введением многопользовательской поддержки):

Система Android назначает уникальный идентификатор пользователя (UID) каждому приложению Android и запускает его от имени этого пользователя в отдельном процессе.

То, о чем вы говорите, — это ограниченный набор GID (идентификаторов групп), который назначается приложению на основе разрешений. Например, для ограничения доступа приложений к сетевому интерфейсу в ядро ​​Linux добавлен специальный патч, который позволяет процессу создавать сетевые сокеты только при наличии у этого процесса жестко запрограммированного GID. Таким образом, при установке приложения, если пользователь принимает разрешение "android.permission.INTERNET", PackageManager присваивает этому приложению специальный GID (на основе значений в файле platform.xml). Во время запуска этого приложения процессу этого приложения присваивается значение. Таким образом, процесс приложения получает право создавать сокеты.

Другие разрешения применяются на уровне Android Framework.

08.01.2014
  • Большое спасибо имеет больше смысла. Итак, после того, как gid назначен приложению, будут ли они храниться где-нибудь для более быстрого поиска при каждом вызове приложения? Или они снова будут вычисляться на лету на основе разрешений, которые приложение имеет в своем файле манифеста? Я просто пытаюсь выяснить, где будет отображаться gid при вызове приложения. Заранее спасибо еще раз Юрий. 09.01.2014
  • Насколько я помню, в PackageManager есть кеш, в котором хранится информация о гидах. Таким образом, при вызове эта информация берется из этого кеша и используется для установки gid для процесса Zygote. 10.01.2014

  • 2

    Разрешение, запрошенное приложением, влияет только на GID, но не на UID приложения. Вам может быть интересно проверить эта статья для всех вещей uid и gid.

    11.09.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..