Как работает android – Android для чайников. Как найти общий язык с новым смартфоном? — android.mobile-review.com

alexxlab
alexxlab
21.02.2020

Содержание

Как работает Android, часть 3 / Ростелеком-Солар corporate blog / Habr

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

Статьи серии:



Web vs desktop

Если задуматься об отличиях современных веб-приложений от «обычных» десктопных приложений, можно — среди недостатков — выделить несколько преимуществ веба:


  • Веб-приложения переносимы между архитектурами и платформами, как и Java.
  • Веб-приложения не требуют установки и всегда обновлены, как и Android Instant Apps.

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

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

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


Activities & intents

Основной вид компонентов приложений под Android — это activity. Activity — это один «экран» приложения. Activity можно сравнить со страницей в вебе и с окном приложения в традиционном оконном интерфейсе.


Про окна

Собственно окна в Android тоже есть на более низком уровне — уровне window manager. Каждой activity обычно соответствует своё окно. Чаще всего окна activity развёрнуты на весь доступный экран, но:


  • Во-первых, Android поддерживает мультиоконный режим — split-screen, picture-in-picture и даже freeform.
  • Во-вторых, Android поддерживает подключение нескольких дисплеев.
  • В-третьих, activity может намеренно занимать небольшую часть экрана (Theme_Dialog).

Например, в приложении для электронной почты (email client) могут быть такие activity, как Inbox Activity (список входящих писем), Email Activity (чтение одного письма), Compose Activity (написание письма) и Settings Activity (настройки).

Как и страницы одного сайта, activity одного приложения могут запускаться как друг из друга, так и независимо друг от друга (другими приложениями). Если в вебе на другую страницу обращаются по URL (ссылке), то в Android activity запускаются через intent’ы.

Intent — это сообщение, которое указывает системе, что нужно «сделать» (например, открыть данный URL, написать письмо на данный адрес, позвонить на данный номер телефона или сделать фотографию).

Приложение может создать такой intent и передать его системе, а система решает, какая activity (или другой компонент) будет его выполнять (handle). Эта activity запускается системой (в существующем процессе приложения или в новом, если он ещё не запущен), ей передаётся этот intent, и она его выполняет.

Стандартный способ создавать intent’ы — через соответствующий класс в Android Framework. Для работы с activity и intent’ами из командной строки в Android есть команда am — обёртка над стандартным классом Activity Manager:

# передаём -a ACTION -d DATA
# открыть сайт
$ am start -a android.intent.action.VIEW -d http://example.com
# позвонить по телефону
$ am start -a android.intent.action.CALL -d tel:+7-916-271-05-83

Intent’ы могут быть явными (explicit) и неявными (implicit). Явный intent указывает идентификатор конкретного компонента, который нужно запустить — чаще всего это используется, чтобы запустить из одной activity другую внутри одного приложения (при этом intent может даже не содержать другой полезной информации).

