Операционная система Anroid. Как устроена операционная система андроид Функционирует под управлением ос android

💖 Нравится? Поделись с друзьями ссылкой

В этой статье мы рассмотрим архитектуру Android-приложений.

Откровенно говоря, официальную Google по этой теме я считаю не очень полезной. Детально отвечая на вопрос «как», она совсем не объясняет «что» и «почему». Итак, вот моя версия, и, я надеюсь, она внесёт некоторую ясность. Да, кстати, я полностью одобряю чтение статей Google, поскольку они содержат полезную информацию, повторять которую я не собираюсь.

Архитектура ОС Android - немного истории

Как это часто бывает в IT, многие вещи не могут быть объяснены в отрыве от истории возникновения конкретного программного обеспечения. Вот почему мы должны обратиться к истокам ОС Android.

Разработка ОС Android была начата в 2003 молодой компанией Android Inc. В 2005 году эта компания была куплена Google. Я считаю, что главные особенности архитектуры Android были определены именно в этот период. Это заслуга не только Android Inc; архитектурные концепции и финансовые ресурсы Google оказали решающее влияние на архитектуру Android. Далее я приведу несколько примеров.

Если вы помните, 2003-2005 года были ознаменованы повышенным вниманием к AJAX приложениям. Я думаю, это оказало основополагающее влияние на архитектуру Android: во многих аспектах она ближе к архитектуре типичного AJAX приложения, нежели к десктопному GUI приложению, написанному на Java, C#, C++, VB и тп.

Не знаю, почему так произошло. Моя догадка - это придумал кто-то из Google в тот период, когда насыщенные интернет-приложения (Rich Internet Applications, RIA) в духе Google Docs или Gmail считались решением всех проблем. По-моему, эту идею нельзя назвать ни плохой, ни хорошей. Просто помните, что Android-приложения очень сильно отличаются от десктопных.

Влияние архитектурной философии Eclipse заметно в выборе принципа реализации GUI, который больше похоже на SWT, нежели на Swing.

В стандартах оформления кода Android присутствует «венгерская нотация», рождённая в стенах MS. Можно предположить, что тот, кто писал эти стандарты, ранее занимался разработкой под Windows.

Архитектурные уровни Android
Операционная система Android имеет три весьма различных и сильно отделённых друг от друга уровня:
  1. В основе лежит модифицированная и урезанная версия Linux, как я и упоминал в одной из моих предыдущих статей .
  2. Над уровнем Linux находится уровень инфраструктуры приложения, содержащий виртуальную машину Dalvik , веб-браузер, базу данных SQLite , некие инфраструктурные «костыли» и Java API.
  3. И, наконец, уровень написанных в Google Android-приложений. Вообще говоря, они являются расширением уровня инфраструктуры, поскольку разработчик может использовать эти приложения или их части как строительные блоки для собственных разработок.
Рассмотрим эти слои один за другим и более подробно.

Уровень Linux

Представьте себе, что вы - архитектор в молодой компании. Вы должны разработать ОС для нового типа устройств. Что вы будете делать?

Грубо говоря, у вас два пути: реализовывать собственные идеи, начав с нуля или же использовать существующую ОС и адаптировать её под свои устройства.

Реализация с нуля всегда звучит захватывающе для программистов. В эти моменты мы все верим в то, что в этот раз мы всё сделаем лучше, чем делают другие, и даже лучше, чем мы сами делали ранее.

Тем не менее, это не всегда практично. Например, использование ядра Linux заметно уменьшило стоимость разработки (возможно где-то и без того чрезмерно большую). Согласитесь, если кто-то решит создать нечто, напоминающее ядро Linux в его сегодняшнем состоянии, ему потребуется несколько миллионов долларов.

Если вы руководите Android Inc, то у вас по определению не может быть столько денег. Если вы руководите Google, то у вас такие деньги найдутся, но вы, скорее всего, подумаете дважды, прежде чем потратить их на создание собственной ОС. Так же вы потратите несколько лет, прежде чем достигните сегодняшнего состояния Linux; несколько лет задержки могут стать слишком большим опозданием при выходе на рынок.

В подобной ситуации компания Apple решила построить Mac OS на основе Free BSD. Android Inc приняла решение использовать Linux как основу для Android. Исходники как Free BSD, так и Linux, находятся в свободном доступе и предоставляют собой хорошую основу для любых разработок, будь то Apple или Google.

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

Если рассматривать Linux на высоком уровне, то это комбинация ядра (без которого нельзя обойтись) и множества других, необязательных частей. Можно даже запустить одно ядро, без чего бы то ни было ещё. Так, Google вынуждена в любом случае использовать ядро Linux как часть ОС Android. Кроме того, были рассмотрены необязательные части и из них выбрано самое необходимое. Например, были добавлены сетевой фаервол IPTables и оболочка Ash. Любопытно, что добавили именно Ash, а не Bash, не смотря на то, что последний на порядок мощнее; вероятно, это решение было основано на том, что Ash менее требователен к ресурсам.

Разработчики Android модифицировали ядро Linux, добавив поддержку железа, используемого в мобильных устройствах и, чаще всего, недоступного на компьютерах.

Выбор Linux в качестве основы оказал огромное влияние на все аспекты ОС Android. Сборка Android, по сути, есть вариация процесса сборки Linux. Код Android находится под управлением git (инструмент, разработанный для управления кодом Linux). И так далее.

Пускай это всё и интересно, но вы, скорее всего, никогда не коснётесь всех этих специфических моментов до тех пор, пока ваша цель просто разработать приложения под Android. Исключение может составить разве что обзор файловой системы с помощью команд ash. Главное, что вы должны знать, разрабатывая приложения под Android - это уровень инфраструктуры приложения.

Вы можете спросить, как же быть, если необходимо разработать нативное приложение для Android? Google настоятельно не рекомендует делать этого. Технически, конечно, это возможно, но в дальнейшем у вас не будет возможности распространять это приложение нормальным способом. Так что подумайте дважды, прежде чем начать нативную разработку под Android, если конечно, вы не работает над Android Open Source Project (AOSP), т.е. собственно ОС Android.

Уровень инфраструктуры приложения

Несмотря на некоторое сходство Apple iOS и Android ОС, существуют значительные отличия между архитектурными решениями на инфраструктурном уровне обоих ОС.

Apple решила использовать Objective-C как язык программирования и среду выполнения приложения iOS. Objective-C выглядит более или менее естественным выбором для ОС, в основе которой лежит Free BSD. Можно рассматривать Objective-C как обычный C++ с кастомным препроцессором, который добавляет некоторые специфические лингвистические конструкции. Почему же нельзя использовать стандартный C++, на котором написана Free BSD? Мне кажется причина в том, что Apple старается всё делать в своём, «эппловском» стиле.

Основная идея в том, что приложения iOS написаны более или менее на том же языке, что и стоящая за ними ОС.

Android-приложения сильно отличаются в этом смысле. Они написаны на Java, а это совсем другая технология, нежели C++ (хотя синтаксис и унаследован от C++).

Я думаю, основная причина состоит в необходимости одному и тому же приложению работать на различном аппаратном обеспечении. Эта проблема имеет место лишь для ОС Android; у ребят из Apple такой проблемы нет. iOS работает только на оборудовании собственного производства, и Apple полностью контролирует весь процесс. Для Android же всё наоборот: Google не контролирует производителей аппаратных средств. Например, ОС Android работает на процессорах с архитектурой x86, ARM и Atom (в комментах подсказывают, что x86 включает в себя Atom, и Android работает на x86, ARM, PPC и MIPS - примечание переводчика ). На бинарном уровне эти архитектуры несовместимы.

Если бы архитекторы ОС Android выбрали тот же путь, что и архитекторы из Apple, разработчики приложений под Android были бы вынуждены распространять несколько версий одного и того же приложения одновременно. Это стало бы серьёзной проблемой, которая могла бы привести к краху всего проекта Android.

Для того, чтобы одно и то же приложение могло работать на разном аппаратном обеспечении, компания Google использовала контейнер-ориентированную архитектуру (container-based architecture). В такой архитектуре двоичный код выполняется программным контейнером и изолируется от деталей конкретного аппаратного обеспечения. Примеры всем знакомы - Java и C#. В обоих языках двоичный код не зависит от специфики аппаратного обеспечения и выполняется виртуальной машиной.

Конечно, есть и другой способ достигнуть независимости от аппаратного обеспечения на уровне двоичного кода. Как один из вариантов, можно использовать эмулятор аппаратного обеспечения, так же известный как QEMU . Он позволяет эмулировать, например, устройство с процессором ARM на платформе x86 и так далее. Google могла бы использовать C++ как язык для разработки приложений внутри эмуляторов. Действительно, Google использует такой подход в своих эмуляторах Android, которые построены на основе QEMU.

Очень хорошо, что они не пошли по такому пути, поскольку тогда кому-то пришлось бы запускать ОС на эмуляторе, требующем намного больше ресурсов, и, как итог, скорость работы снизилась бы. Для достижения наилучшего быстродействия эмуляция была оставлена только там, где этого нельзя было избежать, в нашем случае - в Android-приложениях.

Как бы то ни было, компания Google пришла к решению использовать Java как основной язык разработки приложений и среды их выполнения.

Я думаю, это было критически важное архитектурное решение, которое поставило Android в стороне от остальных мобильных ОС на основе Linux, представленных в настоящее время. Насколько мне известно, ни у одной из них нет совместимости двоичного кода на уровне приложений. Возьмём для примера MeeGo . Она использует C++ и фреймворк Qt ; не смотря на то, что Qt кроссплатформенный, необходимость делать разные сборки для разных платформ не исчезает.

Выбрав Java, нужно было решить, какую виртуальную машину (JVM) использовать. Ввиду ограниченности ресурсов использование стандартной JVM было затруднено. Единственным возможным выбором было использование Java ME JVM, разработанной для мобильных устройств. Однако счастье Google было бы неполным без разработки собственной виртуальной машины, и появилась Dalvik VM .

Dalvik VM отличается от других виртуальных Java-машин следующим:

  • Она использует специальный формат DEX для хранения двоичных кодов, в противовес форматам JAR и Pack200, которые являются стандартом для других виртуальных Java-машинах. Компания Google заявила, что бинарники DEX меньше, чем JAR. Я думаю, с тем же успехом они могли бы использовать Pack200, но они решили пойти своим путём.
  • Dalvik VM оптимизирована для выполнения нескольких процессов одновременно.
  • Dalvik VM использует архитектуру, основанную на регистрах против стековой архитектуры в других JVM, что приводит к увеличению скорости выполнения и уменьшению размеров бинарников.
  • Она использует собственный набор инструкций (а не стандартный байткод JVM)
  • Возможен запуск (если необходимо) нескольких независимых Android-приложений в одном процессе
  • Выполнение приложения может охватывать несколько процессов Dalvik VM «естественным образом» (позже мы обсудим, что это значит). Для поддержи этого добавлено:
    • Специальный механизм сериализации объектов, основанный на классах Parcel и Parcelable. Функционально преследуются те же цели, что и Java Serializable, но в результате данные имеют меньший объём и потенциально более терпимы к версионным изменениям классов.
    • Особый способ для выполнения вызовов между процессами (inter process calls, IPC), основный на Android Interface Definition Language (AIDL).
  • До Android 2.2 Dalvik VM не поддерживала JIT-компиляцию, что было серьёзным ударом по производительности. Начиная с версии 2.2, скорость выполнения часто используемых приложений заметно возросла .
Ребята из Google также пересмотрели стандартные пакеты Java JDK API. Они удалили некоторые из них (например всё, что касалось Swing) и добавили некоторое количество собственных - их имя начинается с «android».

Также они добавили несколько пакетов с открытым кодом, не являющихся частью стандартного JDK: Bouncy Castle crypto API, HTTPClient с поддержкой разделения HTTP/HTTPS на стороне клиента.

Также Google добавила веб-браузер в уровень инфраструктуры приложения. Это не полноценный Google Chrome для мобильных устройств, но очень близок к нему, поскольку основан на том же движке WebKit и использует движок JavaScript из Chrome. В конце концов, это крайне современный и высокотехнологичный браузер. Он может быть интегрирован в любые Android-приложения.

На сегодня это всё. В следующей статье мы сосредоточим внимание на архитектуре Android-приложений.

Апдейт от переводчика. В оригинале использовалась не совсем верная терминология. Спасибо всем тем, кто указал на эти ошибки.

Операционная система Androidсостоит из набора компонентов таких как приложения, каркас приложения, библиотеки, среды исполнения и ядра линукс. На Рисунок представлена диаграмма основных компонентов операционной системы Android .

Рисунок 2.1 - Основные компоненты ОС Android

Уровень приложений

В состав ОС Android входит комплект базовых приложений: клиенты электронной почты и SMS, календарь, различные карты, браузер, программа для управления контактами и многое другое. Все приложения, запускаемые на платформе Android, написаны на языке Java.

Уровень каркаса приложений

ОС Android позволяет полностью использовать API, используемый в приложениях ядра. Архитектура построена таким образом, что любое приложение может использовать уже реализованные возможности другого приложения при условии, что последнее откроет доступ на использование своей функциональности. Таким образом, архитектура реализует принцип многократного использования компонентов ОС и приложений.

Основой всех приложений является набор систем и служб:

    менеджер действий (Activity Manager ) управляет жизненным циклом приложений и предоставляет систему навигации по истории работы с действиями;

    контент-провайдеры (Content Providers ) – это службы, которые позволяют приложениям получать доступ к данным других приложений, а также предоставлять доступ к своим данным;

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

    менеджер ресурсов (Resource Manager ) предназначен для доступа к строковым, графическим и другим типам ресурсов;

    менеджер извещений (Notification Manager ) позволяет любому приложению отображать пользовательские уведомления в строке статуса.

Уровень библиотек

Платформа Android включает набор C/C++ библиотек, используемых различными компонентами ОС. Для разработчиков доступ к функциям этих библиотек реализован через использование ApplicationFramework. Ниже представлены некоторые из них:

    System C library - BSD-реализация стандартной системной библиотеки C (libc) для встраиваемых устройств, основанных на Linux;

    Media Libraries – библиотеки, основанные наPacketVideo‘sOpenCORE, предназначенные для поддержки проигрывания и записи популярных аудио- и видео- форматов (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG и т.п.);

    LibWebCore – ядро встроенного web-браузера;

    Surface Manager – менеджер поверхностей управляет доступом к подсистеме отображения 2D- и 3D- графических слоев;

    SGL (ScalableGraphicsLibrary) – библиотека для работы с 2D-графикой, основанная на библиотеке SDL (SimpleDirectMediaLayer);

    3D libraries – библиотеки для работы с 3D-графикой, основанные наOpenGLES 1.0 API;

    FreeType – библиотека, предназначенная для работы со шрифтами.

    SQLite – легковесная реляционная система управления базами данных.

Уровень среды исполнения

В состав ОС Android входит набор библиотек ядра, которые предоставляют большую часть функциональности библиотек ядра языка Java.

Платформа использует оптимизированную, регистр-ориентированную виртуальную машину Dalvik, в отличии от которой стандартная виртуальная машина Java– стек-ориентированная. Каждое приложение запускается в своем собственном процессе, со своим собственным экземпляром виртуальной машины. Виртуальная машина Dalvik использует формат DalvikExecutable(*.dex), оптимизированный для минимального использования памяти приложением. Это обеспечивается такими базовыми функциями ядра Linux, как организация поточной обработки и низкоуровневое управление памятью. Байт-кодJava, на котором написаны ваши приложения, компилируются в dex-формат при помощи утилиты dx, входящей в состав SDK.

Уровень ядра Linux

ОС Android основана на ОС Linux версии 2.6, тем самым платформе доступны системные службы ядра, такие как управление памятью и процессами, обеспечение безопасности, работа с сетью и драйверами. Также ядро служит слоем абстракции между аппаратным и программным обеспечением .

Файловые менеджеры на Android могут быть удобным инструментом для организации хранения данных в вашем смартфоне, но сама структура Android (или ее кажущееся отсутствие) c непривычки может показаться несколько запутанной. Данные приложений, картинки, музыка – и доступ к этому всему из одной корневой папки – это несколько иной подход к иерархической структуре, чем то, к чему привыкли пользователи ПК и Mac, и подход этот дает пользователям намного больше возможностей, чем iOS.

В Android вы не сможете получить доступ к глубоко спрятанным системным файлам через обычный файловый менеджер или с помощью подключения к ПК. Но это не значит, что вы можете удалить по своей прихоти любой файл, какой захотите. Давайте посмотрим, как организованы типичные папки в памяти устройства, для чего они нужны и что из этого вы можете удалить, а что нет.

Иерархия памяти устройства на Android

Поскольку Android – это операционная система на базе Linux, в вашем телефоне файловая система также организована по принципу Linux. В этой системе на каждом устройстве есть шесть основных разделов: boot, system, recovery, data, cache и misc. Карты памяти microSD также имеют собственную иерархию памяти. Устройства, несущие на борту Android 7.0 Nougat, получили возможность непрерывного обновления за счет того, что в пару к системному разделу создается второй и один из них в фоне обновляется, а при перезагрузке происходит переключение, позволяющее обновленной системе заработать.

Вот краткое описание того, что содержится в каждой папке.

  • boot – Эта папка содержит ядро, виртуальный диск и др., то есть то, что требуется для загрузки телефона, когда вы его включаете.
  • system – Папка system содержит файлы операционной системы (также известные как образ системы), которые включают в себя также графический интерфейс Android и предустановленные приложения.
  • recovery – Альтернативная возможность загрузить ОС, программы из папки recovery позволяют пользователю делать бэкапы других папок и восстанавливать их.
  • data – Папка data сохраняет информацию пользователя, от контактов и сообщений до приложений и музыки, и вот к этому разделу вы имеете доступ через файловый браузер. После сброса до заводских настроек этот раздел стирается.
  • cache – Android хранит здесь часто используемые данные и компоненты приложений. Этот раздел может быть стерт для устранения определенных проблем и автоматически восстановлен и обновлен со временем.
  • misc – Этот раздел содержит другую важную информацию о настройках системы, такую как конфигурация USB, настроек сети вашего оператора и другие аппаратные настройки, которые в графическом интерфейсе отображаются в виде переключателей вкл./выкл.

Без root–прав пользователи Android могут иметь доступ только к разделу с данными, который открывается вам, когда вы подключаете устройство к своему ПК или используете файловый браузер. Если память вашего телефона может быть расширена при помощи карты, память карты также включается в этот раздел с данными, доступными через ПК или просмотрщик файлов.

Обычно у вас есть доступ только данным приложений, которые хранятся в разделе пользовательских данных. Для доступа к остальной памяти вам потребуются root-права

Приложения и папки в разделе данных

Итак, бегло окинув взглядом основные папки, мы отметили, что у нас нет доступа к загрузочным файлам , файлам восстановления и или системным файлам Android , когда мы просто просматриваем файлы при помощи браузера. Из чего следует утешительный вывод: нельзя просто так взять и вызвать своими действиями крах системы. Совсем другая ситуация возникает, когда у вас есть root-права. Так или иначе, с тем, что хранится в данном разделе, надо быть поаккуратнее: определенные приложения могут задействовать данные, которые здесь сохранены, и перемещение или удаление их может повлечь за собой нестабильную работу системы.

Теперь давайте посмотрим, что находится в разделе данных на вашем устройстве. Для того, чтобы это было возможно, в телефонах с Android версий Marshmallow или Nougat есть свой файловый менеджер, который дает доступ ко всему разделу. Эту опцию можно найти в меню Настройки- Память-Накопитель-Другое. Ряд аппаратов на более старых версиях Android могут иметь, а могут не иметь собственный файловый менеджер, зависит от производителя.

В качестве альтернативы есть множество сторонних приложений, доступных в Play Store, которые выполняют ту же самую роль, например, FX File Explorer или Total Commander .

Можно также управлять вашими файлами с вашего ПК при помощи подключения по USB. Стоит только удостовериться, что ваш телефон находится в режиме MTP (Передача файлов), чтобы вы могли видеть все свои файлы.


Получить доступ к памяти вашего устройства можно при помощи ПК или напрямую через файловый браузер

Если у вас есть ощущение, что память устройства выглядит переполненной и папок слишком много, приглядитесь к ним. Вы увидите многочисленные папки, связанные с приложениями, возможно, даже остатки от тех приложений, что вы уже удалили. Как правило, лучше не трогать никакие папки приложений, но если вы помните, что приложение было удалено, а папка от него осталась, ее удаление вреда не причинит. Скорее всего, она пустая или в ней остались какие-то бесполезные лог-файлы.

Даже если вы не устанавливали большого количества приложений, по умолчанию этот раздел с пользовательскими данными может содержать ряд папок – в них хранятся ваши контакты, музыка, картинки и все остальное. Вот самые основные папки, не связанные со сторонними приложениями , которые вы можете найти.

  • Android – это место, куда по умолчанию сохраняются кэш приложений и данные. Эту папку не рекомендуется удалять, если вы не хотите потерять данные приложений. Удаление этой папки может привести к некорректной работе некоторых из них.
  • Alarms, Ringtones, Notifications – как видно из названий, в этих папках хранятся аудиофайлы для будильников, рингтонов и уведомлений, которые могут быть использованы как дефолтными, так и сторонними приложениями.
  • Cardboard – здесь хранятся данные для ряда приложений VR, а если таковых нет, она остается пустой.
  • DCIM – здесь лежат фотографии, которые вы делали при помощи своего основного приложения камеры. Также вы можете увидеть такую папку и на карте microSD , если вы сохраняете фотографии и на нее.
  • Downloads – здесь находится все, что скачано вами в веб-браузере, например, в Chrome или Firefox.
  • Pictures, Music, Movies, Video – Это папки, которые по умолчанию используются вашими медиаприложениями. Некоторые приложения позволяют вам назначать другие папки, но большая часть медиаплееров по умолчанию будет использовать эти директории. Скриншоты чаще всего сохраняются в папке с картинками.
  • Podcasts – Эта папка используется рядом приложений, чтобы отделять подкасты от остальных музыкальных файлов. Если вы не пользуетесь приложениями для прослушивания подкастов, она будет пустой.

Итак, какие папки мне можно (или нужно) удалять?

Не уверен – не удаляй. Это справедливо для всех папок приложений, и трогать их не стоит, за исключением тех случаев, когда вы точно знаете, что хотите сделать. Добавлять и удалять файлы из любых папок с медиа абсолютно безопасно, но постарайтесь в порыве наведения порядка не снести саму папку. Если вы видите, что папка пуста, например, ничего нет в папке Alarms, вы, можете подумать, что она и сама не нужна. Но, с другой стороны, папка не занимает много места. И возможно, она потребуется какому-либо приложению впоследствии, поэтому так ли вам необходимо ее удалять?

Со временем встроенная память вашего устройства будет содержать гораздо больше папок, чем было перечислено выше. Вы будете устанавливать и удалять все большее число приложений. Поэтому наводить порядок в своем устройстве никогда не повредит, ну, разве что вы вообще редко перемещаете файлы в своем телефоне, скачиваете и удаляете их. И еще, удаление пустой папки не освободит вам дополнительного места в памяти. Так что, если требуется выиграть место, лучше посмотрите, какие вы можете удалить ненужные приложения/фильмы, которые не станете пересматривать и т.п.

Теперь, когда вы получили более полную картину того, что это за папки хранятся в памяти вашего устройства, вам будет проще управлять своими файлами, не боясь «сделать что-нибудь не то».

  • / - корневая папка.
  • /bin - папка, содержащая исполняемые файлы и ссылки на исполняемые файлы. Исполняемыми файлами являются программы, запускающиеся при старте системы, а также самые необходимые программы, доступные для всех. Пример: ls, mount, pwd, unzip .
  • /data - папка с данными о синхронизации и аккаунтах, паролями к точкам доступа wifi и настройками vpn, и т. д.
  • /data/app – папка, содержащая установленные программы и игры.
  • /data/data – папка, содержащая данные приложений, их настройки, сэйвы игр и прочая информация.
  • /data/dalvik-cache - программная область кэш-памяти для программы Dalvik. Dalvik это Java-виртуальная машина, которая является основой для работы программ, имеющих *.apk расширение. Для того, чтобы сделать запуск программ быстрее – создается их кэш.
  • /dev - папка, содержащая файлы различных устройств , как реальных, так и виртуальных, а также тех устройств, которых нет, но которые могли бы быть.
  • /etc - папка, содержащая конфигурационные файлы, используемые при загрузке операционной системы и в процессе работы различных программ .
  • /lib - папка, содержащая библиотеки функций, необходимых для различных программ и компилятора языка C, а также модули (драйверы устройств), подключаемые к ядру.
  • /lib/modules/ - папка, содержащая модули (драйверы устройств) ядра, которые имеют расширение .ko . В этой папке расположены подпапки, которые совпадают с версиями ядра (например, 2.6.32.9-default), которые были установлены в системе. То есть для каждой версии ядра есть свой набор модулей. Это очень важно и нужно обратить на это внимание. Часто при компиляции ядра забывают изменять версию, новое ядро при загрузке использует модули предыдущей версии и система не загружается. Текущую версию ядра можно узнать по команде uname -r , возвращаемая версия обязательно совпадет с названием одной из папок в /lib/modules/ .
  • /mnt - содержит папки для временно монтируемых файловых систем.
  • /proc - виртуальная папка, содержащая все детали Android системы, включая ядро, процессы, и параметры конфигурации. Более подробно папка /proc описана в отдельной статье.
  • /sbin - папка, содержащая исполняемые файлы программ, которые предназначены для управления самой системой. Пример: ifconfig, man, mdev, vconfig .
  • /sdcard - папка, содержащая файлы и папки на карте памяти SD (если она установлена).
  • /sys папка, содержащая реальную конфигурацию системы на текущий момент. /sys очень тесно связан с udev если вы подключаете (отключаете) устройства, содержимое каталога /sys динамически меняется. Можно посмотреть на примере. Выполните команду ls /sys/bus/usb/devices/ , чтобы посмотреть текущие usb-устройства в системе. Теперь подключите флеш-накопитель и выполните команду ls /sys/bus/usb/devices/ еще раз. Вы увидите, что теперь устройств стало больше.
  • /system - папка (по умолчанию скрыта), содержащая системные файлы и папки с данными и всем необходимым для работы ОС Android.
  • /system/app – папка, содержащая системные приложения (смс, телефон, календарь, настройки и т.п.), а так же приложения установленные производителем устройства (фирменные виджеты, живые обои и т.д.).
  • /system/fonts – папка с системными шрифтами.
  • /system/media – папка, содержащая стандартные мелодии звонков, уведомлений, будильников и звуков интерфейса, а так же загрузочную анимацию (bootanimation).
  • /system/build.prop – файл, содержащий огромное количество настроек, таких как плотность экрана, время задержки сенсора приближения, управление wifi, имя и производитель устройства и многие другие параметры.

Одной из популярных операционных систем сегодня является Android. Она установлена на миллионах мобильных устройств . Система представляет собой набор папок и файлов, которые обеспечивают ее работу. Но задумывались ли вы когда-нибудь, что сдержится в каждой папке? Некоторые имеют достаточно большой вес, поэтому рука так и тянется их удалить. Прежде чем это сделать, стоит обязательно ознакомиться, за что каждая папка отвечает, а также насколько важна для операционной системы. Также мы расскажем, какие есть способы удалить ненужную папку.

Основные ключевые каталоги в операционной системе android

Первоочередная задача перед удалением – это выяснить, что содержит директория, ведь от этого и зависит, можно удалять ее или нет. Если вы по ошибке сотрете важные файлы, вы не только можете нарушить работу каких-либо приложений, но и привести к полной неработоспособности всю операционную систему.

Стоит отметить, что список папок может отличаться в зависимости от устройства и версии системы android . Также конкретные приложения могут создавать свои папки в памяти телефона на Андроиде. Рассмотрим, какие директории имеются в Андроид.

Cache – это папка для хранения временных файлов. В ней может находиться обновление системы. Если вы не собираетесь обновляться до более свежей версии Андроида, то файл обновления вам не нужен. Удалить эту папку можно, а в некоторых случаях даже нужно.

Data – один из крупнейших каталогов, который, как можно догадаться по названию, содержит разнообразные данные. Сюда входят данные аккаунтов, информация о сохраненных паролях, точках доступа Wi-Fi и т.п. Так как данная папка содержит множество информации, рассмотрим ее подкаталоги:

  1. App – директория, в которой содержатся установочные файлы различных приложений. Ее можно удалить, если вам не нужны все скачанные на телефон приложения;
  2. Data – включает в себя настройки, сохранения и другую служебную информацию, необходимую для работы конкретных приложений . Если важных для вас данных в приложениях нет, ее также можно удалить;
  3. Clipboard – это специальный буфер обмена данными, в котором также содержаться последние скриншоты. Удалить эту папку можно, но не рекомендуется;
  4. Dalvik-cache – это область кеш-памяти для программы под названием Davlink. Данное приложение является виртуальной Java-машиной, которая позволяет телефону запускать apk-файлы приложений. Чтобы максимально ускорить этот процесс, создаются файлы в кеш-памяти. Рекомендуется регулярно чистить содержимое, но удалять dalvik-cache не стоит.

Папка efs содержит информацию о серийном номере телефона (IMEI), MAC-адресе, Bluetooth и Wi-Fi. Эту директорию удалять нельзя. Более того, рекомендуется сделать бэкап этой папки, так как ее удаление приведет к потере уникального номера вашего смартфона.

Директория etc – содержит файлы конфигурации, преимущественно используемые во время загрузки ОС, процессов различных программ, к примеру, для определения местоположения по GPS. Это одна из системных директорий, удалять которую нельзя.

Каталог lib – в нем содержатся различные библиотеки, необходимые для корректной работы функций программ и модулей. Также данная папка содержит файлы, обеспечивающие работу драйверов. Удалять ее нельзя.

Каталог mnt – содержит образы монтируемых систем. Здесь могут располагаться разделы установленной карты памяти, внутренней памяти или других виртуальных устройств. Удалять данный каталог, естественно, тоже нельзя.

Папка proc – в ней содержится вся ключевая информация касательно установленной ОС Андроид: информация о ядре, параметрах конфигурации и оборудования. Все имеющиеся файлы и папки являются виртуальными, при этом весят ноль байт. Система автоматически создает их, когда пользователь получает доступ к ним. Эту папку с правами обычного пользователя удалить нельзя.

Директория sbin – одна из ключевых папок, необходимых для работы телефона. В ней имеются исполняемые файлы всех программ, предназначенных для управления системой. Ее удалять, соответственно, нельзя.

Каталог sys содержит конфигурацию системы на данный момент . Это динамический каталог. Информация в нем постоянно меняется. Стирать эту папку нельзя.

Раздел system – «хребет» всей операционной системы, так как именно в нем расположены все файлы, без которых невозможна работа android. Каталог System (как и любые другие внутренние директории) удалять нельзя. Для ознакомления рассмотрим подробней содержимое этого каталога:

  1. App – системные обои, стандартные приложения (календарь, записная книжка, СМС) находятся в этой папке.
  2. Bin включает в себя исполняемые файлы и ссылки;
  3. Build.prop содержит огромное количество настроек по телефону, например, на сколько задерживается работа сенсора после нажатия, какова плотность экрана и другое;
  4. Fonts – информация обо всех стоковых шрифтах, поддерживаемых в телефоне.
  5. Framework – все, что необходимо для интерфейса, в частности иконки, шторки и другие графические элементы;
  6. Lib – библиотека приложений;
  7. Media – все стандартные мелодии и звуки (будильник, оповещения на SMS, мелодии вызова);
  8. Tts включает языковые пакеты.

Documents – папка, в которой могут находиться разнообразные документы, в частности файлы формата.doc и.pdf. Если содержание папки вас не интересует, ее можно удалить.

Bluetooth – содержит все файлы, которые были приняты устройством через «Блютуз». Если важных данных в ней нет, она удаляется без проблем. Может быть расположена не только во внутренней памяти, но и на SD карте.

DCIM – это специальная директория для сохранения фотографий, созданных с помощью камеры вашего смартфона. Как правило, включает в себя раздел Camera, в котором располагаются все фото. Если необходимых для вас фото на телефоне нет, то ее можно удалить. Такие разделы, как Pictures, Images, Audio, Music (при отсутствии важных файлов внутри) также можно удалить.

Методы удаления

Как можно удалить конкретную папку? Первый способ – воспользоваться стандартными функциями . Для этого необходимо:

Обратите внимание, что стандартные средства не отображают всех имеющихся папок и файлов, так как часто системные файлы скрыты. Увидеть больше поможет любой сторонний файловый менеджер, например, программа «ES Проводник». Скачать его вы можете в магазине Google Play . Приложение предлагает широкие возможности. С его помощью можно осмотреть имеющиеся папки, а также удалить некоторые из них. Для этого необходимо:

Стоит отметить, что удаление системных папок невозможно, так как пользователь имеет ограниченные права доступа. Удалить их можно только, получив специальные права суперпользователя (аналог в Windows – Администратор).

Вконтакте

Введение

Общаясь на форумах и являясь куратором нескольких тем, часто сталкиваюсь с полным непониманием новичков об устройстве андроида. «Ну, а зачем обычному пользователю знать это?» - скажете вы. И тут я с вами соглашусь, задав встречный вопрос: «А зачем тогда обычный пользователь лезет в дебри прошивок, root доступа и твиков системы, не понимая в этом ничего?». Именно это и натолкнуло меня на написание данной статьи, в которой я попытаюсь, обычным и понятным языком, донести сложные вещи.

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

  1. Разделы внутренней памяти.
  2. Bootloader , recovery , adb и fastboot
  3. Внутренности системы.
  4. Root .


1. Разделы внутренней памяти

Внутренняя память устройства на андроиде разбита на несколько логических дисков (разделов).

Приведу только основные:


Рис.1

Bootloader – здесь находится микропрограмма (загрузчик), позволяющая запускать операционную систему, рекавери и другие сервисные режимы.

Recovery – как видно из названия, тут установлено инженерное меню восстановления или просто Рекавери.

Boot – сердце Андроид ОС, тут находится ядро, драйвера и настройки управления процессором и памятью.

System – системный раздел , в котором находятся все, необходимые для работы Android ОС, файлы, это как папка Windows на вашем диске С:\ (здесь и далее буду проводить ассоциацию с ОС Windows )

Data – раздел для установки приложений и хранения их данных. (Program files )

User – это всем известная sdcard или, проще говоря, место под пользовательские файлы (Мои документы). Здесь я вынужден сделать отступление, т.к. размещение данного раздела имеет несколько вариантов:

  • Раздел отсутствует во внутренней памяти, а вместо него используется внешний накопитель - самый популярный вариант. (рис.1)
  • В устройствах со встроенной памятью большого размера , данный раздел видится как sdcard , а внешняя карта памяти видится как sdcard 2 или extsd (могут быть и другие варианты названия). Обычно, встречается на устройствах с Android 3.2. (Рис.2 Вариант 1)
  • Данный вариант пришел на смену предыдущему варианту, вместе с Андроид 4.0. Раздел User заменили папкой media на разделе Data , что позволило использовать всю доступную пользователю память для установки программ и хранения данных, а не то количество, что выделил нам производитель. Иными словами sdcard и data являются одним целым. (Рис.2 Вариант 2)


Рис.2

2. Bootloader, Recovery, adb и fastboot

Теперь, когда мы знаем, что и где находится, давайте разберемся для чего оно там.

Начнем с Bootloader . Это загрузчик, который запускает Андроид, рекавери и т.п. Когда мы нажимаем кнопку включения, запускается загрузчик и, если нет дополнительных команд (зажатых клавиш), запускает загрузку boot . Если же была зажата комбинация клавиш (у каждого устройства она своя) то запускает, в зависимости от команды, recovery, fastboot или apx. На рисунке ниже наглядно показано, что запускает Bootloader и как взаимосвязаны разделы.


Рис.3

Как видно из рисунка №3, раздел Recovery не влияет на загрузку Андроид ОС, но зачем же он тогда нужен? Давайте попробуем разобраться.

Recovery (рекавери) по сути является маленькой утилитой на ядре Linux и загружается не зависимо от Андроид. Его штатный функционал не богат: можно сбросить аппарат до заводских настроек или же обновить прошивку (заранее скачанную на sdcard ). Но, благодаря народным умельцам, у нас есть модифицированные рекавери, через которые можно устанавливать модифицированные (кастомные) прошивки, настраивать андроид, создавать резервные копии и многое другое. Наличие или отсутствие рекавери, а также его версия не влияют на работоспособность Андроид ОС (очень частый вопрос на форумах).

Особо внимательные читатели могли заметить на Рис.3 некий Fastboot . Это интерфейс для работы напрямую с разделами внутренней памяти, при помощи командной строки . Через него можно прошить рекавери, ядро или новую версию прошивки, или же форматировать (удалить всю информацию) тот или иной раздел.

Раз уж зашла речь об интерфейсах, хочу рассказать о еще одном, довольно известном,- adb (android debug bridge ) . Это, так называемый, режим отладки и назван он так неспроста – через него можно отслеживать работу, как системы в целом, так и отдельных приложений. Но это еще не все, при помощи adb можно получить полный доступ к файловой системе устройства и изменять системные файлы или же вытянуть важную информацию, когда ваш девайс завис на загрузке. Все функции режима отладки описывать не буду т.к. моя цель донести общую информацию, а не о функциях того или иного режима.

3. Внутренности системы

Разобравшись с теорией, давайте запустим Андроид ОС.

Нажимаем кнопку питания - запускается Bootloader , который загружает Ядро (boot), оно, в свою очередь, запускает систему (System), ну, а она уже подгружает программы (data) и пользовательское пространство (user). (Рис.3)

А теперь перейдем в корневой каталог и посмотрим на внутренности самой Android OS:


(Рис.4)

В этой схеме я привел, только необходимые для ознакомления, директории. На самом деле их гораздо больше и на обзор только одной папки System понадобится целая статья.

И так, папка data . Как можно догадаться из названия, она как-то связана с данными, но с какими? Да практически со всеми, это и данные о синхронизации и аккаунтах, пароли к точкам доступа wifi и настройки vpn , и так далее. Среди всего прочего тут можно обнаружить папки app , data и dalvik - cache – рассмотрим их назначение:

  • app – сюда устанавливаются программы и игры.
  • data – здесь хранятся данные приложений, их настройки, сэйвы игр и прочая информация.
  • dalvik - cache - программная область кэш-памяти для программы Dalvik. Dalvik это Java-виртуальная машина, которая является основой для работы программ, имеющих *.apk расширение. Для того, чтобы сделать запуск программ быстрее - создается их кэш.

Папка System хранит в себе системные данные и все необходимое для работы ОС. Давайте рассмотрим некоторые из этих папок:

  • app – здесь находятся системные приложения (смс, телефон, календарь, настройки и т.п.), а так же приложения установленные производителем устройства (фирменные виджеты, живые обои и т.д.).
  • fonts – системные шрифты
  • media – содержит стандартные мелодии звонков, уведомлений, будильников и звуков интерфейса, а так же загрузочную анимацию (bootanimation)
  • build . prop – Этот файл упоминается, чуть ли не первым, в разговорах и статьях о тонкой настройке системы. В нем содержится огромное количество настроек, таких как плотность экрана, время задержки сенсора приближения, управление wifi, имя и производитель устройства и многие другие параметры.

4. Root

- Знать что в какой папке это хорошо, но можно ли что-то с этим сделать?

Да! Но нужны права суперпользователя (root ) или, если проводить аналогию с Windows, права Администратора. Изначально все устройства на Андроид идут без root прав для конечного пользователя, т.е. покупая девайс, мы не являемся в нем полноценными хозяевами. Это сделано как для защиты от вредоносных программ , так и от самого пользователя – ведь, в неумелых руках, полный доступ к системе может привести к «смерти» операционной системы и последующей необходимости в перепрошивке устройства.

«Ну и в чем польза такой опасной штуки?» - спросите Вы.

Сейчас расскажу:

  • Возможность делать резервные копии данных и восстанавливать их после прошивки или случайного удаления.
  • Тонкая настройка системы вручную или при помощи специальных программ.
  • Удаление системных приложений, мелодий, обоев и т.п.
  • Изменение внешнего вида ОС (например, отображение заряда батареи в процентах)
  • Добавление функционала (поддержка ad - hoc сетей, к примеру)

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

Это все здорово, но теперь любая программа сможет получить доступ к «сердцу» операционки и моим данным?

Нет. Вы сами решаете разрешить, тому или иному приложению, получить root доступ, или нет. Для этого существует программа Superuser или ее продвинутая сестра SuperSU. Без этой или подобной программы воспользоваться root не возможно.

Эпилог

Как видите, Андроид не такая уж и сложная штука. Надеюсь, после прочтения статьи, вы узнали что-то новое или получили ответ на давно интересовавший вопрос.

Засим откланиваюсь, до встречи в комментариях. 😉

В данной статье вы узнаете какие папки (директории) в Android существуют, какие файлы в них находятся, за что отвечают данные папки и файлы и зачем они нужны.

Предисловие о структуре

У многих есть компьютер и на них установлена ОС Windows. Все прекрасно знают, что в данной ОС все распределено по дискам:

C: — на данном диске находиться система

D: — для личных файлов (диска может и не быть, если он не «разбит»)

E: — Z: — флешки, переносные жесткие диски, CD или DVD приводы.

В Windwows все рассредоточено по различным дискам. В UNIX/Linux куда входит и Android (а также BSD, куда входит Mac OS X) все выглядит все немного иначе. Файловая структура имеет древовидный вид. Возможно сейчас не понятно, но дальше с прочтением статьи будет более понятно.

Также стоит знать что Android как и в Linux, в отличие от Windows очень чувствительны к регистру. Например папка Name, NaMe, name, NAME — это 4 разных папки, тогда как Windows сможет создать только одну папку с таким именем.

Для того чтобы было более понятно о чем идет речь, рекомендуется установить файловый менеджер Root Browser.

Структура и назначение папок и файлов Android

Как было выше сказано — структура имеет древовидный вид. У любого дерева имеется корень, в UNIX/Linux он также существуют. Корень — это отправной пункт в файловой структуре, с корня система обрастает папками и файлами. Корень в UNIX/Linux отмечается как знак:

/

подробно о разделе dev

/dev/ — в данном разделе содержится информация о устройствах системы и файлов.

[свернуть]

подробно о разделе data

раздел /data/ — пользовательский раздел в котором находятся установленные приложения, личные настройки

папка /data/app — здесь находятся установленные приложения, игры.

папка /data/app-lib — дополнительные библиотеки необходимые для работы определенных приложений (присутствует в новых версиях Android).

папка /data/dalvik-cache — кеш-память, для работы Java машины Dalvik которая является «двигателем» в Android отвечающая за запуск и работу приложений.

папка /data/data — в данной папке находятся индивидуальные настройки каждого пользовательского приложения, библиотеки и другие файлы необходимые файлы для их работы.

папка /data/system/ — в данном разделе находятся глобальные настройки пользовательского окружения, синхронизация, аккаунты, блокировка.

файлы gesture.key, locksettings.db, locksettings.db-shm, locksettings.db-wa l — графический ключ , пин-код.

[свернуть]

подробно о разделе preload

раздел /preload/ — в данном разделе находятся дополнительные файлы и папки, которые зеркалируются в раздел /system/ (данный раздел имеется не во всех Android, преимущественно в Samsung).

[свернуть]

подробно о разделе system

раздел /system/ — данный раздел содержит системные папки и файлы необходимые для функционирования Android.

папка /system/app — здесь находятся системные приложения и сервисы (в новых ОС Android сервисные приложения вынесли в другую папку priv-app ).

папка /system/bin и /system/xbin — папка содержит файлы и ссылки на исполняемые бинарные файлы.

файл /system/xbin/su — файл отвечающий за Root права .

папка /system/camerdata — в данной папке находятся файлы отвечающие за работу камеры.

папка /system/etc — в данной папке находятся конфигурационные файлы необходимые при загрузке ОС а также необходимые в процессе работы различных программ.

папка /system/init.d — в данной папке находятся скрипты, которые могут влиять на работу системы.

файл /system/etc/ hosts — файл отвечающий за блокировку, переадресацию веб адресов.

файл /system/etc/ apns.conf — файл с информацией о точках доступах интернет (APN).

файл /system/etc/ gps.conf — настройки GPS.

папка /system/fonts — папка с системными шрифтами.

папка /system/framework — папка с «процессами» Android.

папка /system/lib/ — библиотеки системных приложений и сервисов.

папка /system/lib/modules — драйверы системы.

папка /system/media — папка с системными звуками и анимацией включения.

файл /system/media/bootanimation.zip — исполняемый архив с загрузочной анимацией.

папка /system/priv-app — папка с сервисами/приложениями Android.

файл /system/build.prop — конфигурационный файл с помощью которого можно изменить системные настройки.

[свернуть]

подробно о разделе proc

раздел /proc — виртуальный раздел содержащий информацию о ядре и его конфигурации.

Введение

История

Распространение Android

Встроенные приложения Android

Архитектура Android

Достоинства и недостатки ОС Android

1 Достоинства

2 Недостатки

Чем Android не является

Заключение

Литература

Введение

Google Android - это не просто операционная система для смартфона, а целая инфраструктура. Android является первой бесплатной операционной системой с открытым исходным кодом. На «зелёном роботе» работают телефоны, планшеты, телевизоры, умные часы, и другие гаджеты, а скоро и автомобили будут управляться с помощью Android. ОС основана на ядре Linux и собственной реализации виртуальной машины Java от Google. Изначально разрабатывалась компанией Android Inc, которую в 2005 году купила Google. Впоследствии Google инициировала создание альянса Open Handset Alliance (OHA), который сейчас занимается поддержкой и дальнейшим развитием платформы. Android позволяет создавать Java-приложения, управляющие устройством через разработанные Google библиотеки. Android Native Development Kit позволяет портировать (но не отлаживать) библиотеки и компоненты приложений, написанные на Си и других языках. ОС Android установлена на 86% смартфонов (2014).

Рисунок 1 - эмблема

1. История

Рисунок 2

В июле 2005 года корпорация Google купила компанию Android Inc. ноября 2007 года компания официально объявила о создании Open Handset Alliance (OHA) и анонсировала открытую мобильную платформу Android, а 12 ноября 2007 года альянс представил первую версию пакета для разработчиков Android «Early Look» SDK и эмулятор Android.

сентября 2008 года официально вышла первая версия операционной системы, а также первый полноценный пакет разработчика SDK 1.0, Release 1. С момента выхода первой версии платформы произошло несколько обновлений системы. Эти обновления, как правило, касаются исправления обнаруженных ошибок и добавления новой функциональности в систему.

В 2009 году было представлено целых четыре обновления платформы. Так, в феврале вышла версия 1.1 с исправлением различных ошибок. В апреле и сентябре. Вышли ещё два обновления - 1.5 «Cupcake» и 1.6 «Donut» соответственно. Обновление «Cupcake» привнесло существенные изменения: виртуальная клавиатура, воспроизведение и запись видео, браузер и другие. В «Donut» впервые появились поддержка различных разрешений и плотности экрана и сетей CDMA.

В октябре того же года вышла версия операционной системы Android 2.0 «Eclair»с поддержкой нескольких аккаунтов Google, поддержкой браузером языка HTML5 и других нововведений, а также после небольшого обновления в пределах версии «Eclair» (2.1) появились «живые обои» и был видоизменён экран блокировки.

В середине 2010 года Google представила Android версии 2.2 под наименованием «Froyo», а в конце2010 года- Android 2.3 «Gingerbread». После обновления «Froyo» стало возможно использовать смартфон в качестве точки доступа, использовать традиционную блокировку смартфона цифровым или буквенно-цифровым паролем и другие изменения, а обновление «Gingerbread» привнесло более полный контроль над функцией копирования и вставки, улучшение управления питанием и контроля над приложениями, поддержку нескольких камер на устройстве ит.д.

февраля 2011 года была официально представлена ориентированная на интернет-планшеты платформа Android 3.0 «Honeycomb».4.0 «Ice Cream Sandwich», вышедшая 19 октября 2011 года, - первая универсальная платформа, которая предназначена как для планшетов, так и для смартфонов. Также обновление привнесли новый интерфейс «Holo», который использовался до Android 4.4.4 KitKat, на данный момент заменен на Material Design (Android 5).

В июне 2012 вышло обновление под названием «Jelly Bean» с порядковым номером 4.1, который сменился на 4.2 вследствие небольшого обновления в конце октября того же года и на 4.3 после обновления в июле 2013.

октября 2013 года Google представила следующую версию операционной системы Android 4.4, которая получила название шоколадного батончика «KitKat» по соглашению с компанией производителем Nestlй. Впервые KitKat появился на Nexus 5; эта версия Android оптимизирована для работы на более широком наборе устройств, имеющих 512 МБ ОЗУ в качестве рекомендуемого минимума.

июня 2014 Google представили Android L, доступный для разработчиков, пользователей смартфонов Nexus, а также некоторых других смартфонах.

В 2014 году была анонсирована операционная система для носимых устройств Android Wear (для наручных часов). Также на Google I/O были представлены версии Android Auto (для автомобилей) и Android TV (для телевизоров), тем самым Android перестал быть операционной системой только для мобильных устройств.

октября 2014 года была официально анонсирована Android 5.0 Lollipop. Главное обновление системы - новый дизайн Material design. Также, если на Android-устройстве установлен пароль или графический ключ, и если поблизости находятся часы хозяина устройства с Android Wear, то устройство автоматически разблокируется. Вместо ранее используемой виртуальной машины Dalvik, начинается использоваться виртуальной машины ART.

декабря 2014 Googlе заменила официальную среду разработки, основанную на Eclipse (adt-bundle), наAndroid Studio.

мая 2015 Googlе представила Android M. По словам Google главная цель новой операционной системы- улучшить пользовательский опыт общения со смартфоном, сделать взаимодействие интуитивное и проще.

17 августа 2015 официально стало известно, что Android Mполучила название Android 6.0 Marshmallow .

anroid программа мобильный

2. Распространение Android

В начале каждого месяца Google традиционно публикует статистику распространения версий Android. Согласно последним данным, за январь 2016 доля Android 6.0Marshmallow увеличилась почти в два раза, но пока под управлением новой операционной системы работает всего 1.2% устройств. Увы, но производители не торопятся обновлять уже выпущенные гаджеты, а в большинстве представленных за последнее время новинок все еще используется Android Lollipop.

Рисунок 3

Таблица 1

ВерсияКодовое названиеAPIРаспространение2.2Froyo80.1%2.3.3 - 2.3.7Gingerbread102.7%4.0.3 - 4.0.4Ice Cream Sandwich152.5%4.1.xJelly Bean168.8%4.2.x1711.7%4.3183.4%4.4KitKat1935.5%5.02117.0%5.1Lollipop2217.1%6.0Marshmallow231.2%Данные на 1 февраля 2016 .

Доля Android 6.0 Marshmallow едва превысила 1% спустя почти четыре месяца после релиза платформы. За это же время до iOS 9 обновились 77% мобильных гаджетов Apple.

% устройств используют ОС iOS 9 (iPhone и iPad)

Рисунок 4

Что самое удивительное, в рейтинге Google по-прежнему лидирует анонсированная в 2013 году Android 4.4 KitKat (35.5%). На втором месте по популярности находится версия Lollipop с долей 34.1%, а третью строчку занимает Jelly Bean (23.9%).

3. Встроенные приложения Android

Устройства с системой Android снабжены набором предустановленных программ, разработанных в рамках проекта Android Open Source Project (AOSP) (Проект открытых исходных кодов для Android).

Перечислим основные из них:

E-mail - клиент;

Приложение для работы с SMS (начиная с Android 5.0 заменено на Hangouts);

Полный набор инструментов для управления личными данными пользователя, включая календарь и адресную книгу;

Браузер на базе WebKit (начиная с Android 4.4 заменено на Google Chrome);

Музыкальный плеер и фотогалерея (начиная с Android 5.0 заменено на Google Play Музыка и Google Фото);

Калькулятор;

«Рабочий стол»;

Будильник

Во многих случаях Android включает также следующее лицензионное ПО от Google:

Магазин Google Play Store для загрузки сторонних программ, разработанных для платформы Android, покупки фильмов, музыки, книг и прессы;

Полноценное приложение Google Maps, включая функцию Street View («Просмотр улиц»), Driving Directions («Показ проезда»), маршрутизированную навигацию, спутниковую карту и информация о пробках;

Программу для работы с почтой Gmail;

Программу для обмена мгновенными сообщениями Google Hangouts;

Программу для работы с файлами Google Диск;

Видеоплеер для работы с сервисом YouTube.

Данные, к которым имеют доступ из этих приложений, например, адресная книга, открыты и для программ сторонних разработчиков. Кроме того, приложения могут, например, реагировать на входящие звонки.

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

Открытый характер платформы Android означает, что операторы или производители комплектного оборудования могут менять пользовательский интерфейс и набор программ на любом устройстве под управлением Android.

Некоторые производители разработали свои собственные интерфейсы, например, Sense от HTC, Moto Blur от Motorola и Touch Wiz от Samsung.

4. Архитектура Android

Рисунок 5 Структура платформы Google Android

Архитектура Google Android состоит из четырех уровней (нумерация обозначает порядок уровней снизу-вверх).

Уровень - Ядро OS Linux версии 2.6 обеспечивает функционирование системы. Оно отвечает за безопасность, управление памятью, энергосистемой и процессами, а также предоставляет сетевой стек и модель драйверов. Кроме того, оно играет связующую роль между аппаратным обеспечением и остальной частью программного стека.

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

Вот некоторые из них:

Surface Manager - композитный менеджер окон. Вместо того, чтобы отрисовывать графику в буфер дисплея, система посылает поступающие команды отрисовки в закадровый буфер, где они накапливаются вместе с другими, составляя некую композицию, а потом выводятся пользователю на экран. Это позволяет создавать интересные бесшовные эффекты, прозрачность окон и плавные переходы.

Media Framework - библиотеки, реализованные на базе PacketVideo OpenCORE. С их помощью система осуществляет запись/воспроизведение аудио- и видео- контента, а также вывод статических изображений. Поддерживаются форматы MPEG4, H.264, MP3, AAC, AMR, JPG и PNG и др.

SQLite - реляционная СУБД, используемая в Android в качестве основного движка для работы с базами данных, используемыми приложениями для хранения информации.

3D библиотеки - используются для отрисовки 3D-графики, при возможности используют аппаратное ускорение. Реализуются на основе API OpenGL ES 1.0, 2.0, 3.0 и 3.1.

FreeType - библиотека для работы для растеризации шрифтов и осуществления операций над ними.

LibWebCore - библиотеки браузерного движка WebKit.

SGL (Skia Graphics Engine) - библиотека для работы с 2D-графикой.

Libc - стандартная библиотека языка C, настроенная для работы на устройствах на базе Linux.

Все библиотеки написаны на языке C++ и скомпилированы под конкретное аппаратное обеспечение устройства.

На этом же уровне располагается среда выполнения Android Runtime. Она состоит из виртуальной Java-машины Dalvik/ART и библиотек ядра. Dalvik/ART поддерживает одновременную работу нескольких приложений и выполняет файлы в специальном формате. dex, оптимизированном для устройств с малым количеством памяти. Библиотеки ядра написаны на языке Java и поддерживают широкий диапазон функциональных возможностей.

Каждое приложение в Android Runtime запускается в собственном экземпляре виртуальной машины Dalvik/ART. То есть, все работающие процессы изолированы от операционной системы и друг от друга. Особенность структуры Android Runtime позволяет осуществлять работу программ строго в рамках виртуальной машины. Благодаря этому ядро операционной системы защищено от влияния со стороны других компонентов. Код с ошибками или вредоносное ПО не смогут испортить систему или само устройство. Функция защиты, кроме непосредственного выполнения программного кода, является одной из ключевых для этого уровня.

Уровень - Application Framework, или каркас приложений. Именно через каркасы приложений разработчики получают доступ к API, предоставляемым компонентами системы, лежащими ниже уровнем. Кроме того, благодаря архитектуре фреймворка, любому приложению предоставляются уже реализованные возможности других приложений, к которым разрешено получать доступ.

В базовый набор сервисов и систем, лежащих в основе каждого приложения и являющихся частями фреймворка, входят:

Богатый и расширяемый набор представлений (Views), который может быть использован для создания визуальных компонентов приложений, например, списков, текстовых полей, таблиц, кнопок или даже встроенного web-браузера.

Контент-провайдеры (Content Providers), управляющие данными, которые одни приложения открывают для других, чтобы те могли их использовать для своей работы.

Менеджер ресурсов (Resource Manager), обеспечивающий доступ к ресурсам без функциональности (не несущими кода), например, к строковым данным, графике, файлам и другим.

Менеджер оповещений (Notification Manager), благодаря которому все приложения могут отображать собственные уведомления для пользователя в строке состояния.

Менеджер действий (Activity Manager), который управляет жизненными циклами приложений, сохраняет данные об истории работы с действиями, а также предоставляет систему навигации по ним.

Менеджер местоположения (Location Manager), позволяющий приложениям периодически получать обновленные данные о географическом положении устройства.

Таким образом, приложения в ОС Android могут получать в своё распоряжение вспомогательные инструменты.

Отличия фреймворка от библиотеки

Фреймворк только выполняет код, написанный для него, библиотеки исполняются сами.

Фреймворк состоит из библиотек с разной функциональностью и назначением, а библиотеки объединяют наборы функций, близких по логике.

4 Уровень - Applications. Сюда относятся базовые программы, предустановленные на Android. Это браузер, почтовый клиент, программа для отправки SMS, карты, календарь, менеджер контактов. Список интегрированных приложений может меняться в зависимости от модели устройства и версии Android. Также на этом уровне располагается стороннее ПО. Система позволяет устанавливать его без ограничений, поэтому все стандартные приложения могут быть заменены аналогами. Приложения для Android пишутся на языке Java .

5. Достоинства и недостатки ОС Android

1 Достоинства

Некоторые обозреватели отмечают, что Android проявляет себя лучше одного из своих конкурентов, Apple iOS, в ряде особенностей, таких как веб-сёрфинг, интеграция с сервисами Google Inc. и прочих. Также Android, в отличие от iOS, является открытой платформой, что позволяет реализовать на ней больше функций.

В Android-аппаратах, как правило, присутствует microSD-кардридер, делающий возможным быстрый перенос файлов с компьютера на телефон. Кроме того, в Windows Phone 7 невозможна прямая передача каких-либо файлов с телефона и на телефон, кроме как через программы синхронизации (Zune), в то время как телефоны на Android экспортируют файловую систему карты памяти как USB mass storage device (в версиях начиная с 3.0 на усмотрение производителя) или с помощью Media Transfer Protocol (MTP).

В отличие от Windows Phone 7, в Android заявлена полноценная реализация Bluetooth-стека, позволяющая в том числе передачу и приём файлов. Присутствует реализация FTP-сервера, режима точки доступа к сети (службы PAN) и групповой одноранговой сети через Bluetooth (службы GN).

Несмотря на изначальный запрет на установку программ из «непроверенных источников» (например, с карты памяти), это ограничение отключается штатными средствами в настройках аппарата, что позволяет устанавливать программы на телефоны и планшеты без интернет-подключения (например, пользователям, не имеющим Wi-Fi-точки доступа и не желающим тратить деньги на мобильный интернет, который обычно стоит дорого), а также позволяет всем желающим бесплатно писать приложения для Android и тестировать на своём аппарате.доступен для различных аппаратных платформ, таких как ARM, MIPS, x86.

Существуют альтернативные Google Play магазины приложений: Amazon Appstore (англ.), Opera Mobile Store, Yandex.Store, GetUpps!, F-Droid (англ.) и другие.

В версии 4.2 введена поддержка многопользовательского режима.

5.2 Недостатки

Наличие в некоторых Android-устройствах сервисов Google, обеспечивающих возможность передачи идентификационной информации на серверы компании, например, информацию о перемещении пользователя в реальном времени.

В версии Android 1.6 разработчики добавили Native Development Kit, который позволяет писать собственные низкоуровневые модули для системы на языках C/С++, опираясь на стандартные Linux-библиотеки. Хотя, например, стандартная библиотека языка Си на платформе Android, известная как Bionic, как раз не является стандартной и полностью совместимой с libc.

Для доступа к Google Play и другим сервисам от Google необходимо использовать проприетарные приложения, которые производитель телефона имеет право устанавливать на телефон только после заключения контракта с Google.

Конкуренты Android выступили с критикой платформы, обвиняя её в чрезмерной фрагментации, создающей препятствия разработчикам. Google опровергла все обвинения, заявив, что никаких подобных проблем нет.

Подвергается критике решение Google не размещать в широком доступе код Android 3.0 Honeycomb, доступный только для участников Open Handset Alliance или по индивидуальному запросу после подписания соглашения. Google мотивирует это неготовностью платформы и мерой предупреждения небрежной её реализации. Ричард Столлман заявлял, что «всё просто и ясно: за исключением ядра Linux, Android 3 представляет собой несвободный софт» и «несмотря на то, что телефоны с Android на сегодняшний день не так плохи, как смартфоны Apple или Windows, нельзя сказать, что они уважают вашу свободу». В настоящий момент Google открыл исходный код для всех версий Android вплоть до 6.0, а также отправил в Linux все изменения, в соответствии с GPL.

По данным Lookout Security Mobile, за 2011 год у пользователей Android-смартфонов было украдено около миллиона долларов США (напр., отправка СМС без ведома владельца телефона). Однако это зачастую возникает у пользователей, которые невнимательно читают списки разрешений .

6. Чем Android не является

Неудивительно, что внедрение революционной технологии вызвало некоторое недопонимание, чем на самом деле является Android. Можно уверенно сказать, чем он не является.

-Реализацией платформы Java ME. Приложения для Android написаны с использованием языка Java, однако они не используются на виртуальной машине Java ME (Mobile Edition - мобильная версия), соответственно, скомпилированные для Java классы и исполняемые файлы не будут работать на платформе Android.

-Частью инициативы Linux Phone Standards Forum (LiPs) (Форума стандартов мобильногоLinux) или Open Mobile Alliance (OMA) (Альянс открытых мобильных архитектур). Android работает на Linux-ядре с открытым исходным кодом, но при всей схожести целей весь программный стек платформы Android призван решить более перспективные задачи по сравнению с инициативами упомянутых организаций по определению стандартов.

-Стандартным уровнем приложений (например, UiQ или S60). Хотя Android имеет уровень приложений, он также охватывает весь программный стек, начиная с самого нижнего уровня - операционной системы - и заканчивая уровнем библиотек API и самих приложений.

-Видом мобильных телефонов. Android включает референс-дизайн для производителей мобильных телефонов, однако в природе не существует телефона марки Android. Как раз наоборот: Android создали для использования на самых разнообразных устройств.

-Ответом Google на iPhone. iPhone представляет собой запатентованную программную и аппаратную платформу компании Apple. В тоже время Android - это набор программ с открытым исходным кодом, разработанный и поддерживаемый Альянс открытых мобильных архитектур. Android предназначен для работы на любых совместимых устройствах.

Заключение

Сегодня операционная система для мобильных платформ Google Android стала достаточно популярной. Перспективы ОС для мобильных устройств весьма многообещающие: улучшение и упрощение пользовательского интерфейса; улучшенная графика; более широкие мультимедийные возможности; развитие набора сервисных и игровых программ; совместимость с ПК и с форматами файлов; продолжение и развитие использования платформы Java для мобильных устройств; развитие самих мобильных устройств: улучшение разрешения экранов, ускорение процессоров, увеличение объема памяти, реализация новых быстрых коммуникационных технологий.

Особенности архитектуры платформы Google Android позволили ей выйти на первое место среди других платформ. Главные из них:

1Грамотно разработанное ядро, заимствованное у системы Linux.

2Регистр-ориентированная виртуальная машина Dalvik/ART для выполнения приложений.

Инновационные библиотеки, значительно расширяющие функционал устройств.

4«Легковесная» СУБД SQLite для хранения данных.

5Возможность поддержки 3D и 2D графики, и даже комбинирования их в одном приложении.

Многозадачность и изолированность процессов друг от друга.

Универсальность архитектуры наряду с высоким качеством.

Литература

1)Голощапов А.Л. Google Android: системные компоненты и сетевые коммуникации. - СПб.: БХВ-Петербург, 2012. - 384 c.

2)Фелкер Д. Android: разработка приложений для чайников. - М.: Диалектика, 2012. - 336 с.

3)Хашими С., Коматинени С., Маклин Д. Разработка приложений для Android. - СПб.: Питер, 2011. - 736 с.

4)Майер Р. Android 4. Программирование приложений для планшетных компьютеров и смартфонов. - М.: Эксмо, 2013. - 816 с.

5)Android developer

)Apple developer

Рассказать друзьям