Тесты и обзоры

Операционная система андроид. Что такое Android Работают на платформе android которая

Статьи и Лайфхаки

Сегодня уже тяжело найти такого человека, который бы не любил окружать себя «умной» техникой. Фраза «без телефона – как без рук» звучит все чаще и чаще, а представить себе жизнь без плеера, ноутбука или другого популярного гаджета вообще невозможно.

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

Что такое Андроид

  • Андроид – это операционная система, которая может управлять мобильным устройством (телефоном, планшетным компьютером, смартфоном). Платформа андроид была разработана на основе ядра Linux.
  • Появилась же она благодаря тому, что в 2005 году компания Google купила компанию Android Inc, сделав ее своим дочерним предприятием, и начала выпускать одноименные платформы для мобильных устройств. С тех пор платформа только развивается.
  • Андроид очень часто выпускает новые версии своей программы. Примечательным является тот факт, что первые буквы названия каждой новой версии соответствуют буквам латинского алфавита.
  • Сегодня платформа андроид занимает второе место по популярности в мире, уступая лишь в операционной системе iOS, которая была разработана для iPhone.

Для чего нужен Андроид

  • Как известно, операционная система – это «мозг» любого электронного устройства, который нужен для того, чтоб оно выполняло все команды человека.
  • Соответственно, андроид – это виртуальный робот, сидящий внутри мобильного устройства, который отвечает за выполнение всех процессов, происходящих внутри этого устройства.
  • Преимущество данной платформы состоит в том, что андроид имеет удобный и очень понятный интерфейс, а также гибкую и мультизадачную систему, которая позволяет запускать несколько приложений сразу и экспериментировать с настройками.
  • Кроме всего прочего, многочисленные приложения, созданные специально для платформы андроид, дают счастливым пользователям этой системы поистине безграничные возможности.
  • Ведь с помощью этих приложений можно расплачиваться за покупки, делать фотографии, смотреть фильмы или читать книги.
  • Разобравшись с тем, что такое андроид, можно сделать вывод о том, что эта платформа создана для творческих людей, ведь два одинаковых мобильных устройства могут выглядеть совершенно по-разному.
  • Андроид позволяет всегда иметь при себе все – личного фитнесс-тренера, доктора, игрушку или телевизор, делая человеческую жизнь максимально комфортной.

Тебя никогда не интересовало, как работают fastboot или ADB? Или почему смартфон под управлением Android практически невозможно превратить в кирпич? Или, может быть, ты давно хотел узнать, где кроется магия фреймворка Xposed и зачем нужны загрузочные скрипты /system/etc/init.d? А как насчет консоли восстановления (recovery)? Это часть Android или вещь в себе и почему для установки сторонней прошивки обычный рекавери не подходит? Ответы на все эти и многие другие вопросы ты найдешь в данной статье.

Как работает Android

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

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

Шаг первый. ABOOT и таблица разделов

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

Протокол fastboot, в свою очередь, представляет собой систему управления загрузчиком с ПК, которая позволяет выполнять такие действия, как разлочка загрузчика, прошивка нового ядра и recovery, установка прошивки и многие другие. Смысл существования fastboot в том, чтобы иметь возможность восстановить смартфон в начальное состояние в ситуации, когда все остальные средства не работают. Fastboot останется на месте, даже если в результате экспериментов ты сотрешь со смартфона все разделы NAND-памяти, содержащие Android и recovery.

Получив управление, aboot проверяет таблицу разделов и передает управление ядру, прошитому в раздел с именем boot, после чего ядро извлекает в память RAM-образ из того же раздела и начинает загрузку либо Android, либо консоли восстановления. NAND-память в Android-устройствах поделена на шесть условно обязательных разделов:

  • boot - содержит ядро и RAM-диск, обычно имеет размер в районе 16 Мб;
  • recovery - консоль восстановления, состоит из ядра, набора консольных приложений и файла настроек, размер 16 Мб;
  • system - содержит Android, в современных девайсах имеет размер не менее 1 Гб;
  • cache - предназначен для хранения кешированных данных, также используется для сохранения прошивки в ходе OTA-обновления и поэтому имеет размер, сходный с размерами раздела system;
  • userdata - содержит настройки, приложения и данные пользователя, ему отводится все оставшееся пространство NAND-памяти;
  • misc - содержит флаг, определяющий, в каком режиме должна грузиться система: Android или recovery.

Кроме них, также могут существовать и другие разделы, однако общая разметка определяется еще на этапе проектирования смартфона и в случае aboot зашивается в код загрузчика. Это значит, что: 1) таблицу разделов нельзя убить, так как ее всегда можно восстановить с помощью команды fastboot oem format; 2) для изменения таблицы разделов придется разлочить и перепрошить загрузчик с новыми параметрами. Из этого правила, однако, бывают исключения. Например, загрузчик того же Rockchip хранит информацию о разделах в первом блоке NAND-памяти, так что для ее изменения перепрошивка загрузчика не нужна.

Особенно интересен раздел misc. Существует предположение, что изначально он был создан для хранения различных настроек независимо от основной системы, но в данный момент используется только для одной цели: указать загрузчику, из какого раздела нужно грузить систему - boot или recovery. Эту возможность, в частности, использует приложение ROM Manager для автоматической перезагрузки системы в recovery с автоматической же установкой прошивки. На ее же основе построен механизм двойной загрузки Ubuntu Touch, которая прошивает загрузчик Ubuntu в recovery и позволяет управлять тем, какую систему грузить в следующий раз. Стер раздел misc - загружается Android, заполнил данными - загружается recovery... то есть Ubuntu Touch.

Шаг второй. Раздел boot

Если в разделе misc не стоит флаг загрузки в recovery, aboot передает управление коду, расположенному в разделе boot. Это не что иное, как ядро Linux; оно находится в начале раздела, а сразу за ним следует упакованный с помощью архиваторов cpio и gzip образ RAM-диска, содержащий необходимые для работы Android каталоги, систему инициализации init и другие инструменты. Никакой файловой системы на разделе boot нет, ядро и RAM-диск просто следуют друг за другом. Содержимое RAM-диска такое:

  • data - каталог для монтирования одноименного раздела;
  • dev - файлы устройств;
  • proc - сюда монтируется procfs;
  • res - набор изображений для charger (см. ниже);
  • sbin - набор подсобных утилит и демонов (adbd, например);
  • sys - сюда монтируется sysfs;
  • system - каталог для монтирования системного раздела;
  • charger - приложение для отображения процесса зарядки;
  • build.prop - системные настройки;
  • init - система инициализации;
  • init.rc - настройки системы инициализации;
  • ueventd.rc - настройки демона uventd, входящего в состав init.

Это, если можно так выразиться, скелет системы: набор каталогов для подключения файловых систем из разделов NAND-памяти и система инициализации, которая займется всей остальной работой по загрузке системы. Центральный элемент здесь - приложение init и его конфиг init.rc, о которых во всех подробностях я расскажу позже. А пока хочу обратить внимание на файлы charger и ueventd.rc, а также каталоги sbin, proc и sys.

Файл charger - это небольшое приложение, единственная задача которого - вывести на экран значок батареи. Он не имеет никакого отношения к Android и используется тогда, когда устройство подключается к заряднику в выключенном состоянии. В этом случае загрузки Android не происходит, а система просто загружает ядро, подключает RAM-диск и запускает charger. Последний выводит на экран иконку батареи, изображение которой во всех возможных состояниях хранится в обычных PNG-файлах внутри каталога res.

Файл ueventd.rc представляет собой конфиг, определяющий, какие файлы устройств в каталоге sys должны быть созданы на этапе загрузки системы. В основанных на ядре Linux системах доступ к железу осуществляется через специальные файлы внутри каталога dev, а за их создание в Android отвечает демон ueventd, являющийся частью init. В нормальной ситуации он работает в автоматическом режиме, принимая команды на создание файлов от ядра, но некоторые файлы необходимо создавать самостоятельно. Они перечислены в ueventd.rc.

Каталог sbin в стоковом Android обычно не содержит ничего, кроме adbd, то есть демона ADB, который отвечает за отладку системы с ПК. Он запускается на раннем этапе загрузки ОС и позволяет выявить возможные проблемы на этапе инициализации ОС. В кастомных прошивках в этом каталоге можно найти кучу других файлов, например mke2fs, которая может потребоваться, если разделы необходимо переформатировать в ext3/4. Также модеры часто помещают туда BusyBox, с помощью которого можно вызвать сотни Linux-команд.

Каталог proc для Linux стандартен, на следующих этапах загрузки init подключит к нему procfs, виртуальную файловую систему, которая предоставляет доступ к информации обо всех процессах системы. К каталогу sys система подключит sysfs, открывающую доступ к информации о железе и его настройкам. С помощью sysfs можно, например, отправить устройство в сон или изменить используемый алгоритм энергосбережения.

Файл build.prop предназначен для хранения низкоуровневых настроек Android. Позже система обнулит эти настройки и перезапишет их значениями из недоступного пока файла system/build.prop.


Выносы из текста

  • Fastboot останется на месте, даже если в результате экспериментов ты сотрешь со смартфона содержимое всех разделов NAND-памяти
  • Раздел recovery полностью самодостаточен и содержит миниатюрную операционную систему, которая никак не связана с Android
  • Слегка изменив файл fstab, мы можем заставить init загрузить систему с карты памяти

Шаг второй, альтернативный. Раздел recovery

В том случае, если флаг загрузки recovery в разделе misc установлен или пользователь включил смартфон с зажатой клавишей уменьшения громкости, aboot передаст управление коду, расположенному в начале раздела recovery. Как и раздел boot, он содержит ядро и RAM-диск, который распаковывается в память и становится корнем файловой системы. Однако содержимое RAM-диска здесь несколько другое.

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

В стандартном (стоковом) recovery таких функций обычно всего три: установка подписанных ключом производителя смартфона прошивок, вайп и перезагрузка. В модифицированных сторонних recovery, таких как ClockworkMod и TWRP, функций гораздо больше. Они умеют форматировать файловые системы, устанавливать прошивки, подписанные любыми ключами (читай: кастомные), монтировать файловые системы на других разделах (в целях отладки ОС) и включают в себя поддержку скриптов, которая позволяет автоматизировать процесс прошивки и многие другие функции.

С помощью скриптов, например, можно сделать так, чтобы после загрузки recovery автоматически нашел на карте памяти нужные прошивки, установил их и перезагрузился в Android. Эта возможность используется инструментами ROM Manager, auto-flasher, а также механизмом автоматического обновления CyanogenMod и других прошивок.

Кастомные рекавери также поддерживают скрипты бэкапа, располагающиеся в каталоге /system/addon.d/. Перед прошивкой recovery проверяет наличие скриптов и выполняет их перед тем, как произвести прошивку. Благодаря таким скриптам gapps не исчезают после установки новой версии прошивки.

Команды fastboot

Чтобы получить доступ к fastboot, необходимо установить Android SDK, подключить смартфон к ПК с помощью кабеля и включить его, зажав обе кнопки громкости. После этого следует перейти в подкаталог platform-tools внутри SDK и запустить команду

Fastboot devices

На экран будет выведено имя устройства. Другие доступные команды:

  • fatsboot oem unlock - разлочка загрузчика на нексусах;
  • update файл.zip - установка прошивки;
  • flash boot boot.img - прошивка образа boot-раздела;
  • flash recovery recovery.img - прошивка образа раздела recovery;
  • flash system system.img - прошивка образа системы;
  • oem format - восстановление разрушенной таблицы разделов;

Шаг третий. Инициализация

Итак, получив управление, ядро подключает RAM-диск и по окончании инициализации всех своих подсистем и драйверов запускает процесс init, с которого начинается инициализация Android. Как я уже говорил, у init есть конфигурационный файл init.rc, из которого процесс узнает о том, что конкретно он должен сделать, чтобы поднять систему. В современных смартфонах этот конфиг имеет внушительную длину в несколько сот строк и к тому же снабжен прицепом из нескольких дочерних конфигов, которые подключаются к основному с помощью директивы import. Тем не менее его формат достаточно простой и по сути представляет собой набор команд, разделенных на блоки.

Каждый блок определяет стадию загрузки или, выражаясь языком разработчиков Android, действие. Блоки отделены друг от друга директивой on, за которой следует имя действия, например on early-init или on post-fs. Блок команд будет выполнен только в том случае, если сработает одноименный триггер. По мере загрузки init будет по очереди активировать триггеры early-init, init, early-fs, fs, post-fs, early-boot и boot, запуская таким образом соответствующие блоки команд.


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

Наиболее примечательный из дополнительных конфигов носит имя initrc.имя_устройства.rc, где имя устройства определяется автоматически на основе содержимого системной переменной ro.hardware. Это платформенно-зависимый конфигурационный файл, который содержит блоки команд, специфичные для конкретного устройства. Кроме команд, отвечающих за тюнинг ядра, он также содержит примерно такую команду:

Mount_all ./fstab.имя_устройства

Она означает, что теперь init должен подключить все файловые системы, перечисленные в файле./fstab.имя_устройства, который имеет следующую структуру:

Имя_устройства_(раздела) точка_монтирования файловая_система опции_фс прочие опции

Обычно в нем содержатся инструкции по подключению файловых систем из внутренних NAND-разделов к каталогам /system (ОС), /data (настройки приложений) и /cache (кешированные данные). Однако слегка изменив этот файл, мы можем заставить init загрузить систему с карты памяти. Для этого достаточно разбить карту памяти на три 4 раздела: 1 Гб / ext4, 2 Гб / ext4, 1 Гб / ext4 и оставшееся пространство fat32. Далее необходимо определить имена разделов карты памяти в каталоге /dev (для разных устройств они отличаются) и заменить ими оригинальные имена устройств в файле fstab.


В конце блока boot init, скорее всего, встретит команду class_start default, которая сообщит, что далее следует запустить все перечисленные в конфиге службы, имеющие отношение к классу default. Описание служб начинается с директивы service, за которой следует имя службы и команда, которая должна быть выполнена для ее запуска. В отличие от команд, перечисленных в блоках, службы должны работать все время, поэтому на протяжении всей жизни смартфона init будет висеть в фоне и следить за этим.

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

Команды init.rc

Процесс init имеет встроенный набор команд, многие из которых повторяют стандартный набор команд Linux. Наиболее примечательные из них:

  • exec /путь/до/команды - запустить внешнюю команду;
  • ifup интерфейс - поднять сетевой интерфейс;
  • class_start имя_класса - запустить службы, относящиеся к указанному классу;
  • class_stop имя_класса - остановить службы;
  • insmod /путь/до/модуля - загрузить модуль ядра;
  • mount ФС устройство каталог - подключить файловую систему;
  • setprop имя значение - установить системную переменную;
  • start имя_службы - запустить указанную службу;
  • trigger имя - включить триггер (выполнить указанный блок команд);
  • write /путь/до/файла строка - записать строку в файл.

Шаг четвертый. Zygote и app_process

На определенном этапе загрузки init встретит в конце конфига примерно такой блок:

Service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class default socket zygote stream 660 root system onrestart write /sys/android_power/request_state wake onrestart write /sys/power/state on onrestart restart media onrestart restart netd

Это описание службы Zygote, ключевого компонента любой Android-системы, который ответственен за инициализацию, старт системных служб, запуск и остановку пользовательских приложений и многие другие задачи. Zygote запускается с помощью небольшого приложения /system/bin/app_process, что очень хорошо видно на приведенном выше куске конфига. Задача app_proccess - запустить виртуальную машину Dalvik, код которой располагается в разделяемой библиотеке /system/lib/libandroid_runtime.so, а затем поверх нее запустить Zygote.

Когда все это будет сделано и Zygote получит управление, он начинает формирование среды исполнения Java-приложений с помощью загрузки всех Java-классов фреймворка (сейчас их более 2000). Затем он запускает system_server, включающий в себя большинство высокоуровневых (написанных на Java) системных сервисов, в том числе Window Manager, Status Bar, Package Manager и, что самое важное, Activity Manager, который в будущем будет ответственен за получение сигналов о старте и завершении приложений.

После этого Zygote открывает сокет /dev/socket/zygote и уходит в сон, ожидая данные. В это время запущенный ранее Activity Manager посылает широковещательный интент Intent.CATEGORY_HOME, чтобы найти приложение, отвечающее за формирование рабочего стола, и отдает его имя Zygote через сокет. Последний, в свою очередь, форкается и запускает приложение поверх виртуальной машины. Вуаля, у нас на экране появляется рабочий стол, найденный Activity Manager и запущенный Zygote, и статусная строка, запущенная system_server в рамках службы Status Bar. После тапа по иконке рабочий стол пошлет интент с именем этого приложения, его примет Activity Manager и передаст команду на старт приложения демону Zygote

INFO

В терминологии Linux RAM-диск - это своего рода виртуальный жесткий диск, существующий только в оперативной памяти. На раннем этапе загрузки ядро извлекает содержимое диска из образа и подключает его как корневую файловую систему (rootfs).

В процессе загрузки Android отображает три разных загрузочных экрана: первый появляется сразу после нажатия кнопки питания и прошит в ядро Linux, второй отображается на ранних этапах инициализации и записан в файл /initlogo.rle (сегодня почти не используется), последний запускается с помощью приложения bootanimation и содержится в файле /system/media/bootanimation.zip.

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

Кроме всего прочего, Activity Manager также занимается убийством фоновых приложений при нехватке памяти. Значения порогов свободной памяти содержатся в файле /sys/module/lowmemorykiller/parameters/minfree.

Все это может выглядеть несколько непонятно, но самое главное - запомнить три простые вещи:

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

Операционная система Андроид от Google

История развития Android, обновления Android, Android Market

Раздел 1. Характеристики операционной системы Android.

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

Android - это сравнительно молодая операционная система, используемая на широком спектре мобильных устройств.

Характеристики операционной системы Android

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

В 75 % смартфонов, проданных в третьем квартале 2012 года, была установлена операционная система Android.

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

Операционную систему разработала компания Android Inc., которая затем была приобретена Google и переведена в OHA - Open Handset Alliance, объединение, занимающееся разработкой и внедрением открытых мобильных стандартов. Помимо Google, в OHA входят такие гиганты как HTC, Intel, Motorola, Qualcomm, Samsung, LG, T-Mobile и Nvidia.

Видео:

Хотя ОС и базируется на ядре Linux, в ней используются далеко не все возможности этой операционной системы. Причиной тому - использование виртуальной машины Dalvik, в которой и работает все программное обеспечение. Но с релизом Native Development Kit у разработчиков появилась возможность создавать native-приложения на C и других языках программирования.


История обновлений Android

Первая версия Андроид была представлена в далеком сентябре 2008 года и только для коммуникатора T-Mobile G1 (HTC Dream). Он же получил обновление и до версии 1.1, анонсированной полгода спустя.

Стремительное развитие операционной системы началось с версии Cupcake (1.5) и Donut (1.6). Версия 2.0 Eclair стала промежуточной, точно такое же имя носила и версия 2.1. Именно под управлением последней были представлены одни из самых популярных устройств - Nexus One и его «брат» HTC Desire.

Затем вышел релиз Android 2.2 Froyo, подаривший пользователям поддержку веб-технологий HTML5 и Flash 10.1, что позволило получить значительное преимущество перед конкурентами.

Следом компания представила Android 2.3 Gingerbread с обновленным пользовательским интерфейсом, поддержкой стандарта NFC, нескольких камер и дисплеев высокого разрешения.


Но самые глобальные изменения мы видим в Android 3.0 Honeycomb, специальной версии для планшетников. В ней используется совершенно иной пользовательский интерфейс, трехмерные эффекты, удобный браузер и множество других улучшений.

К сожалению, Android 3.0 Honeycomb будет доступен только для планшетников. На коммуникаторах мы сможем увидеть лишь портированные версии или...

На данный момент о версии Android 2.4 известно лишь из слухов. Но, возможно, именно она станет адаптированным для смартфонов и коммуникаторов аналогом планшетной версии.

Видео:

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


К ноябрю 2012 года выпущено 14 версий системы. Последняя версия - 4.2 Jelly Bean («Леденец с жевательной начинкой»).

Существует сообщество энтузиастов, разрабатывающее полностью открытые варианты android-прошивок (такие как CyanogenMod, MIUI, Virtuous Quattro, VillainROM, Open Kang Project, Replicant).

Модифицированные версии Android (называемые также «прошивка», или «кастомная прошивка») создаются для:

удаления из android-устройства сервисов Google (например, таких, как синхронизация данных) - для обеспечения локализации данных пользователя только на android-устройстве - исключения возможности передачи идентификационной информации (IMEI, номера телефона, GPS-координат и т. д.) на серверы Google;

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

Видео:

дополнения android-прошивки новыми настройками и функциями. Такими, как поддержка FLAC Lossless Audio, возможность хранения загруженных приложений на MicroSD-карте (для Android до версии 2.2) и т. д.


Для перепрошивки android-устройства необходим root-доступ (это называется рутинг, англ. rooting), что даёт больший контроль над системой и над приложениями, установленными по умолчанию. Для root-доступа разблокировка загрузчика не нужна (разблокированный bootloader позволяет загружать две и более ОС на устройстве). Модифицированные прошивки позволяют пользователям старых телефонов использовать приложения, доступные только для более новых релизов, повышают стабильность, скорость работы и зачастую избавляют от багов производителей.

Все производители android-устройств изначально аппаратно блокируют root-доступ (и возможность перепрошивки), мотивируя это стремлением обезопасить пользователя от установки вредоносного ПО и защитить аппарат от повреждения. Однако, из-за применения в массовом порядке сложных хакерских приёмов для обхода этой защиты, производители вынуждены были пойти навстречу и создать возможность официальной разблокировки телефонов (Sony Ericsson - сервис Unlocking the boot loader, HTC - сервис Unlocking Your Bootloader). Риск, связанный с возможной поломкой телефона в процессе разблокирования, перекладывается на пользователя, который в случае разблокирования загрузчика соглашается с условиями, указывающими на досрочную потерю гарантии на телефон. А некоторые производители пошли ещё дальше и сделали всё, чтобы продвинутый пользователь мог не только установить другую прошивку, но и самостоятельно создать свою (предоставляется детальная инструкции по замене прошивок, программное обеспечение, документация по архитектуре программной платформы, код оригинальной прошивки и т. д.) и осуществляют поддержку разработки альтернативных прошивок (Sony Ericsson спонсирует CyanogenMod). Кроме того, это (инициатива Sony Ericsson) устраняет необходимость использовать непроверенный хакерский инструментарий для процесса перепрошивки (например, для HTC).

В конфликте интересов двух сторон (производителей самих телефонов вместе с Google и пользователей) прослеживается следующая мотивация:

производители хотят устанавливать на телефоны «рекламные» приложения, которые невозможно удалить без рутинга;

Видео:

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

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

24 сентября 2009 года Google обратилась к разработчикам CyanogenMod с письмом, требующим удаления из альтернативной прошивки частей системы и приложений с закрытым исходным кодом (такими как «Маркет», GPS навигация, «Карты» и т. д.). В результате из android-версии CyanogenMod были удалены «закрытые» приложения, и в процессе установки CyanogenMod пользователь имеет возможность доустановить пакет программ от Google или доустановить альтернативные варианты «закрытых» программ (альтернативный вариант «Карты» и т. д.), что разрешило спор и предоставило возможность пользователям быть или не быть свободными от Google-приложений.


История развития Android

июль - Компания Google купила Android Inc.

5 сентября - было официально объявлено о создании группы компаний Open Handset Alliance (OHA), целью которой является разработка открытых стандартов для мобильных устройств. В настоящий момент OHA объединяет 34 компании, среди которых крупнейшие сотовые операторы T-Mobile, производители мобильных устройств HTC, Intel, Sprint Nextel, KDDI, NTT DoCoMo, China Mobile, разработчики микросхем Broadcom, Marvell, NVIDIA, Qualcomm, SiRF, Texas Instruments, LG, Motorola, Samsung Electronics, а также мировой гигант ИТ-индустрии и один из главных идейных вдохновителей альянса, компания Google. Одновременно с представлением OHA была анонсирована открытая мобильная платформа Android, основанная на ядре Linux.

12 ноября - была представлена и предложена для скачивания первая версия пакета для разработчиков Android «Early Look» SDK.


23 сентября - компания Google совместно с мобильным оператором T-Mobile и тайваньским производителем HTC анонсировали первое устройство на базе платформы Android 1.0 - смартфон T-Mobile G1 (HTC Dream).

Выпущен первый полноценный пакет разработчика SDK 1.0, Release 1.

12 января - выпущена Android 2.1. В некоторых источниках эта версия называется «Flan», однако это часть релиза «Eclair».

май - выпущена Android 2.2 (FroYo)

декабрь - выпущена Android 2.3 (Gingerbread)

15 августа - Google достигла соглашения с советом директоров Motorola Mobility о покупке телекоммуникационной корпорации за 12,5 млрд долл.

Специально для платформы Android было создано семейство шрифтов Droid и Roboto.

Название каждой версии, начиная с 1.5, ОС Android представляет собой название какого-либо десерта. Первые буквы наименований в порядке версий соответствуют буквам латинского алфавита: 1.5 Cupcake («кекс»), 1.6 Donut («пончик»), 2.0/2.1 Eclair («эклер» или «глазурь»), 2.2 Froyo (сокращение от «замороженный йогурт»), 2.3 Gingerbread («имбирный пряник»), 3.0 Honeycomb («медовые соты»), 4.0 Ice Cream Sandwich («брикет мороженого»), 4.1/4.2 Jelly Bean («леденец с жевательной начинкой»), 5.0 Key Lime Pie («лаймовый пирог»), Lollipop («леденец»), Molasses («меласса») и Nougat («нуга») (курсивом выделены будущие и/или неподтверждённые версии).

Первые две были именами известных роботов: 1.0 Astro («Астро Бой») и 1.1 Bender («Футурама»), но их поменяли на десерты из-за авторских прав.

По данным на февраль 2011 года устройства с ОС Android уверенно лидировали в списке самых популярных смартфонов Великобритании, оставив позади iPhone 4 c iOS. По прогнозам экспертов, это первый шаг ОС Android к глобальному лидерству на рынке мобильных операционных систем.

На официальных сайтах Android до сих пор не указаны минимальные требования к аппаратным средствам для запуска операционной системы (присутствуют только требования к аппаратным средствам для пакета разработки под Android).

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

В версии 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 или по индивидуальному запросу после подписания соглашения. Googlе мотивирует это неготовностью платформы и мерой предупреждения небрежной её реализации.

Ричард Столлман заявлял, что «всё просто и ясно: за исключением ядра Linux, Android 3 представляет собой несвободный софт» и «несмотря на то что телефоны с Android на сегодняшний день не так плохи, как смартфоны Apple или Windows, нельзя сказать, что они уважают вашу свободу». По словам Google, закрытый код Android 3.0 - временная мера, однако даже после выхода 4-й версии исходники 3.0 не были открыты.

По данным Lookout Security Mobile, только за 2011 год у пользователей Android-смартфонов было украдено около миллиона американских долларов.

21 октября 2008 года альянс OHA опубликовал исходный код платформы Android. В релиз вошёл весь стек Android: и операционная система, и промежуточное ПО (middleware), и основные конечные приложения, написанные на Java. Общий объём исходного кода Android составил 2,1 Гб. «Предпочтительной лицензией» на исходный код Android является Apache License 2.0. После выпуска Android 3.0 Honeycomb президент мобильного подразделения Google Энди Рубин заявил о том, что открытие исходного кода новой версии системы будет отложено по причине того, что система была плохо готова для запуска на коммуникаторах и требует значительных оптимизаций. Это решение вызвало критические оценки аналитиков: например, обозреватель ZDNet Кристофер Доусон назвал такой ход Google разочаровывающим. Но, согласно данным компанией обещаниям, Google открыла осенью 2011 года исходные коды следующей версии системы - Android 4.0 Ice Cream Sandwich.


Устройства c Android

Первым устройством, работающим под управлением Android, стал разработанный компанией HTC смартфон HTC Dream (официально выпущен сотовым оператором T-Mobile под названием T-Mobile G1), презентация которого состоялась 23 сентября 2008 года. Вскоре последовали многочисленные заявления других производителей смартфонов о намерении выпустить устройства на базе Android. С выходом Android третьей версии (Honeycomb), ориентированной на планшеты, всё больше производителей стали объявлять и о выпуске планшетов на этой платформе. Также компания Google в сотрудничестве с разными гигантами мобильной индустрии выпускает собственные устройства в серии «Google Nexus». Именно эти устройства первыми получают обновления до новых версий.

Кроме смартфонов и планшетов операционную систему Android устанавливают и на другие устройства. Так, в конце 2009 года появилась в продаже первая фоторамка, работающая на Android. В июне 2011 года итальянская компания Blue Sky анонсировала выпуск интеллектуальных наручных часов i’mWatch под управлением ОС Android. В августе 2012 года Nikon представила первую в мире фотокамеру, которая также работает на платформе от Google. В уже упомянутой серии «Google Nexus» присутствуют не только смартфоны и планшеты, но и медиаплеер Nexus Q, работающий на Android.


Кроме того, энтузиасты портировали Android на ряд известных устройств, среди которых, например, смартфоны на платформе Windows Mobile HTC Touch Dual и HTC TyTN II, на которых Android был запущен в режиме эмуляции. Также было осуществлено полноценное портирование на такие устройства, как интернет-планшеты, работающие на Maemo - Nokia N810 и Nokia N900 (порт под названием Nitdroid), - и на смартфоны Nokia N9, работающий на платформе MeeGo, и HTC HD2, работающий на операционной системе Windows Mobile, на котором ОС Android можно запускать как с microSD-карты, так и с внутренней NAND-памяти. При этом установленная система имеет полную, ничем особо не ограниченную функциональность. Помимо этого есть удачный опыт установки Android на некоторые устройства Apple - iPhone, iPod Touch и iPad с помощью специальной программы под названием Openiboot, которая предназначена для запуска на данных устройствах разнообразных ОС, в том числе и Android. Появляются предварительные прошивки с ограниченной функциональностью на устройствах на операционной системе Bada. Компания Koolu не только занялась портированием Android на Neo FreeRunner, но и строила свой бизнес на продаже этих смартфонов с предустановленной мобильной платформой от Google. Первый официальный и общедоступный бета-релиз порта Android на Neo FreeRunner от Koolu состоялся в декабре 2008 года. Также Android портирован на архитектуру x86.


Источники

Википедия – Свободная энциклопедия, WikiPedia

android.com – Сайт Android

proandroid.net – Приложения для Android

youhtc.ru – Всё для телефонов НТС

Тебя никогда не интересовало, как работают fastboot или ADB? Или почему смартфон под управлением Android практически невозможно превратить в кирпич? Или, может быть, ты давно хотел узнать, где кроется магия фреймворка Xposed и зачем нужны загрузочные скрипты /system/etc/init.d? А как насчет консоли восстановления (recovery)? Это часть Android или вещь в себе и почему для установки сторонней прошивки обычный рекавери не подходит? Ответы на все эти и многие другие вопросы ты найдешь в данной статье.

Как работает Android

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

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

Шаг первый. ABOOT и таблица разделов

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

Протокол fastboot, в свою очередь, представляет собой систему управления загрузчиком с ПК, которая позволяет выполнять такие действия, как разлочка загрузчика, прошивка нового ядра и recovery, установка прошивки и многие другие. Смысл существования fastboot в том, чтобы иметь возможность восстановить смартфон в начальное состояние в ситуации, когда все остальные средства не работают. Fastboot останется на месте, даже если в результате экспериментов ты сотрешь со смартфона все разделы NAND-памяти, содержащие Android и recovery.

Получив управление, aboot проверяет таблицу разделов и передает управление ядру, прошитому в раздел с именем boot, после чего ядро извлекает в память RAM-образ из того же раздела и начинает загрузку либо Android, либо консоли восстановления. NAND-память в Android-устройствах поделена на шесть условно обязательных разделов:

  • boot - содержит ядро и RAM-диск, обычно имеет размер в районе 16 Мб;
  • recovery - консоль восстановления, состоит из ядра, набора консольных приложений и файла настроек, размер 16 Мб;
  • system - содержит Android, в современных девайсах имеет размер не менее 1 Гб;
  • cache - предназначен для хранения кешированных данных, также используется для сохранения прошивки в ходе OTA-обновления и поэтому имеет размер, сходный с размерами раздела system;
  • userdata - содержит настройки, приложения и данные пользователя, ему отводится все оставшееся пространство NAND-памяти;
  • misc - содержит флаг, определяющий, в каком режиме должна грузиться система: Android или recovery.
Кроме них, также могут существовать и другие разделы, однако общая разметка определяется еще на этапе проектирования смартфона и в случае aboot зашивается в код загрузчика. Это значит, что: 1) таблицу разделов нельзя убить, так как ее всегда можно восстановить с помощью команды fastboot oem format; 2) для изменения таблицы разделов придется разлочить и перепрошить загрузчик с новыми параметрами. Из этого правила, однако, бывают исключения. Например, загрузчик того же Rockchip хранит информацию о разделах в первом блоке NAND-памяти, так что для ее изменения перепрошивка загрузчика не нужна.

Часть кода загрузчика, определяющая таблицу разделов


Особенно интересен раздел misc. Существует предположение, что изначально он был создан для хранения различных настроек независимо от основной системы, но в данный момент используется только для одной цели: указать загрузчику, из какого раздела нужно грузить систему - boot или recovery. Эту возможность, в частности, использует приложение ROM Manager для автоматической перезагрузки системы в recovery с автоматической же установкой прошивки. На ее же основе построен механизм двойной загрузки Ubuntu Touch, которая прошивает загрузчик Ubuntu в recovery и позволяет управлять тем, какую систему грузить в следующий раз. Стер раздел misc - загружается Android, заполнил данными - загружается recovery… то есть Ubuntu Touch.

Шаг второй. Раздел boot

Если в разделе misc не стоит флаг загрузки в recovery, aboot передает управление коду, расположенному в разделе boot. Это не что иное, как ядро Linux; оно находится в начале раздела, а сразу за ним следует упакованный с помощью архиваторов cpio и gzip образ RAM-диска, содержащий необходимые для работы Android каталоги, систему инициализации init и другие инструменты. Никакой файловой системы на разделе boot нет, ядро и RAM-диск просто следуют друг за другом. Содержимое RAM-диска такое:

  • data - каталог для монтирования одноименного раздела;
  • dev - файлы устройств;
  • proc - сюда монтируется procfs;
  • res - набор изображений для charger (см. ниже);
  • sbin - набор подсобных утилит и демонов (adbd, например);
  • sys - сюда монтируется sysfs;
  • system - каталог для монтирования системного раздела;
  • charger - приложение для отображения процесса зарядки;
  • build.prop - системные настройки;
  • init - система инициализации;
  • init.rc - настройки системы инициализации;
  • ueventd.rc - настройки демона uventd, входящего в состав init.
Это, если можно так выразиться, скелет системы: набор каталогов для подключения файловых систем из разделов NAND-памяти и система инициализации, которая займется всей остальной работой по загрузке системы. Центральный элемент здесь - приложение init и его конфиг init.rc, о которых во всех подробностях я расскажу позже. А пока хочу обратить внимание на файлы charger и ueventd.rc, а также каталоги sbin, proc и sys.

Файл charger - это небольшое приложение, единственная задача которого - вывести на экран значок батареи. Он не имеет никакого отношения к Android и используется тогда, когда устройство подключается к заряднику в выключенном состоянии. В этом случае загрузки Android не происходит, а система просто загружает ядро, подключает RAM-диск и запускает charger. Последний выводит на экран иконку батареи, изображение которой во всех возможных состояниях хранится в обычных PNG-файлах внутри каталога res.

Файл ueventd.rc представляет собой конфиг, определяющий, какие файлы устройств в каталоге sys должны быть созданы на этапе загрузки системы. В основанных на ядре Linux системах доступ к железу осуществляется через специальные файлы внутри каталога dev, а за их создание в Android отвечает демон ueventd, являющийся частью init. В нормальной ситуации он работает в автоматическом режиме, принимая команды на создание файлов от ядра, но некоторые файлы необходимо создавать самостоятельно. Они перечислены в ueventd.rc.

Каталог sbin в стоковом Android обычно не содержит ничего, кроме adbd, то есть демона ADB, который отвечает за отладку системы с ПК. Он запускается на раннем этапе загрузки ОС и позволяет выявить возможные проблемы на этапе инициализации ОС. В кастомных прошивках в этом каталоге можно найти кучу других файлов, например mke2fs, которая может потребоваться, если разделы необходимо переформатировать в ext3/4. Также модеры часто помещают туда BusyBox, с помощью которого можно вызвать сотни Linux-команд.

Каталог proc для Linux стандартен, на следующих этапах загрузки init подключит к нему procfs, виртуальную файловую систему, которая предоставляет доступ к информации обо всех процессах системы. К каталогу sys система подключит sysfs, открывающую доступ к информации о железе и его настройкам. С помощью sysfs можно, например, отправить устройство в сон или изменить используемый алгоритм энергосбережения.

Файл build.prop предназначен для хранения низкоуровневых настроек Android. Позже система обнулит эти настройки и перезапишет их значениями из недоступного пока файла system/build.prop.


Корневой раздел ТВ-приставки OUYA


Шаг второй, альтернативный. Раздел recovery

В том случае, если флаг загрузки recovery в разделе misc установлен или пользователь включил смартфон с зажатой клавишей уменьшения громкости, aboot передаст управление коду, расположенному в начале раздела recovery. Как и раздел boot, он содержит ядро и RAM-диск, который распаковывается в память и становится корнем файловой системы. Однако содержимое RAM-диска здесь несколько другое.

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

В стандартном (стоковом) recovery таких функций обычно всего три: установка подписанных ключом производителя смартфона прошивок, вайп и перезагрузка. В модифицированных сторонних recovery, таких как ClockworkMod и TWRP, функций гораздо больше. Они умеют форматировать файловые системы, устанавливать прошивки, подписанные любыми ключами (читай: кастомные), монтировать файловые системы на других разделах (в целях отладки ОС) и включают в себя поддержку скриптов, которая позволяет автоматизировать процесс прошивки и многие другие функции.

С помощью скриптов, например, можно сделать так, чтобы после загрузки recovery автоматически нашел на карте памяти нужные прошивки, установил их и перезагрузился в Android. Эта возможность используется инструментами ROM Manager, auto-flasher, а также механизмом автоматического обновления CyanogenMod и других прошивок.

Кастомные рекавери также поддерживают скрипты бэкапа, располагающиеся в каталоге /system/addon.d/. Перед прошивкой recovery проверяет наличие скриптов и выполняет их перед тем, как произвести прошивку. Благодаря таким скриптам gapps не исчезают после установки новой версии прошивки.

Шаг третий. Инициализация

Итак, получив управление, ядро подключает RAM-диск и по окончании инициализации всех своих подсистем и драйверов запускает процесс init, с которого начинается инициализация Android. Как я уже говорил, у init есть конфигурационный файл init.rc, из которого процесс узнает о том, что конкретно он должен сделать, чтобы поднять систему. В современных смартфонах этот конфиг имеет внушительную длину в несколько сот строк и к тому же снабжен прицепом из нескольких дочерних конфигов, которые подключаются к основному с помощью директивы import. Тем не менее его формат достаточно простой и по сути представляет собой набор команд, разделенных на блоки.

Каждый блок определяет стадию загрузки или, выражаясь языком разработчиков Android, действие. Блоки отделены друг от друга директивой on, за которой следует имя действия, например on early-init или on post-fs. Блок команд будет выполнен только в том случае, если сработает одноименный триггер. По мере загрузки init будет по очереди активировать триггеры early-init, init, early-fs, fs, post-fs, early-boot и boot, запуская таким образом соответствующие блоки команд.


Часть конфига init.rc из CyanogenMod


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

Наиболее примечательный из дополнительных конфигов носит имя initrc.имя_устройства.rc, где имя устройства определяется автоматически на основе содержимого системной переменной ro.hardware. Это платформенно-зависимый конфигурационный файл, который содержит блоки команд, специфичные для конкретного устройства. Кроме команд, отвечающих за тюнинг ядра, он также содержит примерно такую команду:

Код:

Mount_all ./fstab.имя_устройства

Она означает, что теперь init должен подключить все файловые системы, перечисленные в файле./fstab.имя_устройства, который имеет следующую структуру:

Код:

Имя_устройства_(раздела) точка_монтирования файловая_система опции_фс прочие опции

Обычно в нем содержатся инструкции по подключению файловых систем из внутренних NAND-разделов к каталогам /system (ОС), /data (настройки приложений) и /cache (кешированные данные). Однако слегка изменив этот файл, мы можем заставить init загрузить систему с карты памяти. Для этого достаточно разбить карту памяти на три 4 раздела: 1 Гб / ext4, 2 Гб / ext4, 1 Гб / ext4 и оставшееся пространство fat32. Далее необходимо определить имена разделов карты памяти в каталоге /dev (для разных устройств они отличаются) и заменить ими оригинальные имена устройств в файле fstab.


Типичное содержимое файла fstab


В конце блока boot init, скорее всего, встретит команду class_start default, которая сообщит, что далее следует запустить все перечисленные в конфиге службы, имеющие отношение к классу default. Описание служб начинается с директивы service, за которой следует имя службы и команда, которая должна быть выполнена для ее запуска. В отличие от команд, перечисленных в блоках, службы должны работать все время, поэтому на протяжении всей жизни смартфона init будет висеть в фоне и следить за этим.

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

Шаг четвертый. Zygote и app_process

На определенном этапе загрузки init встретит в конце конфига примерно такой блок:

Код:

Service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class default socket zygote stream 660 root system onrestart write /sys/android_power/request_state wake onrestart write /sys/power/state on onrestart restart media onrestart restart netd

Это описание службы Zygote, ключевого компонента любой Android-системы, который ответственен за инициализацию, старт системных служб, запуск и остановку пользовательских приложений и многие другие задачи. Zygote запускается с помощью небольшого приложения /system/bin/app_process, что очень хорошо видно на приведенном выше куске конфига. Задача app_proccess - запустить виртуальную машину Dalvik, код которой располагается в разделяемой библиотеке /system/lib/libandroid_runtime.so, а затем поверх нее запустить Zygote.

Когда все это будет сделано и Zygote получит управление, он начинает формирование среды исполнения Java-приложений с помощью загрузки всех Java-классов фреймворка (сейчас их более 2000). Затем он запускает system_server, включающий в себя большинство высокоуровневых (написанных на Java) системных сервисов, в том числе Window Manager, Status Bar, Package Manager и, что самое важное, Activity Manager, который в будущем будет ответственен за получение сигналов о старте и завершении приложений.

После этого Zygote открывает сокет /dev/socket/zygote и уходит в сон, ожидая данные. В это время запущенный ранее Activity Manager посылает широковещательный интент Intent.CATEGORY_HOME, чтобы найти приложение, отвечающее за формирование рабочего стола, и отдает его имя Zygote через сокет. Последний, в свою очередь, форкается и запускает приложение поверх виртуальной машины. Вуаля, у нас на экране появляется рабочий стол, найденный Activity Manager и запущенный Zygote, и статусная строка, запущенная system_server в рамках службы Status Bar. После тапа по иконке рабочий стол пошлет интент с именем этого приложения, его примет Activity Manager и передаст команду на старт приложения демону Zygote