Неявный intent обязательно должен указывать действие, которое нужно сделать. Каждая activity (и другие компоненты) указывают в манифесте приложения, какие intent’ы они готовы обрабатывать (например, ACTION_VIEW для ссылок с доменом https://example.com). Система выбирает подходящий компонент среди установленных и запускает его.

Если в системе есть несколько activity, которые готовы обработать intent, пользователю будет предоставлен выбор. Обычно это случается, когда установлено несколько аналогичных приложений, например несколько браузеров или фоторедакторов. Кроме того, приложение может явно попросить систему показать диалог выбора (на самом деле при этом переданный intent оборачивается в новый intent с

ACTION_CHOOSER) — это обычно используется для создания красивого диалога Share:

Кроме того, activity может вернуть результат в вызвавшую её activity. Например, activity в приложении-камере, которая умеет обрабатывать intent «сделать фотографию» (ACTION_IMAGE_CAPTURE) возвращает сделанную фотографию в ту activity, которая создала этот intent.

При этом приложению, содержащему исходную activity, не нужно разрешение на доступ к камере.

Таким образом, правильный способ приложению под Android сделать фотографию — это не потребовать разрешения на доступ к камере и использовать Camera API, а создать нужный intent и позволить системному приложению-камере сделать фото. Аналогично, вместо использования разрешения

READ_EXTERNAL_STORAGE и прямого доступа к файлам пользователя стоит дать пользователю возможность выбрать файл в системном файловом менеджере (тогда исходному приложению будет разрешён доступ именно к этому файлу).


A unique aspect of the Android system design is that any app can start another app’s component. For example, if you want the user to capture a photo with the device camera, there’s probably another app that does that and your app can use it instead of developing an activity to capture a photo yourself. You don’t need to incorporate or even link to the code from the camera app. Instead, you can simply start the activity in the camera app that captures a photo. When complete, the photo is even returned to your app so you can use it. To the user, it seems as if the camera is actually a part of your app.

При этом «системное» приложение — не обязательно то, которое было предустановлено производителем (или автором сборки Android). Все установленные приложения, которые умеют обрабатывать данный intent, в этом смысле равны между собой. Пользователь может выбрать любое из них в качестве приложения по умолчанию для таких intent’ов, а может выбирать нужное каждый раз. Выбранное приложение становится «системным» в том смысле, что пользователь выбрал, чтобы именно оно выполняло все задачи (то есть intent’ы) такого типа, возникающие в системе.

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

.


Про лончер

Этой логике подчиняются даже такие «части системы», как, например, домашний экран (лончер, launcher). Лончер — это специальное приложение со своими activity (которые используют специальные флаги вроде excludeFromRecents и launchMode="singleTask").

Нажатие кнопки «домой» создаёт intent категории HOME, который дальше проходит через обычный механизм обработки intent’ов — в том числе, если в системе установлено несколько лончеров и ни один не выбран в качестве лончера по умолчанию, система отобразит диалог выбора.

«Запуск» приложения из лончера тоже происходит через intent. Лончер создаёт явный intent категории LAUNCHER, который «обрабатывается» запуском основной activity приложения.

Приложение может иметь несколько activity, которые поддерживают такой intent, и отображаться в лончере несколько раз (при этом может понадобиться указать им разную

taskAffinity). Или не иметь ни одной и не отображаться в лончере вообще (но по-прежнему отображаться в полном списке установленных приложений в настройках). «Обычные» приложения так делают довольно редко; самый известный пример такого поведения — Google Play Services.

Многие операционные системы делятся на собственно операционную систему и приложения, установленные поверх, ничего друг о друге не знающие и не умеющие взаимодействовать. Система компонентов и intent’ов Android позволяет приложениям, по-прежнему абсолютно ничего друг о друге не зная, составлять для пользователя один интегрированный системный user experience — установленные приложения реализуют части одной большой системы, они составляют из себя систему. И это, с одной стороны, происходит прозрачно для пользователя, с другой — представляет неограниченные возможности для кастомизации.

По-моему, это очень красиво.


Tasks & back stack

Как я уже говорил, в браузере пользователь может переключаться не между сайтами, а между вкладками, история каждой из которых может содержать много страниц разных сайтов. Аналогично, в Android пользователь может переключаться между задачами (tasks), которые отображаются в виде карточек на recents screen. Каждая задача представляет собой back stack — несколько activity, «наложенных» друг на друга.

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

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

При запуске новой activity могут быть указаны специальные флаги, такие как singleTop, singleTask, singleInstance и CLEAR_TOP, которые модифицируют этот механизм. Например, приложения-браузеры обычно разрешают запуск только одной копии своей основной activity, и для переключения между открытыми страницами реализуют собственную систему вкладок. С другой стороны, Custom Tabs — пример activity в браузере (чаще всего Chrome), которая ведёт себя почти «как обычно», то есть показывает только одну страницу, но позволяет одновременно открывать несколько своих копий.


App lifecycle

Одно из основных ограничений встраиваемых и мобильных устройств — небольшое количество оперативной памяти (RAM). Если современные флагманские устройства уже оснащаются несколькими гигабайтами

оперативной памяти, то в первом смартфоне на Android, HTC Dream (он же T-Mobile G1), вышедшем в сентябре 2008 года, её было всего 192 мегабайта.

Проблема ограниченной памяти дополнительно осложняется тем, что в мобильных устройствах, в отличие от «обычных» компьютеров, не используются swap-разделы (и swap-файлы) — в том числе и из-за низкой (по сравнению с SSD и HDD) скорости доступа к SD-картам и встроенной флеш-памяти, где они могли бы размещаться. Начиная с версии 4.4 KitKat, Android использует zRAM swap, то есть эффективно сжимает малоиспользуемые участки памяти. Тем не менее, проблема ограниченной памяти остаётся.

Если все процессы представляют собой для системы чёрный ящик, лучшая из возможных стратегия поведения в случае нехватки свободной памяти — принудительно завершать («убивать») какие-то процессы, что и делает Linux Out Of Memory (OOM) Killer. Но Android знает, что происходит в системе, ему известно, какие приложения и какие их компоненты запущены, что позволяет реализовать гораздо более «умную» схему освобождения памяти.

Во-первых, когда свободная память заканчивается, Android явно просит приложения освободить ненужную память (например, сбросить кэш), вызывая методы onTrimMemory/onLowMemory. Во-вторых, Android может эффективно проводить сборку мусора в фоновых приложениях, освобождая память, которую они больше не используют (на уровне Java), при этом не замедляя работу текущего приложения.

Но основной механизм освобождения памяти в Android — это завершение наименее используемых приложений. Система автоматически выбирает приложения, наименее важные для пользователя (например, те, из которых пользователь давно ушёл), даёт их компонентам шанс дополнительно освободить ресурсы, вызывая такие методы, как onDestroy, и завершает их, полностью освобождая используемую ими память и ресурсы.

Если пользователь возвращается в activity приложения, завершённого системой из-за нехватки памяти, эта activity запускается снова. При этом перезапуск происходит прозрачно для пользователя, поскольку activity сохраняет своё состояние при завершении (onSaveInstanceState) и восстанавливает его при последующем запуске. Реализованные в Android Framework виджеты используют этот механизм, чтобы автоматически сохранить состояние интерфейса (UI) при перезапуске — с точностью до введённого в EditText текста, положения курсора, позиции прокрутки (scroll) и т.д. Разработчик приложения может дополнительно реализовать сохранение и восстановление каких-то ещё данных, специфичных для этого приложения.

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

С точки зрения пользователя этот механизм похож на использование swap: в обоих случаях при возвращении в выгруженную часть приложения приходится немного подождать, пока она загружается снова — в одном случае, с диска, в другом — пересоздаётся по сохранённому состоянию.

Именно этот механизм автоматического перезапуска и восстановления состояния создаёт у пользователя ощущение, что приложения «запущены всегда», избавляя его от необходимости явно запускать и закрывать приложения и сохранять введённые в них данные.


Services

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

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

Сервис нужен, чтобы сообщить системе, что в процессе приложения выполняются действия, которые не являются частью activity этого приложения. Сам по себе сервис не означает создание отдельного потока или процесса — его точки входа (entry points) запускаются в основном потоке приложения. Обычно реализация сервиса запускает дополнительные потоки и управляет ими самостоятельно.

Сервисы во многом похожи на activity: они тоже запускаются с помощью intent’ов и могут быть завершены системой при нехватке памяти.

Запущенные сервисы могут быть в трёх состояниях:


  • Foreground service — сервис, выполняющий действие, состояние которого важно для пользователя, например, загрузка файла или воспроизведение музыки. Такой сервис обязан отображать уведомление в системной шторке уведомлений (примеры: состояние загрузки, название текущей песни и управление воспроизведением). Система считает такой сервис примерно настолько же важным для пользователя, как и текущая activity, и завершит его только в крайнем случае.


  • Background service — сервис, выполняющий фоновое действие, состояние которого не интересует пользователя (чаще всего, синхронизацию). Такие сервисы могут быть завершены при нехватке памяти с гораздо большей вероятностью. В старых версиях Android большое количество одновременно запущенных фоновых сервисов часто становилось причиной «тормозов»; начиная с версии 8.0 Oreo, Android серьёзно ограничивает использование фоновых сервисов, принудительно завершая их через несколько минут после того, как пользователь выходит из приложения.


  • Bound service — сервис, обрабатывающий входящее Binder-подключение. Такие сервисы предоставляют какую-то функциональность для других приложений или системы (например, WallpaperService и Google Play Services). В этом случае система может автоматически запускать сервис при подключении к нему клиентов и останавливать его при их отключении.


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


  • Доступность сети. Здесь приложение может указать, требуется ли этому сервису наличие сетевого подключения, и если да, то возможна ли работа в роуминге или при использовании лимитного (metered) подключения.
  • Подключение к источнику питания, что позволяет сервисам выполняться, не «сажая батарею».
  • Бездействие (idle), что позволяет сервисам выполняться, пока устройство не используется, не замедляя работу во время активного использования.
  • Обновления контента — например, появление новой фотографии.
  • Период и крайний срок запуска — например, очистка кэша может производиться ежедневно, а синхронизация событий в календаре — каждый час.

JobScheduler планирует выполнение (реализованное как вызов через Binder) зарегистрированных в нём сервисов в соответствии с указанными критериями. Поскольку JobScheduler — общесистемный механизм, он учитывает при планировке критерии зарегистрированных сервисов всех установленных приложений. Например, он может запускать сервисы по очереди, а не одновременно, чтобы предотвратить резкую нагрузку на устройство во время использования, и планировать периодическое выполнение нескольких сервисов небольшими группами (batch), чтобы предотвратить постоянное энергозатратное включение-выключение радиооборудования.


Про TCP-соединение

Как можно заметить, использование JobScheduler не может заменить собой одного из вариантов использования фоновых сервисов — поддержания TCP-соединения с сервером для получения push-уведомлений. Если бы Android предоставлял приложениям такую возможность, устройству пришлось бы держать все приложения, соединяющиеся со своими серверами, запущенными всё время, а это, конечно, невозможно.

Решение этой проблемы — специальные push-сервисы, самый известный из которых — Firebase Cloud Messaging от Google (бывший Google Cloud Messaging).

Клиентская часть FCM реализована в приложении Google Play Services. Это приложение, которое специальным образом исключается из обычных ограничений на фоновые сервисы, поддерживает одно соединение с серверами Google. Разработчик, желающий отправить своему приложению push-уведомление, пересылает его через серверную часть FCM, после чего приложение Play Services, получив сообщение, передаёт его приложению, которому оно предназначено.

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


Broadcast receivers & content providers

Кроме activity и сервисов, у приложений под Android есть два других вида компонентов, менее интересных для обсуждения — это broadcast receiver’ы и content provider’ы.

Broadcast receiver — компонент, позволяющий приложению принимать broadcast’ы, специальный вид сообщений от системы или других приложений. Исходно broadcast’ы, как следует из названия, в основном использовались для рассылки широковещательных сообщений всем подписавшимся приложениям — например, система посылает сообщение AIRPLANE_MODE_CHANGED при включении или отключении самолётного режима.

Сейчас вместо подписки на такие broadcast’ы, как NEW_PICTURE и NEW_VIDEO, приложения должны использовать JobScheduler. Broadcast’ы используются либо для более редких событий (таких как BOOT_COMPLETED), либо с явными intent’ами, то есть именно в качестве сообщения от одного приложения к другому.

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

При этом приложение может хранить сами данные каким угодно образом, в том числе на устройстве в виде файлов, в настоящей базе данных (SQLite) или запрашивать их с сервера по сети. В этом смысле content provider — это унифицированный интерфейс для доступа к данным, независимо от формы их хранения.

Взаимодействие с content provider’ом во многом похоже на доступ к удалённой базе данных через REST API. Приложение-клиент запрашивает данные по URI (например, content://com.example.Dictionary.provider/words/42) через ContentResolver. Приложение-сервер определяет, к какому именно набору данных был сделан запрос, используя UriMatcher, и выполняет запрошенное действие (query, insert, update, delete).

Именно поверх content provider’ов реализован Storage Access Framework, позволяющий приложениям, хранящим файлы в облаке (например, Dropbox и Google Photos) предоставлять доступ к ним остальным приложениям, не занимая место на устройстве полной копией всех хранящихся в облаке файлов.



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

Как работает Android, часть 2 / Ростелеком-Солар corporate blog / Habr

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

Статьи серии:




Говоря про Unix- и Linux-корни Android, нужно вспомнить и о других проектах операционных систем, влияние которых можно проследить в Android, хотя они и не являются его прямыми предками.

Я уже упомянул про BeOS, в наследство от которой Android достался Binder.


Plan 9 from Bell Labs

Plan 9 — потомок Unix, логическое продолжение, развитие его идей и доведение их до совершенства. Plan 9 был разработан в Bell Labs той же командой, которая создала Unix и C — над ним работали такие люди, как Ken Thompson, Rob Pike, Dennis Ritchie, Brian Kernighan, Tom Duff, Doug McIlroy, Bjarne Stroustrup, Bruce Ellis и другие.

В Plan 9 взаимодействие процессов между собой и с ядром системы реализовано не через многочисленные системные вызовы и механизмы IPC, а через виртуальные текстовые файлы и файловые системы (развитие принципа Unix «всё — это файл»). При этом каждая группа процессов «видит» файловую систему по-своему (пространства имён, namespaces), что позволяет запускать разные части системы в разном окружении.

Например, чтобы получить позицию курсора мыши, приложения читают текстовый файл /dev/mouse. Оконная система rio предоставляет каждому приложению свою версию этого файла, в которой видны только события, относящиеся к окну этого приложения, и используются локальные по отношению к окну координаты. Сама rio читает события «настоящей» мыши через такой же файл /dev/mouse — в том виде, в котором его видит она. Если она запущена напрямую, этот файл предоставляется ядром и действительно описывает движения настоящей мыши, но она может быть совершенно прозрачно запущена в качестве приложения под другой копией rio, без какой-то специальной поддержки с её стороны.

Plan 9 полностью поддерживает доступ к удалённым файловым системам (используется собственный протокол 9P, кроме того, поддерживаются FTP и SFTP), что позволяет программам совершенно прозрачно получать доступ к удалённым файлам, интерфейсам и ресурсам. Такая «родная» сетевая прозрачность превращает Plan 9 в распределённую операционную систему — пользователь может физически находиться за одним компьютером, на котором запущена rio, запускать приложения на нескольких других, использовать в них файлы, хранящиеся на файловом сервере и выполнять вычисления на CPU-сервере — всё это полностью прозрачно и без специальной поддержки со стороны каждой из частей системы.

За счёт красиво спроектированной архитектуры Plan 9 значительно проще и меньше, чем Unix — на самом деле ядро Plan 9 даже в несколько раз меньше известного микроядра Mach.


Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.

Несмотря на техническое превосходство и наличие слоя совместимости с Unix, Plan 9 не получил широкого распространения. Тем не менее, многие идеи и технологии из Plan 9 получили распространение и были реализованы в других системах. Самая известная из них — кодировка UTF-8, которая была разработана в Plan 9 для обеспечения полной поддержки Unicode при сохранении обратной совместимости с ASCII — стала общепринятым стандартом.

Больше всего идей и технологий из Plan 9 реализовано в Linux:


  • файловая система /proc (procfs)
  • системный вызов clone (аналог rfork из Plan 9)
  • поддержка пространств имён монтирования (mount namespaces)
  • поддержка файловых систем, реализованных в пользовательском пространстве (filesystem in userspace, FUSE)
  • поддержка протокола 9P

Многое из этого используется, в том числе, и в Android. Кроме того, в Android реализован механизм intent’ов, похожий на plumber из Plan 9; о нём я расскажу в следующей статье.

Про Plan 9 можно узнать подробнее на сайте plan9.bell-labs.com (сохранённая копия в Wayback Machine), или его зеркале 9p.io


Inferno

Plan 9 получил продолжение в виде проекта Inferno, тоже разработанного в Bell Labs. К таким свойствам Plan 9, как простота и распределённость, Inferno добавляет переносимость. Программы для Inferno пишутся на высокоуровневом языке Limbo и выполняются — с использованием just-in-time компиляции — встроенной в ядро Inferno виртуальной машиной.

Inferno настолько переносим, что может запускаться


  • на процессорах разных архитектур: ARM, x86, IBM PowerPC, Sun SPARC, 6SGI MIPS и HP PA-RISC,
  • как самостоятельная операционная система или как программа под Plan 9, Unix, Windows 95 и Windows NT.

При этом приложениям, запущенным внутри Inferno, предоставляется совершенно одинаковое окружение.

Inferno получил ещё меньше распространения и известности, чем Plan 9. С другой стороны, Inferno во многом предвосхитил Android, самую популярную операционную систему на свете.


Danger

Компания Danger Research Inc. была сооснована Энди Рубином (Andy Rubin) в 1999 году, за 4 года до сооснования им же Android Inc. в 2004 году.

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


  • «всегда запущенные» приложения, написанные на Java,
  • полноценный веб-браузер,
  • веб-приложения,
  • мессенджер,
  • email client,
  • облачная синхронизация,
  • магазин сторонних приложений.

Подробнее о Danger можно прочитать в статье Chris DeSalvo, одного из разработчиков, под названием The future that everyone forgot.


Java

Хотя использование высокоуровневых языков для серьёзной разработки сейчас уже никого не удивляет, из популярных операционных систем только у Android «родной» язык — высокоуровневая Java (с другой стороны, здесь можно вспомнить веб с его JavaScript, .NET для Windows и относительно высокоуровневый — но полностью компилируемый в нативный код и не использующий сборку мусора — Swift).

Несмотря на кажущиеся недостатки («Java сочетает в себе красоту синтаксиса C++ со скоростью выполнения питона»), Java обладает множеством преимуществ.

Во-первых, Java — самый популярный (с большим отрывом) язык программирования. У Java огромная экосистема библиотек и инструментов разработки (в том числе систем сборки и IDE). Про Java написано множество статей, книг и документации. Наконец, существует множество квалифицированных Java-разработчиков.

Программы на Java, как и на многих других высокоуровневых языках, переносимы между операционными системами и архитектурами процессора («Write once, run anywhere»). Практически это проявляется, например, в том, что приложения для Android работают без перекомпиляции на устройствах любой архитектуры (Android поддерживает ARM, ARM64, x86, x86–64 и MIPS).

В отличие от низкоуровневых языков вроде C и C++, использующих ручное управление памятью, в Java память автоматически управляется средой времени выполнения (runtime environment). Программа на Java даже не имеет прямого доступа к памяти, что автоматически предотвращает несколько классов ошибок, часто приводящих к падениям и уязвимостям в программах, написанных на низкоуровневых языках — невозможны «висячие ссылки» (из-за которых происходит use-after-free), разыменование нулевого указателя (при попытке это сделать выбрасывается NullPointerException), чтение неинициализированной памяти и выход за границы массива.

Использование полноценной сборки мусора (по сравнению с automatic reference counting) избавляет программиста от всех проблем и сложностей с циклическими ссылками и позволяет реализовывать ещё более продвинутые (advanced) зависимости между объектами.

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


Running Java is ART

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

Хотя делаются попытки создать физический процессор, который исполнял бы Java-байткод напрямую, в подавляющем большинстве случаев в качестве такого процессора используется эмулятор — Java virtual machine (JVM). Обычно используется реализация от Oracle/OpenJDK под названием HotSpot.

В Android используется собственная реализация под названием Android Runtime (ART), специально оптимизированная для работы на мобильных устройствах. В старых версиях Android (до 5.0 Lollipop) вместо ART использовалась другая реализация под названием Dalvik.

И в Dalvik, и в ART используется собственный формат байткода и собственный формат файлов, в которых хранится байткод — DEX (Dalvik executable). В отличие от class-файлов в «обычной джаве», весь Java-код приложения обычно компилируется в один DEX-файлclasses.dex. При сборке Android-приложения Java-код сначала компилируется обычным компилятором Java в class-файлы, а потом конвертируется в DEX-файлспециальной утилитой (возможно и обратное преобразование).

И HotSpot, и Dalvik, и ART дополнительно оптимизируют выполняемый код. Все три используют just-in-time compilation (JIT), то есть во время выполнения компилируют байткод в куски полностью нативного кода, который выполняется напрямую. Кроме очевидного выигрыша в скорости, это позволяет оптимизировать код для выполнения на конкретном процессоре, не отказываясь от полной переносимости байткода.

Кроме того, ART может компилировать байткод в нативный код заранее, а не во время выполнения (ahead-of-time compilation) — причём система автоматически планирует эту компиляцию на то время, когда устройство не используется и подключено к зарядке (например, ночью). При этом ART учитывает данные, собранные профилировщиком во время предыдущих запусков этого кода (profile-guided optimization). Такой подход позволяет дополнительно оптимизировать код под специфику работы конкретного приложения и даже под особенности использования этого приложения именно этим пользователем.

В результате всех этих оптимизаций производительность Java-кода на Android не сильно уступает производительности низкоуровневого кода (на C/C++), а в некоторых случаях и превосходит её.

Java-байткод, в отличие от обычного исполняемого кода, использует объектную модель Java — то есть в байткоде явно записываются такие вещи, как классы, методы и сигнатуры. Это делает возможной компиляцию других языков в Java-байткод, что позволяет написанным на них программам исполняться на виртуальной машине Java и быть в той или иной степени совместимыми (interoperable) с Java.

Существуют как JVM-реализации независимых языков — например, Jython для Python, JRuby для Ruby, Rhino для JavaScript и диалект Lisp Clojure — так и языки, исходно разработанные для компиляции в Java-байткод и выполнения на JVM, самые известные из которых — Groovy, Scala и Kotlin.

Самый новый из них, Kotlin, специально разработанный для идеальной совместимости с Java и обладающий гораздо более приятным синтаксисом (похожим на Swift), поддерживается Google как официальный язык разработки под Android наравне с Java.

Несмотря на все преимущества Java, в некоторых случаях всё-таки желательно использовать низкоуровневый язык — например, для реализации критичного по производительности компонента, такого как браузерный движок, или чтобы использовать существующую нативную библиотеку. Java позволяет вызывать нативный код через Java Native Interface (JNI), и Android предоставляет специальные средства для нативной разработки — Native Development Kit (NDK), в который входят в том числе заголовочные файлы, компилятор (Clang), отладчик (LLDB) и система сборки.

Хотя NDK в основном ориентирован на использование C/C++, с его помощью можно писать под Android и на других языках — в том числе Rust, Swift, Python, JavaScript и даже Haskell. Больше того, есть даже возможность портировать iOS-приложения (написанные на Objective-C или Swift) на Android практически без изменений.


О безопасности


Классический Unix

Модель безопасности в классическом Unix основана на системе UID/GID — специальных номеров, которые ядро хранит для каждого процесса. Процессам с одинаковым UID разрешён доступ друг к другу, процессы с разным UID защищены друг от друга. Аналогично ограничивается доступ к файлам.

По смыслу каждый UID (user ID) соответствует своему пользователю — во времена создания Unix была нормальной ситуация, когда один компьютер одновременно использовался множеством людей. Таким образом, в Unix процессы и файлы разных людей были защищены друг от друга. Чтобы разрешить общий доступ к некоторым файлам, пользователи объединялись в группы, которым и соответствовал GID (group ID).

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

Такая модель подразумевает, что пользователь полностью доверяет всем программам, которые использует. В то время это было логично, потому что программы чаще всего либо были частью системы, либо создавались (писались и компилировались) самим пользователем.

В Unix есть и исключение из ограничений доступа — UID 0, который принято называть root. У него есть доступ ко всему в системе, и никакие ограничения на него не распространяются. Этот аккаунт использовался системным администратором; кроме того, под UID 0 запускаются многие системные сервисы.

В современном Linux эта модель была значительно расширена и обобщена, в том числе появились capabilities, позволяющие «получить часть root-прав», и реализующая мандатное управление доступом (mandatory access control, MAC) подсистема SELinux, которая позволяет дополнительно ограничить права (в том числе права root-процессов).


Всё изменилось

За несколько десятков лет, прошедших с создания Unix до создания Android, практика использования компьютеров («вычислителей») значительно изменилась.

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

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

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


Android

Хотя часть Android-приложений поставляется с системой — например, такие стандартные приложения, как Калькулятор, Часы и Камера — большинство приложений пользователи устанавливают из сторонних источников. Самый известный из них — Google Play Store, но есть и другие, например, F-Droid, Amazon Appstore, Яндекс.Store, китайские Baidu App Store, Xiaomi App Store, Huawei App Store и т.д. Кроме того, Android позволяет вручную устанавливать произвольные приложения из APK-файлов (это называют sideloading).

Как и другие Unix-подобные системы, Android использует для ограничения доступа существующий механизм UID/GID. При этом — в отличие от традиционного использования, когда UID соответствуют пользователям — в Android разные UID соответствуют разным приложениям. Поскольку процессы разных приложений запускаются с разными UID, уже на уровне ядра приложения защищены и изолированы друг от друга и не имеют доступа к системе и данным пользователя. Это образует песочницу (Application Sandbox) и позволяет пользователю устанавливать любые приложения без необходимости доверять им.

Чтобы всё-таки получить доступ к пользовательским данным, камере, совершению звонков и т.п., приложение должно получить от пользователя разрешение (permission). Некоторые из разрешений существуют в виде GID, в которые приложение добавляется, когда получает это разрешение — например, получение разрешения ACCESS_FM_RADIO помещает приложение в группу media, что позволяет ему получить доступ к файлу /dev/fm. Остальные существуют только на более высоком уровне (в виде записей в файле packages.xml) и проверяются другими компонентами системы при обращении к высокоуровневому API через Binder.

Небольшая часть системных сервисов в Android запускается под UID 0, то есть root, но большинство используют специально выделенные номера UID, повышая при необходимости свои права с помощью Linux capabilities. Кроме того, Android использует SELinux — использование SELinux в Android называют SEAndroid  —  для ещё большего ограничения того, какие действия разрешено выполнять приложениям и системным сервисам.

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



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

Основы Андроид: начало работы с устройством

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

Аккаунт Google

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

Почему аккаунт Google является столь важным? потому что ваш аккаунт Google является «вашей личностью на вашем устройстве». Он не только соединит вас с Облаком (Cloud), где сохранены фото и контакты, но также дает вам доступ к Play Маркет, где вы можете скачать и приобретать различные приложения.

Также он дает доступ к другим сервисам Google, такие как Gmail, Chrome, Google Drive и YouTube. Для получения более подробной информации ознакомьтесь с нашими уроками Аккаунт Google.

Знакомство с устройством

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

Как мы уже говорили, каждое Android устройство является уникальным. (Мы говорили об этом в предыдущем уроке Введение в Android устройство). Это означает, что работа устройства и выполнение некоторых задач тоже может немного отличаться в зависимости от вашего телефона или планшета. К счастью вы можете многому научиться, сравнивая ваше устройство с нашим (LG Nexus 5 с которого мы делаем скриншоты и показываем на наших уроках Основы Андроид).

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

1. Уведомления

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

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

2. Строка состояния

Область в правом верхнем углу отображает текущую информацию о вашем устройстве (уровень сигнала, статус Wi-Fi, ресурс аккумулятора, и время). В нашем примере есть значок указывающий на то, что телефон находиться в режиме вибрации.

3. Google Now

Многие новые устройства поставляются с инструментом под названием Google Now. Он дает легкий доступ к некоторым из его особенностей.

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

4. Виджеты

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

Например, виджет на изображении позволяет управлять важными параметрами, такие как Wi-Fi и яркость экрана. У вас могут быть разные виджеты на устройстве, или их вообще может не быть — это зависит от марки и модели устройства.

5. Приложения

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

Вы можете добавлять и изменять местоположения приложений по своему желанию.

6. Главный экран

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

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

7. Избранные

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

8. Кнопки навигации

Каждое Андроид устройство имеет набор кнопок навигации. Обычно они являются частью программного обеспечения, но они также могут быть частью оборудования (т.е., встроенный в память устройства).

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

Основные приложения

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

  • Приложение со значком Телефон предназначен для совершения звонков.
  • Сообщения для обмена текстовыми сообщениями, или Hangouts для обмена текстовыми сообщениями через Google плюс чат.
  • Email для управления электронной почтой или Gmail, если у вас есть аккаунт Gmail.
  • Контакты для создания и хранения контактов людей.
  • Chrome для просмотра веб-страниц (можно также называть Интернет или Браузер).
  • Камера для съемки фотографий и видео.
  • Play Store или Play Маркет для загрузки приложений.
  • Настройки для настройки параметров.

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

Основные жесты

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

  • Нажмите (коснитесь), чтобы запустить приложение или выбрать кукую-то опцию.
  • Нажмите (коснитесь) и удерживайте, чтобы получить доступ к другим возможностям (это как «правая кнопка мыши»)
  • Перетащите для прокрутки вверх и вниз, влево и вправо, или в любое другое направлении на экране
  • Проведите пальцем влево или вправо, чтобы «пролистать» страницы на главном экране, фотографии или страницы в электронной книге
  • Дважды нажмите, чтобы увеличить или уменьшить масштаб в определенных приложениях, таких как карты или Chrome.
  • Нажмите и удерживайте на пустом месте, чтобы увеличить или уменьшить масштаб практически в любом месте.

Доступ в Интернет

Устройство может подключаться к Интернету практически в любом месте, будь то мобильная передача данных (3G / 4G или LTE) или поблизости от Wi-Fi. Так в чем их различие? Большинство сотовых тарифных планов даст вам только определенное количество мегабайтов в месяц, а с Wi-Fi, вы можете пользоваться интернетом безлимитно.

Для подключения к Wi-Fi (опционально):

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

  1. Чтобы включить Wi-Fi проведите пальцем вниз от верхней части экрана. Ваше изображение может отличаться от нашего в зависимости от марки устройства и версии андроид.
  2. Нажмите на значок настройки в правом верхнем углу.
  3. Затем найдите функцию Wi-Fi и нажмите на нее.
  4. Сдвиньте переключатель на вкл,чтобы включить Wi-Fi. Откроется список всех доступных сетей.
  5. Чтобы присоединиться к сети, просто нажмите на ту, которая вам нужна. Если сеть защищена, вам необходимо ввести пароль для подключения к ней.
  6. Когда вы закончите, ваше устройство запомнит подробности сети (в том числе пароль, если есть). Это означает что ваше устройство автоматически будет подключаться к сети всякий раз когда вы будете в зоне этой сети. Если вы когда-нибудь захотите изменить эти настройки, нажмите и удерживайте имя сети, а затем выберите изменить.

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

Советы по использовании клавиатуры

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

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

На изображении ниже отмечены элементы клавиатуры. Описание этих элементов вы можете прочитать под изображением.

1. Курсор

Курсор указывает на место, где появится текст.

2. Предложения

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

3. Ввод теста по голосу диктовки

Эта удобная функция позволяет вводить текст без использования клавиатуры. Просто нажмите микрофон (либо на клавиатуре или в текстовом поле), и вы можете продиктовать то, что хотите напечатать.

4. Основные клавиши

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

5. Клавиша Shift

Нажмите клавишу Shift, чтобы включить заглавные буквы. На большинстве устройств, двойной щелчок включает Caps Lock.

6. Удаление

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

7. Цифры и специальные символы

Нажмите, чтобы перейти к цифрам и специальным символам.

Если вы не нашли тот символ который ищете, нажмите на  = \ <. Это откроет еще больше альтернативных символов.

Читайте также:

описание операционной системы Андроид и её особенности

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

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

• В начале 2000-х на российском рынке была популярна ОС Symbian, на которой реализовались мобильные Nokia. Но, через несколько лет пальму первенства стала одерживать ОС Android, которой стали отдавать предпочтения иные бренды. Ввиду отставания от требований рынка, ОС Симбиан стала не конкурентной и бренд Nokia на долгое время потерял свою актуальность. На данный момент, именно ОС Андроид является самой популярной открытой операционной системой. Одновременно с массовым распространением ОС Андроид, на российском рынке стали появляться аппараты Айфон, работающие на собственной закрытой ОС IOS. Массовое распространение операционной системы IOS произошло с появлением модели iPhone 3. В конце 2000-х в продаже появились смартфоны на OS Windows, однако, со временем утратившие массовую популярность. Перечисленные ОС отмечены, как самые известные на российском рынке.

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

ОС ANDROID — история развития


андроид.jpg• История компании начинается в 2003 году. Её основала группа талантливых разработчиков, которые стали экспериментировать и создавать проекты гаджетов, умеющих выходить в интернет и работать на написанной ими открытой операционной системе. Пожалуй самый известный человек в их команде — Andy Rubin. Когда-то приобретённый ими домен android.com и стал названием их разработки. К 2005 году рабочая версия Андроид была создана и, по итогам переговоров августа 2005 года, корпорация Google приобрела компанию Android за 130 млн.долларов, команда же разработчиков перешла работать в корпорацию Гугл. Как показало время, для компании Google сделка оказалась крайне выгодной инвестицией.

• На доработку платформы ушло немало времени, но в 2008 году появился первый смартфон на открытой операционной системе Андроид, запущенный в продажу (он был представлен брендом НТС), который в будущем получил обновление системы доступное всем пользователям. Новая удобная система с открытым кодом позволила любому человеку писать под неё программы, массовое появление которых не заставило себя ждать. Таким образом, платформа Андроид предоставила гибкие и простые возможности для персонализации любого смартфона под конкретного пользователя. И, несмотря на то, что марка НТС заметно утратила свою распространённость в данное время, в 2009 году множество устройств на ОС Андройд стали набирать массовую популярность. Для обычного потребителя преимущества Андроид проявляются в следующем: возможность настройки смартфона «под себя», выбора внешнего вида меню, выбора разнообразных программ, возможность поддержки файлов разных форматов, быстрая передача информации с аппарата на иное устройство и др.

Хотя зачастую производители телефонов грешат количеством предустановленных программ, которые невозможно удалить из памяти устройства. Однако, бывают и исключительные случаи, как с брендом Highscreen. В смартфонах Хайскрин всегда устанавливается максимально «чистый» Андроид, с минимально возможными предустановленными программами, что даёт владельцу право их самостоятельного выбора и установки.

смартфоны хайскрин каталог.jpg• На текущий момент, система Андроид развивается в ногу со временем, а компания переодически выпускает их актуальные обновления. Выпуская новинки смартфонов на ОС Андроид, компании стараются использовать их последние версии системы. К примеру, в отличие от 6-ой версии, в 7-ой версии разработчиками был добавлен режим многооконного разделения окна, улучшено отображение панели быстрого доступа и просмотра открытых приложений, появилась полноценная поддержка режима виртуальной реальности и т.п. Иными словами, каждое последующее обновление приносит новые возможности, усовершенствует функции и иногда исправляет ошибки, которые обнаруживаются в процессе использования. На 2019 год новые смартфоны Андроид, выпускаемые производителями, имеют поддержку 8 и 9 версии.

• Все смартфоны российского бренда Хайскрин работают на ОС Андроид.

Каталог мобильных телефонов Хайскрин
Официальный интернет-магазин Highscreen hs-store.ru

Все про работу с устройствами на Android

Наверное не остались людей которые не видели логотип робота зеленого цвета. Этот логотип операционки Андроид.

Операционная система Android в основном разработана для планшетов и смартфонов, основана на ядре Linux. Самого начала система Android разрабатывалась в компании Android Inc. Которая продала свои права компании Google. На данный момент Google занимается поддержкой платформы Android. Платформа Андроид дает возможность создавать Ява-приложения, управляющие с помощью библиотек Google.

В почти каждом смартфоне, проданных за 2014 год, установлена система Android.

История основания

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

Программное обеспечение

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

Утилиты под ОС Андроид являются программами в байт-коде для симулятора Dflvik для которых разработан формат пакетов APK. Для разработки приложений доступны множество разных библиотеки:

  • Bionic;
  • мультимедийные библиотеки (PacketVideo OpenCORE)
  • Activity Manager
  • SGL
  • Surface Manager
  • Notification Manager
  • FreeType
  • SQLite
  • SSL
  • Content Providers
  • Resource Manager

Также Google дает возможность свободно скачивать инструменты для разработки под самые популярные ОС такие как Linux, Windows, Mac.

Безопасность

Обеспечить безопасность Андроид устройств можно с помощью Android Smart Lock, смысл которого заключается в том что разблокировка устройства осуществляется при помощи Bluetooth (смарт-часы или приборная панель автомобиля).

В Андроид 5.0 осуществляется шифрование данных автоматически. Также дополнительную защиту от вредоносных утилит обеспечит SELinux

Производительность

В обновленных версиях Android (5.0 Lollipop) реализована среда выполнения приложений ART, благодаря чему производительность увеличивается в 4 раза. К тому же ОС поддерживает 64-битные процессоры.

Полезные советы Андроид — подборка рекомендаций для ОС Android

Советы для Андроид, которые помогут устранить массу проблемСоветы для Андроид, которые помогут устранить массу проблем

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

Просто эмблема Андроид с надписьюПросто эмблема Андроид с надписью

СОДЕРЖАНИЕ СТАТЬИ:

Проблемы с оборудованием

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

  • Форматирование внутренней памяти и карты microSD — процедура весьма неприятная, поскольку вся информация с телефона удаляется. Но если гаджет начинает жутко тормозить, частичная очистка не спасает, то иногда только такой вариант способен спасти ситуацию. Важно выполнять всё по инструкции, чтобы не навредить накопителям.
  • Калибровка аккумулятора — внезапно батарея начала резко терять заряд, хотя недавно заряжалась? Возможны два решения — установить новый источник питания, либо де откалибровать старый. Вполне вероятно, что произошел сбой, и система получает некорректную информацию о ёмкости и вольтаже.
  • Смартфон не видит SIM-карту — достаточно распространенный дефект, устранить который иногда помогают программные хитрости, а порой стоит проверить контакты разъема для СИМ или же саму карточку.
  • Можно ли заряжать мобильный девайс от компьютера? Многие только так и делают, а другие — наоборот, бояться подключать телефон к ПК для подзарядки. Хотите узнать правду? Переходите по ссылке!
  • Наклейка защитного стекла — зачем платить деньги специалистам, если можно самостоятельно проделать несколько простых шагов, перечисленных в нашем руководстве.
  • Карта памяти не определяется — над этой темой мы очень тщательно поработали и собрали все советы Андроид с просторов сети Интернет. В статье рассматриваются все возможные ситуации и решения.

Вставка карты памяти в телефонВставка карты памяти в телефон

 


Программные ошибки

  • Неверный код MMI — во время проверки баланса или отправки любого другого USSD-запроса появляется такое уведомление на экране. Или же просто при исходящем звонке.
  • com.android.phone — просто открываете телефонный справочник или панель набора номера и видите окно с подобным сообщением.
  • «Устройство не сертифицировано» — проблема характерна для девайсов, приобретенных в китайских интернет-магазинах. Ошибка связана с ограничениями Google.
  • Сбой аутентификации при подключении к Wi-Fi. Чаще всего дефект заключается в сбросе пароля или неправильно указанному коду защиты WPA\WPA2.
  • Не работает Плей Маркет — раньше очень много знакомых обращались ко мне с подобным вопросом, особенно владельцы Meizu и Xiaomi. Сейчас этот сбой редко встречается, но если что — Вы знаете, где искать ответ.
  • На устройстве восстановлены настройки по умолчанию, чтобы продолжить войдите в аккаунт Google.
  • com.android.vending — что за ошибка Андроид, причины и способы устранения.
  • «Приложение сервисы Google Play остановлено» — при запуске магазина приложений Гугл Плей «вкидывает» на рабочий стол с указанной ошибкой. Сюда же можно отнести и код RH-01.
  •  android.process.media — появляется сообщение в Галерее, во время просмотра изображений, видео.
  • Сбой Launcher 3 — не рекомендую использовать этот лаунчер для изменения внешнего вида интерфейса, иначе рискуете столкнуться с подобной неисправностью.

Большая эмблема Гугл Плей маркетаБольшая эмблема Гугл Плей маркета


Root-доступ, сброс и восстановление

  • Hard Reset — всё, что нужно знать об этой процедуре для полной очистки памяти и возврата к заводским настройкам. Способ радикальный, но порой только он может вернуть смартфон к жизни.
  • Режим разработчика Android — что это такое, как включить на разных моделях, стоит ли вообще это делать, не опасно ли это для «здоровья» устройства? Ответим на все перечисленные вопросы!
  • Как вернуть удаленные фото, видео — самый большой кошмар любого пользователя связан с потерей личной информации, ценных снимков, документов. Реанимировать их не всегда получается, но попробовать стоит.
  • Режим FastBoot — для чего он нужен, как в него войти и использовать для установки прошивки, сброса и прочих манипуляций.
  • Разблокировка графического кода и всё, что связано с забытыми паролями. Увы, подобное случается сплошь и рядом. Человеческая память иногда тоже дает сбой, мы не можем вспомнить защитную комбинацию для входа в приложения.
  • SU файл занят — что делать? Когда при попытке обновления утилиты SuperSU видите подобное сообщение, достаточно выполнить несколько элементарных шагов.
  • Режим Recovery — рекавери (восстановление) является мощным инструментом для установки кастомных прошивок, патчей и прочих фишек для расширения функциональности Android. Также здесь можно произвести заводской сброс, почистить память.
  • Операции с инженерным меню — увеличение громкости, возобновление IMEI. Не все знают, что в настройках скрывается несколько пунктов, невидимых для владельцев гаджетов. Но стоит произвести парочку нажатий в нужном месте — и Вы получите доступ к аппаратным тестам и дополнительным параметрам.
  • Удаление Root-прав — если Вы захотели глубоко покопаться в файловой системе, установить  специализированный софт, то нужно получить Рут-доступ. Но порой пользователи ищут в сети инструкцию с обратным эффектом. Ведь когда нужно нести аппарат на гарантийное обслуживание, то инженеры СЦ могут отказать в бесплатном ремонте, поскольку у Вас «взломанный телефон». Лучше заблаговременно избавиться от корневого сертификата.
  • Сброс пароля на Xiaomi — крайне полезная инструкция для владельцев китайских девайсов Сяоми (Ксиоми).
  • Безопасный режим Android — предназначение, особенности использования, как может помочь в борьбе с вирусами, процедура включения/отключения.
  • Bootloader — как работать с загрузчиком, что делать в случае появления сообщения «Reboot to…».

Рекавери для сбросаРекавери для сброса


Полезные советы и программы Андроид

  • Зачем нужна синхронизация — после сброса многие сталкиваются с неприятным моментом: все данные исчезли (в том числе, контакты, сообщения, файлы). Чтобы этого не произошло — нужно создавать резервные копии в «облачном» хранилище Google, Mi Cloud.
  • Отправка SMS с компьютера — установите на телефон утилиту от Гугл, после чего можно в браузере на ПК обмениваться сообщениями.
  • Программа ImeMess — что это, как удалить.
  • Как смотреть ТВ — подборка лучших приложений.
  • Папка Thumbnails — узнайте об эскизах, почему они занимают столько места в памяти, стоит ли очищать каталог или лучше не трогать его.
  • Сканирование QR-кодов на телефоне — перечень ПО для чтения графических штрих-кодов и прочих разновидностей.
  • Gboard — особенности клавиатуры Google, преимущества перед аналогами (среди которых TouchPal).
  • Включение родительского контроля — важное руководство для тех, у кого есть дети. Защитите их от опасного и «взрослого» содержимого, доступного в интернете. Или же ограничьте доступ к играм.
  • Lucky Patcher — данный инструмент имеет несколько назначений — разблокировка утилит, блокировка рекламы и платного контента.
  • Установка Play Market — пригодиться на тот случай, вдруг на смартфоне изначально отсутствует официальный магазин Google. Подобное характерно для устройств, распространяемых на китайском рынке. Но порой подобные модели (к примеру, Meizu) оказываются и в странах СНГ.
  • Instant Apps — часто владельцы планшетов обнаруживают у себя в перечне стандартного программного обеспечения такой элемент. За что он отвечает, можно ли удалить?
  • Как сделать скриншот — снимок экрана. Иногда в настройках модели уже заданы особые жесты для этой операции. К примеру, на Xiaomi достаточно протянуть тремя пальцами вниз по экрану.
  • Google Files Go — обзор файлового менеджера от Гугл с возможностью очистки мусора.
  • Как убрать рекламу — вот это реально важная тема, если учитывать, сколько назойливых объявлений отображается на сайтах, рабочем столе, программах.
  • Лучшие «читалки» для Андроид — здесь без комментариев. Просто набор крутых приложений для чтения книг и документов разного формата.
  • Подборка антивирусов — перечень полезного и эффективного софта для устранения вредоносных угроз на смартфоне.
  • Навигаторы для СНГ — рассмотрим несколько вариантов, которые могут работать без подключения к интернету.
  • Освобождаем память без удаления важных данных. Необяхательно расставаться с ценными файлами, видео, музыкой, чтобы получить дополнительные мегабайты.
  • Указание владельца — как заполнить информацию, важно ли это для работы?
  • Изменение значков — надоело смотреть на однотипные ярлыки? Хочется разнообразить интерфейс, сделать его более привлекательным? Держите инструкцию!
  • Буфер обмена — где находится, как очистить, реально ли использовать его как на компьютере?
  • Включение T9 на Мейзу — никогда не думал, что эта тема будет настолько популярна среди читателей сайта IT Техник. Оказалось, в смартфонах Meizu есть определенные особенности, о которых стоит знать.
  • Поиск утерянного телефона с помощью Google-аккаунта. Также рассмотрим прочие способы.
  • Как узнать пароль от WiFi — сразу отметим, что инструкция не очень простая, но при удачном стечении обстоятельств всё может получиться.

Мобильные технологии

  • Передача данных — что из себя представляет эта функция, как включить на разных версиях Android.
  • Датчики в телефоне — рассматриваются различные сенсоры и встроенные модули для расширения возможностей устройства.
  • Зачем в телефоне 2-3-4 камеры, что это даёт владельцам смартфонов. Раскрываем секрет самого большого маркетингового обмена. А может и нет…
  • VPN в телефоне — назначение, особенности эксплуатации, как подключиться к виртуальной частной сети для обхода блокировок со стороны провайдера.
  • 4G LTE — обзор технологии, поддержка которой в гаджете гарантирует доступ к скоростному интернету (при условии, что оператор связи предоставляет такую услугу).
  • Чип NFC — очень полезное, но пока слабо распространённое встроенное приспособление для быстрых платежей и прочих операций.
  • OTG в смартфонах — удобная фишка, если хотите подключать к девайсу внешние накопители (флешки, кардридеры).
  • Google Nearby — компания Гугл разработала стандарт обмена данными по Bluetooth с рядом расположенными пользователями Андроид. Можно передавать файлы, играть в игры и т.д.

Добавляйте эту страницу в закладки Вашего браузера, нажав Ctrl + D . Периодически мы будем обновлять контент, расширять его новыми способами, руководствами, советами для Андроид.

Развитие мозга по максимомуРазвитие мозга по максимому

Что такое «Андроид»? Возможности Android :: SYL.ru

Универсальность «Андроид-ОС»

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

Что такое АндроидРазработчики «Андроид»

Операционная система была создана сотрудниками Google, которые задались идеей сделать универсальную платформу для ряда новых гаджетов: смартфонов, планшетных компьютеров, электронных книг, нетбуков и даже очков Google. Таким образом, можно утверждать, что Android – это операционная система Google. Ядром для разработки системы стал Linux.  Google далеко не сразу стали основателями новой системы. Они лишь купили компанию Android Inc, начавшую работу в перспективном направлении. Такой ход позволил привлечь к работе над проектом ведущие умы и вложить в него достаточно большие суммы.

Операционная система GoogleВозможности операционной системы от Google

Сегодня каждый школьник знает, что такое Android, ведь на базе этой системы работают тысячи смартфонов и планшетов, продающихся по невысокой цене. Анонс системы состоялся в 2007 год, а полноценная версия ОС вышла в 2008. Это событие перевернуло мобильный мир, где до сих пор использовались небольшие системы, не позволяющие добиваться максимальной производительности. Весь мир узнал, что такое «Андроид», как только в свет вышло первое устройство на его базе. Благодаря разработчикам, пользователи смогли посмотреть на свои смартфоны с другой стороны. Аппараты стали прекрасной платформой для качественных игр. При помощи смартфона стало возможным создание точек доступа в Интернет без лишних настроек и сложных алгоритмов. Каждая новая версия системы позволяла исправить неточности, допущенные в первой, и совершенствовать платформу.

Что такое AndroidПольза для разработчиков и владельцев устройств под управлением «Андроид»

Каждый современный разработчик знает, что такое «Андроид», ведь именно для этой платформы проще всего разработать приложение, которое позволит прославиться. Огромное количество игр, выложенных в магазине Google Market, сделано энтузиастами. Если пользователи проявляют к приложению определенный интерес, его создатель может настраиваться на успех, его обязательно заметят и предложат заключить выгодный контракт. Обычному пользователю также важно знать, что такое «Андроид», чтобы разбираться в возможностях, которые дарит система, и начать использовать свои гаджеты в полную силу. Программы для операционной системы можно загружать через маркет, огромное количество приложений распространяется бесплатно.

Загружайте полезные приложения за сущие гроши

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

Разное

Отправить ответ

avatar
  Подписаться  
Уведомление о