Андроид это что такое
Перейти к содержимому

Андроид это что такое

  • автор:

Как работает Android, часть 1

В этой серии статей я расскажу о внутреннем устройстве Android — о процессе загрузки, о содержимом файловой системы, о Binder и Android Runtime, о том, из чего состоят, как устанавливаются, запускаются, работают и взаимодействуют между собой приложения, об Android Framework, и о том, как в Android обеспечивается безопасность.

  • Как работает Android, часть 1

Немного фактов

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

Android — свободный и открытый проект. Большинство исходного кода (который можно найти на https://source.android.com) распространяется под свободной лицензией Apache 2.0.

Компания Android Inc. была основана в 2003 году и в 2005 году куплена Google. Публичная бета Android вышла в 2007 году, а первая стабильная версия — в 2008, с тех пор мажорные релизы выходят примерно раз в год. Последняя на момент написания стабильная версия Android — 7.1.2 Nougat.

Android is Linux

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

Среди исходной команды разработчиков Android был Robert Love, один из самых известных разработчиков ядра Linux, да и сейчас компания Google остаётся одним из самых активных контрибьюторов в ядро, поэтому неудивительно, что Android построен на основе Linux.

Как и в других Linux-системах, ядро Linux обеспечивает такие низкоуровневые вещи, как управление памятью, защиту данных, поддержку мультипроцессности и многопоточности. Но — за несколькими исключениями — вы не найдёте в Android других привычных компонентов GNU/Linux-систем: здесь нет ничего от проекта GNU, не используется X.Org, ни даже systemd. Все эти компоненты заменены аналогами, более приспособленными для использования в условиях ограниченной памяти, низкой скорости процессора и минимального потребления энергии — таким образом, Android больше похож на встраиваемую (embedded) Linux-систему, чем на GNU/Linux.

Другая причина того, что в Android не используется софт от GNU — известная политика «no GPL in userspace»:

We are sometimes asked why Apache Software License 2.0 is the preferred license for Android. For userspace (that is, non-kernel) software, we do in fact prefer ASL 2.0 (and similar licenses like BSD, MIT, etc.) over other licenses such as LGPL.

Android is about freedom and choice. The purpose of Android is promote openness in the mobile world, and we don’t believe it’s possible to predict or dictate all the uses to which people will want to put our software. So, while we encourage everyone to make devices that are open and modifiable, we don’t believe it is our place to force them to do so. Using LGPL libraries would often force them to do just that.

Само ядро Linux в Android тоже немного модифицировано: было добавлено несколько небольших компонентов, в том числе ashmem (anonymous shared memory), Binder driver (часть большого и важного фреймворка Binder, о котором я расскажу ниже), wakelocks (управление спящим режимом) и low memory killer. Исходно они представляли собой патчи к ядру, но их код был довольно быстро добавлен назад в upstream-ядро. Тем не менее, вы не найдёте их в «обычном линуксе»: большинство других дистрибутивов отключают эти компоненты при сборке.

В качестве libc (стандартной библиотеки языка C) в Android используется не GNU C library (glibc), а собственная минималистичная реализация под названием bionic, оптимизированная для встраиваемых (embedded) систем — она значительно быстрее, меньше и менее требовательна к памяти, чем glibc, которая обросла множеством слоёв совместимости.

В Android есть оболочка командной строки (shell) и множество стандартных для Unix-подобных систем команд/программ. Во встраиваемых системах для этого обычно используется пакет Busybox, реализующий функциональность многих команд в одном исполняемом файле; в Android используется его аналог под названием Toybox. Как и в «обычных» дистрибутивах Linux (и в отличие от встраиваемых систем), основным способом взаимодействия с системой является графический интерфейс, а не командная строка. Тем не менее, «добраться» до командной строки очень просто — достаточно запустить приложение-эмулятор терминала. По умолчанию он обычно не установлен, но его легко, например, скачать из Play Store (Terminal Emulator for Android, Material Terminal, Termux). Во многих «продвинутых» дистрибутивах Android — таких, как LineageOS (бывший CyanogenMod) — эмулятор терминала предустановлен.

Эмулятор терминала на Android

Второй вариант — подключиться к Android-устройству с компьютера через Android Debug Bridge (adb). Это очень похоже на подключение через SSH:

Из других знакомых компонентов в Android используются библиотека FreeType (для отображения текста), графические API OpenGL ES, EGL и Vulkan, а также легковесная СУБД SQLite.

Кроме того, раньше для реализации WebView использовался браузерный движок WebKit, но начиная с версии 7.0 вместо этого используется установленное приложение Chrome (или другое; список приложений, которым разрешено выступать в качестве WebView provider, конфигурируется на этапе компиляции системы). Внутри себя Chrome тоже использует основанный на WebKit движок Blink, но в отличие от системной библиотеки, Chrome обновляется через Play Store — таким образом, все приложения, использующие WebView, автоматически получают последние улучшения и исправления уязвимостей.

Стек технологий Android

It’s all about apps

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

Основная единица в Unix-подобных системах — процесс. И низкоуровневые системные сервисы, и отдельные команды в shell’е, и графические приложения — это процессы. В большинстве случаев процесс представляет собой чёрный ящик для остальной системы — другие компоненты системы не знают и не заботятся о его состоянии. Процесс начинает выполняться с вызова функции main() (на самом деле _start ), и дальше реализует какую-то свою логику, взаимодействуя с остальной системой через системные вызовы и простейшее межпроцессное общение (IPC).

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

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

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

Этот механизм — Binder.

Binder

Binder — это платформа для быстрого, удобного и объектно-ориентированного межпроцессного взаимодействия.

Разработка Binder началась в Be Inc. (для BeOS), затем он был портирован на Linux и открыт. Основной разработчик Binder, Dianne Hackborn, была и остаётся одним из основных разработчиков Android. За время разработки Android Binder был полностью переписан.

Binder работает не поверх System V IPC (которое даже не поддерживается в bionic), а использует свой небольшой модуль ядра, взаимодействие с которым из userspace происходит через системные вызовы (в основном ioctl ) на «виртуальном устройстве» /dev/binder . Со стороны userspace низкоуровневая работа с Binder, в том числе взаимодействие с /dev/binder и marshalling/unmarshalling данных, реализована в библиотеке libbinder.

Низкоуровневые части Binder оперируют в терминах объектов, которые могут пересылаться между процессами. При этом используется подсчёт ссылок (reference-counting) для автоматического освобождения неиспользуемых общих ресурсов и уведомление о завершении удалённого процесса (link-to-death) для освобождения ресурсов внутри процесса.

Высокоуровневые части Binder работают в терминах интерфейсов, сервисов и прокси-объектов. Описание интерфейса, предоставляемого программой другим программам, записывается на специальном языке AIDL (Android Interface Definition Language), внешне очень похожем на объявление интерфейсов в Java. По этому описанию автоматически генерируется настоящий Java-интерфейс, который потом может использоваться и клиентами, и самим сервисом. Кроме того, по .aidl -файлу автоматически генерируются два специальных класса: Proxy (для использования со стороны клиента) и Stub (со стороны сервиса), реализующие этот интерфейс.

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

Stub работает наоборот: он принимает входящие вызовы через libbinder, десериализует аргументы, вызывает абстрактную реализацию метода, сериализует возвращаемое значение и передаёт его процессу-клиенту. Соответственно, для реализации сервиса программисту достаточно реализовать абстрактные методы в унаследованном от Stub классе.

Такая реализация Binder на уровне Java позволяет большинству кода использовать прокси-объект, вообще не задумываясь о том, что его функциональность реализована в другом процессе. Для обеспечения полной прозрачности Binder поддерживает вложенные и рекурсивные межпроцессные вызовы. Более того, использование Binder со стороны клиента выглядит совершенно одинаково, независимо от того, расположена ли реализация используемого сервиса в том же или в отдельном процессе.

Для того, чтобы разные процессы могли «найти» сервисы друг друга, в Android есть специальный сервис ServiceManager, который хранит, регистрирует и выдаёт токены всех остальных сервисов.

Binder широко используется в Android для реализации системных сервисов (например, пакетного менеджера и буфера обмена), но детали этого скрыты от разработчика приложений высокоуровневыми классами в Android Framework, такими как Activity, Intent и Context. Приложения могут также использовать Binder для предоставления друг другу собственных сервисов — например, приложение Google Play Services вообще не имеет собственного графического интерфейса для пользователя, но предоставляет разработчикам других приложений возможность пользоваться сервисами Google Play.

Подробнее про Binder можно узнать по этим ссылкам:

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

Андроид

Андро́ид (от греч. корня ἀνδρ- слова ἀνήρ — «мужчина» и суффикса -oid — от греч. слова εἶδος — «подобие») — человекоподобный робот. Слово дроид (робот из эпопеи «Звёздные войны») Джордж Лукас получил путём сокращения от «андроид».

Содержание

История

Создание первого андроида приписывается Альберту Кельнскому [1] . Значительную роль в популяризации термина сыграл французский писатель Филипп Огюст Матиас Вилье де Лиль-Адам, использовав его в своём романе «Будущая Ева» (фр.  L’Ève future ) для обозначения человекоподобного робота, описывая искусственную женщину Адали (Hadaly). Адали разговаривала с помощью фонографа, выдающего одну за другой классические цитаты.

В некоторых русскоязычных источниках выдвигается гипотеза, что слово андроид произошло от имени Анри-Луи Жаке-Дроз (фр.  Henri-Louis Jaquet-Droz ) (1752—1791) [2] [3] , сына и помощника создателя первых механических игрушек — Пьера Жаке-Дроз   (фр.) русск. . Однако, французское имя Henri-Louis Jaquet-Droz (произносится как Анри-Луи Жаке-Дроз) имеет мало общего со словом Androïde (произносится примерно как «одруид»). К тому же, слово андроид (англ.  Androides ) и его этимология приводятся в «Циклопедии» Эфрейма Чэймберса, изданной ещё в 1728 году. В языковых словарях данная версия происхождения термина также не поддерживается.

Андроиды в научной фантастике

Андроиды — это человекоподобные роботы. Часто, для увеличения сходства с человеком в конструкцию андроидов добавляют различные органические элементы (кожа, ткани, кровь и т. д.).

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

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

Андроиды в литературе и кино

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

Что такое Андроид: знакомимся с мобильным чудом

Что же это за зверь такой – Андроид? Последнее время всё чаще это волшебное слово можно услышать где угодно: в ресторане, метро, из телевизора. Причем произносить его могут и стар и млад. Многие его произносят, кто-то даже рассказывает о нём, но не все понимают, что из себя представляет Android.

Настала пора рассказать об этом удивительном создании и журнал ПрофиКоммент посвящает этому явлению данную статью.

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

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

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

значок андроид

Что это такое: Android – это мобильная операционная система, которая превратила обычные мобильные телефоны в карманные компьютеры, то есть смартфоны и планшеты.

Немного истории

Еще в начале нулевых никто и не слышал об Андроиде, да и смартфоны тогда были в диковинку. Компания Нокиа представляла какое-то подобие умного телефона, но модели были громоздкими, умели слишком мало, не было сенсорного экрана. Одним словом технологии топтались на месте. Но вот в один прекрасный день на свет появилась идея отцов-основателей Apple под руководством Стива Джобса: а не соединить ли нам мульти-тач и мобильный телефон? Мульти-тач – это устройство, позволяющее водить пальцем по стеклу (или другой подобной поверхности) и управлять без клавиш. Так в середине 2007 года появился первый iPhone на операционной системе iOS.

И почти в это же время, в конце 2007 года, компания Google выпустила свою мобильную операционную систему Андроид. А первое устройство, работающее на Андроиде – смартфон HTC Dream – было выпущено на год позже осенью 2008-го. Первоначально компания Apple со своим iPhone занимала лидирующие позиции на рынке смартфонов, но так как гугловский Андроид (в отличие от iOS) был бесплатным и под него могли выпускать смартфоны любые компании, доля рынка постепенно перешла в руки Android.

По состоянию на конец 2016 года 85% (а сейчас и того более) всех мобильных устройств в мире работали на Андроиде.

Версии Андроид

Как и полагается операционной системе, Android регулярно обновляется и выходит в свет в виде новых версий. Причем, что интересно, каждая версия Андроид кроме цифрового обозначения носит и именное название. Компания Гугл придумала называть каждую версию Андроид по названию какого-нибудь десерта. Например, последняя текущая версия Андроид 7.1 именуется «nougat», что в переводе на человеческий означает «нуга».

Сильное распространение получили версии Андроид 4 и более поздние – на них в настоящее время работает подавляющее количество мобильных девайсов.

Как включить Андроид

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

Чтобы включить мобильный телефон или планшет, которые работают под ОС Андроид, достаточно нажать клавишу включения. Она же кнопка POWER или Power Button. На разных телефонах она находится в разном месте, но однозначно эта кнопка должна быть. Так как по другому Андроиды и не включаются. Например, в моделях Самсунг кнопка включения может находиться справа от экрана, а две другие кнопки (двойная качелька) регулятора громкости – слева.

Кнопка включения Самсунг Галакси S7

Но на многих других моделях смартфонов кнопка Power располагается справа

Кнопка включения Xiaomi Redmi

Причем нажатие должно быть примерно секунду, после чего вы станете очевидцем невиданного чуда: смартфон оживёт и в нём что-то начнёт загружаться. Это как раз наша мобильная операционная система подготавливается к работе. Примерно через 10-20 секунд, а может и дольше, ваш смартфон наконец полностью загрузится и вы увидите что-то типа такого:

Главное окно Андроид

УРА! Теперь вы можете пользоваться вашим гаджетом! В целях экономии энергии Андроид настроен таким образом, что экран смартфона через определенное время гаснет и чтобы его снова включить, достаточно нажать на кнопку Power. Эту настройку вы можете изменить, зайдя в меню настроек. Но об этом в следующей статье.

Что может Андроид

Тут на ум приходит весёлая песенка про папу: «Папа может, папа может всё что угодно… только мамой он не может стать». Что-то вроде этого. Так и с Андроидом – он может практически всё что угодно:

  • Устанавливать приложения, расширяющие возможности устройства;
  • Подключаться к интернету через беспроводные сети;
  • Выходить в интернет с помощью мобильного браузера и посещать любые страницы;
  • Отправлять и принимать почту по e-mail;
  • Снимать видео и делать фото высокого разрешения;
  • Подключаться к GPS, Wi-Fi, 3G, 4G и любым беспроводным модулям;
  • Общаться по видеосвязи (Скайп, Viber);
  • Управляться не только пальцами (мульти-тач или тач-скрин), но мышкой и клавиатурой;
  • Подключаться к ТВ, монитору, принтеру, камере и другим внешним устройствам;
  • Использовать защиту в виде графического ключа и сканера отпечатка пальца;
  • И конечно совершать звонки по сотовой связи.

Как установить приложение на Андроид: подробная инструкция

Это самое важное преимущество Андроида – возможность дополнительных фишек после установки приложения. Например, можно установить игру, новостное приложение, карту 2ГИС, приложение ВКонтакте, Одноклассники, Фэйсбук, кошелек ВебМани или КИВИ и многие другие. Устанавливать приложения можно через встроенный в Андроид Плэймаркет.

Давайте рассмотрим пример, как установить приложение ВКонтакте для Андроида. Для установки заходим в установленные Приложения Google:

заходим в настройки Google

И здесь выбираем Play Маркет. Открывается промежуточное окно, где нужно выбрать «Игры и приложения» и нажать кнопку «Начать»:

Плэймаркет главная

Перед нами открывается главное окно сайта Google Play (оно же Плэй Маркет). Выбираем кнопку «Лучшее»:

главное окно сайта Google Play

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

Бесплатные приложения сайта Google Play Бесплатные приложения Google Play самые популярные бесплатные приложения сайта Google Play

Допустим, нам захотелось установить приложение ВКонтакте. Нажимаем на три точки справа от Приложения и всплывает подсказка «Установить»:

Приложение ВКонтакте на Гугл плэй

Можно нажать на эту кнопку, а можно сначала зайти и почитать описание этого приложения. Если просто нажать на Приложение ВКонтакте, нам откроется окно с подробным описанием этого приложения:

Описание приложения ВК

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

Технические характеристики приложения ВК

Здесь указана версия приложения ВКонтакте, размер в мегабайтах (в данном случае приложение 34 МБ). Если у вашего смартфона ограниченный объем памяти, вам нужно следить, чтобы приложения не занимали очень много места. Приложение ВКонтакте для Андроид занимает относительно мало места.

Вроде всё посмотрели, почитали и теперь можно нажать на кнопку «Установить», после чего всплывает окно, в котором у нас спрашивают разрешения на наши данные:

ВКонтакте запрашивает разрешение на ваши данные

Нажимаем «Принять» и процесс установки запускается:

Процесс установки приложения ВКонтакте

По истечении минуты приложение установлено. Мы выходим назад в исходное меню нашего смартфона и видим, что на экране появился значок ВК:

Значок ВК на нашем экране

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

Как отключить Андроид

Вот мы поработали с нашим маленьким другом и чтобы батарея не разряжалась (а это пока беда многих смартфонов), нам нужно отключить питание на смартфоне. Сделать это очень просто. Чтобы отключить Андроид, надо нажать и не отпускать кнопку Power до тех пор, пока на экране не появится такое окно:

Отлючение Андроид

Нажимаем на «отключить питание» и наш мобильный товарищ отрубается. На этом знакомство с операционной системой Андроид считаем состоявшимся. В следующей статье мы рассмотрим подробно как настроить Андроид.

Что такое Андроид и его особенности

Что же такое система Android и чем она лучше (или хуже) других операционных систем — вопрос избитый.

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

Займем нейтральную позицию, обозначив лишь на факты.

Что же это такое на самом деле?

Андроид

Android – это популярная операционная система для мобильных устройств (платформа), построенная на ядре Linux.

В широкие массы система была внедрена по инициативе небезызвестного Google.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *