Принцип работы Android OS и Android приложений


Приложения, которые создаются для работы в Android Studio, разрабатываются на языке Java и Kotlin. Во время компиляции, программный код, вместе со всей прочей необходимой информацией, а также со всеми файлами ресурсов, упаковывается в файл-архив, который носит имя Android Package. Расширение таких файлов носит тип *.apk. С помощью утилиты apt tool файл apk компилируется и упаковывается. Именно этот файл устанавливается среди мобильных устройств как программа для ОС Android. Один такой файл принадлежит коду одного приложения [1]. Для каждой отдельной программы выделен определенный процесс, в котором она выполняется. Выполнение этого процесса происходит под управлением ядра Linux. Также это ядро осуществляет управление памятью. Таким образом, код приложения выполняется в отдельности и независимо от всех других приложений. Когда есть необходимость выполнить программный код, в Android создается процесс. Процесс завершается, когда в нем больше нет необходимости и освобождаются системные ресурсы, которые требуются для работы других приложений. У каждого приложения есть уникальный ID Linux-пользователя [2]. Права доступа предоставляются так, чтобы файлы приложения оставались доступны только данному приложению и этому пользователю. Однако, есть способы, которые позволяют предоставлять эти же права доступа в другие приложения. К примеру, чтобы экономить системные ресурсы, существует возможность дублирования одного и того же пользовательского ID между двумя приложениями. Это означает, что они смогут видеть файлы друг друга. То есть, приложения с одинаковым ID можно запускать в одном и том же Linux-процессе [3]. 

Архитектура операционной системы Android

    Попробуем построить модель Android покомпонентно в виде иерархического дерева. В самом низу располагается ядро операционной системы, поскольку ядро является самой фундаментальной и базовой составляющей ОС.  
    Компонентная модель еще носит второе название, а именно программный стек. Уровни иерархии в данной модели взаимодействуют между собой, а действия выполняются последовательно. 
    Как описывалось выше, Андроид основан на ядре ОС Linux и поэтому на данном уровне рассмотрим именно его. Ядро Linux ответственно за функционирование и быстродействие системы, управление питанием и процессами, отвечает за безопасность, а также предоставляет сетевой стек и модель драйверов, формулирует задачи управления памятью и драйверов оборудования. Ядро также действует как один из способов сокрытия деталей реализации определенного набора функциональных возможностей между аппаратным обеспечением и программным стеком [4]. 
    Выше уровня ядра, как ПО промежуточного слоя, находится набор библиотек, который предназначен для обеспечения функционала для приложений на базовом уровне. То есть именно этот уровень отвечает за предоставление реализованных алгоритмов для вышележащих уровней, поддержку файловых форматов, осуществление кодирования и декодирования информации, отрисовку графики и многое другое [5]. 

Список литературы

  1.  Дэрси, Л. Android за 24 часа. Программирование приложений под операционную систему Google / Л. Дэрси, Ш. Кондер. – М: Изд-во Рид Групп, 2011. – 464 с.
  2. Иловайский, А. П. Обзор современных средств разработки приложений для операционной системы Android / А. П. Иловайский. – Воронеж: Научный вестник Воронежского государственного архитектурно-строительного университета. Серия: Информационные технологии в строительных, социальных и экономических системах. – 2016. – С.17-18. 
  3. Кабанов, В. В. Обзор сред разработки мобильных приложений под Android / В. В. Кабанов. – М, 2017. – С.205-208. 
  4. Михайлов, С. Ю. Обзор сред разработки мобильных приложений под ОС Android / С. Ю. Михайлов, Л. А. Ильина // Информатика и вычислительная техника. – Чебоксары. – 2017. – С. 110-113.
  5. Нотон, П. Java. Справочное руководство. Все, что необходимо для программирования на Java / П. Нотон. – М. : Бином, 2015. – 448 с.