Все это может выглядеть несколько непонятно, но самое главное - запомнить три простые вещи:

  • Процесс запуска Android делится на две ключевые стадии: до Zygote и после. До старта Zygote система инициализирует низкоуровневые компоненты ОС. Это такие операции, как подключение (монтирование) файловых систем, запуск низкоуровневых служб (например rild, отвечающий за работу с GSM-модемом, SurfaceFlinger, управляющий тем, что изображено на экране, vold, управляющий подключенными файловыми системами). После запуска Zygote начинается инициализация исключительно Java-компонентов, которые составляют 80% операционной системы. Этим, в частности, пользуется известный фреймворк Xposed, который при установке подменяет app_process на собственную модифицированную версию, которая способна перехватывать вызовы любых Java-классов, подменяя их на любые другие. Именно поэтому у модулей Xposed такие широкие возможности по модификации внешнего вида и поведения Android. На самом деле они ничего не изменяют в системе, а просто заставляют ее использовать сторонние компоненты вместо своих.
  • Java-приложения никогда не запускаются «с нуля». Когда Zygote получает запрос на старт приложения от Activity Manager, он не запускает новую виртуальную машину, а просто форкается, то есть копирует самого себя и затем запускает поверх полученной копии виртуальной машины нужное приложение. Такой принцип работы позволяет, во-первых, свести расход памяти к минимуму, так как Linux при форке копирует память в режиме copy-on-write (новый процесс ссылается на память старого), а во-вторых, существенно ускорить запуск приложения: форк процесса происходит намного быстрее запуска новой виртуальной машины и загрузки нужных приложению Java-классов.
  • В Android повсеместно используются интенты. Для общения между собой компоненты Android никогда не применяют прямой вызов процедур и классов. Вместо этого используется система сообщений (интентов), которая, кроме высокого уровня безопасности, дает также множество других вкусностей, таких как, например, возможность вызвать приложение, ничего о нем не зная. Выше я уже писал, что для запуска рабочего стола системе достаточно послать интент Intent.CATEGORY_HOME, на который откликнется любое приложение, способное выполнять функцию лончера. Таким же образом работает кнопка «Поделиться», а также множество других компонентов системы.

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

История появления

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

История создания ОС началась еще в 2003 году. В то время была основана небольшая организация под названием Android inc. Её учредителями были Рич Майнер, Крис Уайт, Энди Рубин и Ник Сирс. Уже тогда велись некоторые разработки, которые планировалось реализовать в новой операционной системе. Компания осуществляла свою деятельность в условиях строжайшей секретности.

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

После этого была основана корпорация Open Handset Alliance. В её состав вошли передовые изготовители мобильных устройств. В 2007 году была впервые представлена платформа Андроид. Как известно в её основе лежит ядро Linux. Первая версия данной операционной системы вышла в 2008 году.

Что это такое

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

Всё необходимое программное обеспечение можно скачать с Play Market. На данном сайте собранно более 700 тысяч программ. Широкий ассортимент позволит отыскать любое нужное приложение. С помощью операционной системы можно с легкостью получить доступ к интернету, смотреть видеофайлы, общаться в социальных сетях, слушать музыку, делать фотографии и тут же размещать их на своем аккаунте или читать электронные книги.

Стоит отметить, что ОС является совершенно бесплатной. Кроме того, она очень проста в использовании. Чтобы разобраться в интерфейсе не понадобится много времени. Благодаря всем своим достоинствам она стала самой распространенной в мире. За 2014 год было продано более 86% устройств, функционирующих на данной платформе.

Видео: телефон на Андроид

Применение ОС

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

Фото: Android 4.0 — это самая последняя мобильная версия

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

Пользоваться Андроидом не так и сложно как кажется. С её помощью на устройстве можно выполнять практически те же действия, что и на компьютере.

Система предусматривает несколько стандартных приложений. Среди них есть:

  • браузер;
  • электронная почта;
  • календарь;
  • голосовой поиск;
  • соцсети;
  • навигатор;
  • погода;
  • новости.

Все приложения от компании Гугл.

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

Чем хороша

Данная ОС обладает рядом достоинств. Главными из них являются:


Этапы развития Android

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

В 2009 году было представлено пять обновленных версий:


2010 год ознаменовался выходом еще двух версий. Ими стали:


Следующей разработкой производителей стала платформа 3.0, которая была презентована в 2011 году. Новая ОС была специально предназначена для планшетов.


Данная система отличается от предыдущих:
  • улучшенным интерфейсом;
  • возможностью синхронизации ссылок с Гугл Хром;
  • поддержкой внешней клавиатуры;
  • теперь стало возможным изменять размер виджетов на экране;
  • работа на многоядерном процессоре.

Разработчики на этом не остановились и создали Андроид 4.0, который получил название «Ice Cream Sandwich». Эта платформа стала более универсальной. Она может использоваться как в телефоне, так и в планшете.

Фото: Андроид 4.0 «Ice Cream Sandwich»

В ОС присутствует масса новых функций и доработок:

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

На протяжении 2012 и 2013 годов производители трудились над разработкой ОС «Jelly Bean» .

Следующими версиями стали 4.1, 4.2, 4.3. Новые изменения, главным образом, коснулись быстроты работы интерфейса. Благодаря новым наработкам была увеличена производительность. Теперь параллельно работают графический процессор и центральный.

В обновленной версии платформы появились:


В конце 2013 была анонсирована еще одна версия Android 4.4 «Kitkat». Новая платформа была оптимизирована для работы на более дешевых устройствах, которые имеют оперативную память 512 МБ.

Здесь также присутствуют некоторые изменения:

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

Последней разработкой компании стала версия 5. Новая ОС имеет название «Lollipop». Главной изюминкой стал дизайн Material design, который отличается своей многофункциональностью.

Конкуренты

Главные конкуренты, с которыми платформе Android приходится бороться за пальму первенства это:

  • Apple iPhoneOS;
  • Microsoft Windows Mobile;
  • RIM BlackBerry OS;
  • Maemo/MeeGo;
  • Samsung Bada OS;
  • Palm webOS;
  • Symbian OS.

На сегодня Андроид стал наиболее распространенной мобильной платформой в мире, нежели iOS. Однако в скором времени планируется презентация новой ОС Ubuntu Phone. Возможно, она станет еще одним серьезным конкурентом Андроида.

Устройства на Андроид

В 2008 году было выпущено первое устройство, которое работало на базе Андроид. Девайс был разработан компанией HTC. Им стал смартфон под названием HTC Dream. После этого еще несколько производителей телефонов изъявили желание выпускать мобильные устройства с поддержкой этой операционной системы.

Вскоре был анонсирован планшет на платформе Android. В 2009 году на рынке появилась фоторамка, работающая на этой ОС. Кроме того, через 2 года организация Blue Sky разработала новые наручные часы, которые получили название i’m Watch. Они также поддерживают данную систему.

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

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

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