This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
FydeOS — Chrome OS с поддержкой Android и Linux приложений / ChromeOS Flex with Google Apps
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
- Android OS
- Общая информация
- Особенности ОС
- Распределение пользователей
- Достоинства
- Критика
- Экраны устройств
- Возможности адаптивной разработки
- Доступные сенсоры и их применение
- Доступные магазины
- Google Play
- SDK
- IDE
- Языки программирования
- Тестирование приложений
- Документация
- Начало разработки
Android — операционная система для смартфонов, планшетов, электронных книг, цифровых проигрывателей, наручных часов, фитнес-браслетов, игровых приставок, ноутбуков, нетбуков, смартбуков, очков Google Glass, телевизоров, проекторов и других устройств (в 2015 году появилась поддержка автомобильных развлекательных систем и бытовых роботов) [1].
Изначально разрабатывалась компанией Android, Inc., которую затем приобрела Google. Основана на ядре Linux и собственной реализации виртуальной машины Java компании Google. Впоследствии Google инициировала создание альянса Open Handset Alliance (OHA), который занимается поддержкой и дальнейшим развитием платформы [1].
Android позволяет запускать Java-приложения, управляющие устройством через разработанные Google библиотеки. Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках [1].
В 86 % смартфонов, проданных во всём мире во втором квартале 2014 года, была установлена операционная система Android. На конференции разработчиков в мае 2017 года Google объявила, что за всю историю Android было активировано более 2 млрд Android-устройств [1].
Вебинар. ОС Android, как это работает?
Текущая актуальная версия Android — Android 12L, которая вышла 7 марта 2022 г. Обновления ОС выходят каждые полгода [3].
Обновления версий Android [3]:
Приложения под операционную систему Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik, для них был разработан формат установочных пакетов .apk . Для работы над приложениями доступно множество библиотек: Bionic (библиотека стандартных функций, несовместимая с glibc); мультимедийные библиотеки на базе PacketVideo OpenCORE (поддерживают такие форматы, как MPEG-4, H.264, MP3, AAC, AMR, JPEG и PNG); SGL (движок двухмерной графики); OpenGL ES 1.0 ES 2.0 (движок трёхмерной графики); Surface Manager (обеспечивает для приложений доступ к 2D/3D); WebKit (готовый движок для веб-браузера; обрабатывает HTML, JavaScript); FreeType (движок обработки шрифтов); SQLite (легковесная СУБД, доступная для всех приложений); SSL (протокол, обеспечивающий безопасную передачу данных по сети). По сравнению с обычными приложениями Linux, приложения Android подчиняются дополнительным правилам: Content Providers — обмен данными между приложениями; Resource Manager — доступ к таким ресурсам, как файлы XML, PNG, JPEG; Notification Manager — доступ к строке состояния; Activity Manager — управление активными приложениями.
В Android 4.4 появилась возможность сменить виртуальную машину Dalvik на ART (Android Runtime). ART отличается повышенной скоростью загрузки приложения. Проработан механизм оптимизации памяти. В Android 5 перерисован дизайн, базирующийся на концепции Material Design, добавлен режим энергосбережения Project Volta, выбор машины пропал, вместо Dalvik стала использоваться ART. В Android 6 появился интеллектуальный режим расхода энергии Doze и запрет выхода в Интернет и работы в фоне давно не используемых приложений App Standby [1].
Исходный код Андроида доступен на сайте проекта Android Open Source Project (AOSP), который поддерживается Google. Код, присутствующий на AOSP, используется в смартфонах Nexus, а также в серии смартфонов Android One — это модели, производимые другими компаниями, но поддержанные маркетингом Google [1].
Код, доступный на AOSP, дорабатывается производителями аппаратуры (OEM) для выпускаемых моделей, чтобы иметь совместимость с конкретными аппаратными решениями, которые они используют. Исходный код Google не содержит всех необходимых драйверов для этого. В результате, реальные поставляемые устройства на Андроид содержат смесь из программного обеспечения с открытым кодом и закрытым кодом. Например, собственные сервисы Google (Play Market, Services, Maps, Chrome), которые поставляются с большинством смартфонов, также попадают в закрытую категорию [1].
Существует бесчисленное количество операционных систем на основе открытого исходного кода Android (форков), в сообществе их называют «оболочки Android». Данные продукты в основном разрабатываются производителями мобильных телефонов и планшетов для дополнения системы новым функционалом, улучшения качества работы своих устройств и другой модификации системы под свои нужды, внедрения в систему своих сервисов вместо Google Play Services, которые собирают личную информацию о пользователях, например о перемещении пользователя в реальном времени, что привело к судебному разбирательству, своей собственной поддержки операционной системы, например — своих обновлений, которые могут не зависеть от версии Android и предоставлять один и тот же функционал на разных версиях Android. Большинство оболочек Android предоставляет свои алгоритмы безопасности пользователей, но в то же время использует патчи безопасности для Android. На оболочках Android, так же, как и на большинстве других Unix-подобных операционных систем, можно получить root-доступ (права суперпользователя), но это автоматически ставит устройство под угрозу, так как, если вирусное ПО получит доступ к правам суперпользователя, оно может сильно повредить устройство, как программно, так и физически; также неопытный пользователь может повредить устройство самостоятельно, поэтому разработчики отключают возможность получить права суперпользователя и блокируют загрузчик у своих устройств, а при их использовании производитель имеет право аннулировать гарантию и отказать в дальнейшей поддержке устройства. Также при разблокировке загрузчика устройства, если такая возможность представлена производителем, смартфон теряет безопасность, злоумышленник может прошить смартфон на модифицированную прошивку без алгоритмов защиты операционной системы от кражи или прошить прошивку на базе другой оболочки Android [1].
Распределение устройств по версиям ОС [4]:
Распределение устройств по вендорам [4]:
Доля рынка Android vs iOS [4]:
Актуальное распределение пользователей и количество устройств, на которых запустится приложение, можно посмотреть при создании проекта в Android Studio [2].
Преимущества OS Android [1]:
- Некоторые обозреватели отмечают, что Android проявляет себя лучше одного из своих конкурентов, Apple iOS, в ряде особенностей, таких как веб-сёрфинг, интеграция с сервисами Google и прочих. Также Android, в отличие от iOS, является открытой платформой, что позволяет реализовать функции большему числу разработчиков.
- Несмотря на изначальный запрет на установку программ из «непроверенных источников» (например, с карты памяти), это ограничение отключается штатными средствами в настройках аппарата, что позволяет устанавливать программы на телефоны и планшеты без интернет-подключения, а также позволяет всем желающим бесплатно писать приложения для Android и тестировать на своём аппарате.
- Android доступен для различных аппаратных платформ, таких как ARM, MIPS, x86.
- Существуют альтернативные Google Play магазины приложений: Amazon Appstore, Uptodown App Store, Opera Mobile Store, Яндекс.Store, GetApps, Mobogenie, F-Droid, 1Mobile Market, Meizu Appstore, AppGallery, Aurora Store, Aptoide.
- В версии 4.3 введена поддержка многопользовательского режима.
Недостатки ОС Android [1]:
- В сертифицированных Android-устройствах есть сервисы Google, обеспечивающие возможность передачи идентификационной информации на серверы компании, например информации о перемещении пользователя в реальном времени.
- В версии Android 1.6 разработчики добавили Native Development Kit, который позволяет писать собственные низкоуровневые модули для системы на языках C/С++, опираясь на стандартные Linux-библиотеки. Хотя, например, стандартная библиотека языка Си на платформе Android, известная как Bionic, как раз не является стандартной и полностью совместимой с libc.
- Для доступа к Google Play и другим сервисам Google необходимо использовать проприетарные приложения, которые производитель телефона имеет право устанавливать на телефон только после заключения контракта с Google.
- Конкуренты Android выступили с критикой платформы, обвиняя её в чрезмерной фрагментации, создающей препятствия разработчикам. Но Google отвергла все обвинения, заявив, что никаких подобных проблем нет.
- Подверглось критике решение Google не размещать в широком доступе код Android 3.0 Honeycomb, доступный только для участников Open Handset Alliance или по индивидуальному запросу после подписания соглашения. Google мотивирует это неготовностью платформы и мерой предупреждения небрежной её реализации. Ричард Столлман заявлял, что «всё просто и ясно: за исключением ядра Linux, Android 3 представляет собой несвободный софт» и «несмотря на то, что телефоны с Android на сегодняшний день не так плохи, как смартфоны Apple или Windows, нельзя сказать, что они уважают вашу свободу». В настоящий момент Google открыл исходный код для всех версий Android вплоть до 8.1.0, а также отправил в Linux все изменения, в соответствии с GPL.
- По данным Lookout Security Mobile, за 2011 год у пользователей Android-смартфонов было украдено около миллиона долларов США (напр., отправка СМС без ведома владельца телефона).
- Android (как и IOS) не поддерживает атрибут download, используемый в HTML для загрузки файлов из интернета.
На ОС Android работают следующие устройства [1]:
- телефоны
- планшеты
- фоторамки
- наручные часы (I’m Watch)
- фотокамеры (Nikon)
- медиаплеер (Nexus Q, Nexus Player)
На май 2021 число устройств с Android в мире превысило 3 млрд [1].
Т. к. на платформе Android работает множество разных устройств, размеры экранов у них также сильно различаются. Есть устройства с экранами 240×240 пикселей размером 1.54 дюйма (I’m Watch), есть 4K и 8K мониторы размером 40-50 дюймов, которые также должны поддерживать корректную работу ОС и приложений в ней. При разработке приложений необходимо определить целевую аудиторию приложения, определить наиболее часто используемые устройства у этой ЦА, а после этого проанализировать, какие из устройств и размеров экранов наиболее выгодно поддерживать [2].
Возможности адаптивной разработки
Android SDK, Flutter и React Native предоставляют широкие возможности по разработке адаптивных приложений, хорошо работающих как на маленьких, так и на больших экранах. Однако для этого необходимо нарисовать дизайн приложения на экранах различных размеров, после чего правильно реализовать задуманный дизайн приложения [2].
Доступные сенсоры и их применение
Доступные сенсоры и их применение [5]:
- акселерометр — обнаружение движения (тряска, наклон)
- датчик температуры окружения (ambient temperature) — мониторинг температуры воздуха
- датчик силы гравитации — обнаружение движения (тряска, наклон)
- гироскоп — обнаружение вращения (вращение, поворот)
- датчик освещенности — управление яркостью экрана
- датчик линейного ускорения — мониторинг ускорения по одной оси
- датчик магнитного поля — создание компаса
- датчик ориентации устройства — определение положения устройства
- датчик давления — мониторинг изменения давления воздуха
- датчик расстояния (proximity) — определение положения телефона во время звонка
- датчик относительной влажности — определение абсолютной и относительной влажности
- датчик вектора вращения — определение движения и вращения
- датчик температуры — мониторинг температуры
Т. к. доступна установка локально или из внешних источников, то существует множество магазинов с приложениями [1]:
- Google Play Store (основной)
- F-Droid
- Amazon Appstore
- Samsung Apps
- AppGallery
- Uptodown App Store
- Opera Mobile Store
- Яндекс.Store
- GetApps
- Mobogenie
- 1Mobile Market
- Meizu Appstore
- Aurora Store
- Aptoide
22 октября 2008 года Google объявила об открытии онлайн-магазина приложений для ОС Android — Android Market. По соглашению, разработчики получают 70% прибыли, а сам магазин приложений — 30% [1].
К марту 2012 года интернет-магазин Google Play работал в 190 странах и насчитывал более 700 тысяч приложений, а за время работы сервиса набралось около 25 млрд скачиваний [1].
Google предлагает для свободного скачивания инструментарий для разработки (Software Development Kit), который предназначен для x86-машин под операционными системами Linux, macOS (10.4.8 или выше), Windows XP, Windows Vista и Windows 7. Для разработки требуется JDK 5 или более новый. Разработку приложений для Android можно вести на языке Java (не ниже Java 1.5) [1].
В 2009 году в дополнение к ADT был опубликован Android Native Development Kit (NDK) — пакет инструментариев и библиотек, позволяющий реализовать часть приложения на языке С/С++. NDK рекомендуется использовать для разработки участков кода, критичных к скорости [1].
Помимо этого, разрабатывать мобильные приложения под ОС Android можно с помощью Flutter (Dart), React Native (JS/TS), Cordova (JS/TS) и подобных фреймворков [2].
Существует плагин для Eclipse — Android Development Tools (ADT), предназначенный для Eclipse версий 3.3—3.7. Также существует плагин для IntelliJ IDEA, облегчающий разработку Android-приложений, и для среды разработки NetBeans IDE, который, начиная с версии NetBeans 7.0, перестал быть экспериментальным, хоть пока и не является официальным. Кроме того, существует Motodev Studio for Android — комплексная среда разработки на базе Eclipse, позволяющая работать непосредственно с Google SDK [1].
В 2013 году Google представила новую среду разработки Android Studio, основанную на IntelliJ IDEA компании JetBrains [1].
В 2013 году состоялся релиз Embarcadero RAD Studio — XE5. Возможность разработки нативных приложений для платформы Android. Процесс создания Android-приложения не требует дополнительных устройств, кроме, собственно, Android-устройства (в принципе, можно обойтись и эмулятором) [1].
При работе Android SDK можно использовать Java и Kotlin, причем можно использовать вместе в одном проекте [2].
При работе с Android NDK можно использовать C и C++ [2].
При работе с Flutter можно использовать Dart [2].
При работе с React Native, Cordova и подобными JS фреймворками можно использовать JavaScript и TypeScript [2].
Приложения можно устанавливать и запускать прямо из .apk файла, если в настройках включена установка приложений из незащищенных источников. Это позволяет удобно разрабатывать и тестировать приложения, т. к. для из установки не требуется делать никаких дополнительных действий [2].
При разработке в IDE с использованием Android SDK, Flutter, React Native и многих других инструментов возможно устанавливать и запускать разрабатываемые приложения (и даже обновлять уже установленные приложения) по нажатию одной кнопки «Run». Это оказывается очень удобным при разработке, т. к. можно за несколько секунд посмотреть, к чему приводит конкретное изменение в коде [2].
При тестировании для запуска приложений можно использовать как эмулятор устройств Android, который входит в Android SDK и устанавливается через Android Studio, так и физическое устройство. Использование эмулятора хорошо тем, что можно протестировать приложение на множестве устройств различных размеров и версий ОС, но запуск множества эмуляторов требует много вычислительных ресурсов. Тестирование на физическом устройстве удобнее тем, что не требует дополнительных ресурсов на рабочем компьютере, а также позволяет оценить работу приложения на полноценном реальном устройстве со всеми его особенностями [2].
Более того, работать с физическим устройством можно даже без подключения его по USB к компьютеру, если включить в настройках разработчика на телефоне функцию «ADB over air» [2].
Google предоставляет отличную документацию по разработке под Android. Для других фреймворков (Flutter, React Native и т. д.) есть подобные документации [2].
Для начала разработки необходимо [2]:
- выбрать и изучить фреймворк или библиотеку
- установить IDE или текстовый редактор
- создать проект в соотвествие с инструкцией выбранного фреймворка или библиотеки
Для публикации в магазин приложений Google Play Store необходимо [6]:
- создать аккаунт разработчика Google
- оплатить единовременную плату в $25 (1 раз на аккаунт, а не на приложение)
- создать Google Wallet Merchant и привязать его к аккаунту
- подготовить документы (EULA, privacy policy, terms and conditions)
- создать приложение в Google Console
- загрузить .apk файл и отправить его на ревью
- Википедия
- я (поправьте, если есть фактическая ошибка)
- Википедия
- Business of Apps
- Android Developers
- Brainvire
Источник: github.com
Эволюция ОС Android: от самого начала и до наших дней
Android обладает самой большой пользовательской базой среди всех настольных и мобильных операционных систем. При этом «Зеленый робот» пробрался не только в смартфоны и планшеты: в наши дни вполне обыденными стали телевизоры, умные часы и даже автомобили с Android. Его триумф не всегда был очевиден, хотя еще во время своего зарождения в 2003 этой ОС некоторые разработчики предрекали ей большое будущее.
Начиная с оригинальной бета-версии и до Nougat, Marshmallow и остальных, мы рассмотрим историю развития мобильной операционки от Google, включая далеко не самые известные сегодня версии вроде Android 1.0 и Cupcake
Android Inc. и ранние некоммерческие релизы
В октябре 2003 компания Android Inc была основана Энди Рубином, Ричем Майнером, Ником Сирсом и Крисом Уайтом. Изначально ребята хотели создать продвинутую операционную систему для цифровых камер, превращающую их в «гораздо более умные устройства, осведомленные о местонахождении и предпочтениях своего владельца». Вскоре стало понятно, что рынок фото- и видеокамер слишком уж скромен, и парни сфокусировались на смартфонах в попытке составить конкуренцию таким гигантам того времени, как Symbian и Windows Mobile.
После неуверенного (из-за острых проблем с финансированием) старта Android Inc вместе с многими ключевыми сотрудниками была приобретена корпорацией Google 17 августа 2005 года. С этого момента, возглавляемая Рубином команда занялась разработкой мобильной операционной системы, основанной на ядре Linux. Культовый логотип в виде зеленого робота был создан дизайнером Ириной Блок, а вскоре после этого, 5 ноября 2007го была выпущена первая бета-версия.
Android 1.0
– это первая коммерческая версия Android, представленная 23 сентября 2008, а первым доступным для приобретения Android-устройством стал HTC Dream. Хоть это и был первый официальный релиз, Android0 принес ряд привычных нам сегодня функций, таких как веб-браузер, поддержка камеры, синхронизация с Gmail, YouTube-видеоплеер, Google Карты, а также возможность синхронизации Календаря и Контактов. Приложения могли быть загружены через Android Market и запущены с домашнего экрана. Первый апдейт, Android 1.1 был выпущен 9 февраля 2009 и добавил несколько новых функций, вместе с тем поправив множество багов и недоработок.
Android 1.5 Cupcake
27 апреля 2009 разработчики выкатили очередное обновление под номером 1.5, и в первую очередь оно примечательно тем, что именно с этой версии каждый крупный релиз Android стал получать имя, посвященное тому или иному десерту.
Помимо оригинального имени, новые версии получают еще и соответствующую фигуру на лужайке возле штаб-квартиры Google в калифорнийском городке Маунтин-Вью. В функциональном плане, с Android 1.5 платформа обзавелась поддержкой небольших наглядных приложений – виджетов. Кроме того, смартфоны под управлением Android 1.5 получили возможность записывать видео в формате MPEG-4, автоматически подключаться к Bluetooth-аксессуарам и добавлять к фотографии к карточкам контактов.
Android 1.6 Donut
Android 1.6 Donut вышла 15 сентября 2009. С этим релизом операционная система стала выглядеть как никогда лучше: а все благодаря поддержке экранов с WVGA-разрешением и появившейся взаимоинтеграции таких приложений, как Камера и Галерея – теперь можно было сделать снимок и тут же одним нажатием открыть получившуюся фотографию.
Также был улучшен текстовый и голосовой поиск, с этого момента включающий в себя закладки, историю браузера, контакты и результаты из Сети.
Android 2.0 Éclair
26 октября мы получили третье довольно масштабное обновление системы за год. Этот апдейт включал поддержку почтовика Microsoft Exchange вместе с возможностью просмотра писем из разных учетных записей в одном почтовом ящике. Android 2.0 получил улучшенную виртуальную клавиатуру, позволяющую набирать сообщения с гораздо большей скоростью и более удобное приложение для текстовой переписки, в котором отныне можно было оперативно найти нужное SMS- или MMS-сообщение.
Помимо нововведений, упрощающих переписку, Android Eclair подружила камеры подконтрольных гаджетов со вспышкой, цветовыми фильтрами и цифровым зумом. Вслед за Android 2.0, 3 декабря 2009 Google выпустила небольшую заплатку – Android 2.0.1 – она не несла в себе никаких функциональных нововведений, а лишь исправляла мелкие ошибки.
Android 2.2 Froyo
Версия Android 2.2 Froyo (Frozen yoghurt, замороженный йогурт) осчастливила нас своим присутствием 20 мая 2010 и включала в себя ряд улучшений, повышающих производительность и общую скорость работы системы. Среди привычных сегодня вещей, в Android 2.2 появилась возможность использовать смартфон в качестве хотспота и ограничивать объем трафика, расходуемого через мобильную сеть.
Также была введена поддержка дисплеев с высоким PPI и обновилось приложение Android Market’а, которое теперь могло автоматически обновлять установленные приложения. Несмотря на свой почти семилетний возраст, Froyo до сих пор остается довольно распространенной (относительно), будучи установленной на 0.1% Android-устройств.
Android 2.3 Gingerbread
Этот апдейт был представлен 6 декабря 2010, а его главной фишкой был свежий интерфейс, ставивший на первое место простоту и скорость использования. Переработке подверглась и встроенная виртуальная клавиатура, позволив более точно и интуитивно набирать текст. Помимо этого, Android 2.3 Gingerbread стала первой версией, поддерживающей NFC и в ней впервые был удобный и кажущийся сегодня чем-то обыденным Менеджер Загрузок, позволяющий просматривать и редактировать историю скачанных файлов.
Android 3.0 Honeycomb
Honeycomb запустили 22 февраля 2011 года, а главным новшеством стало то, что это была первая версия Android, полностью ориентированная на планшеты. Данный апдейт принес новый «голографический» интерфейс. Тогда и были перенесены в нижнюю часть экрана навигационные кнопки и Статус-бар с уведомлениями. Среди прочего, в Android 3.0 появились расширенный режим просмотра контактов и электронных писем, поддержка нескольких вкладок и режима Инкогнито в стандартном браузере. Также была введена совместимость с многоядерными процессорами, открывшая новую эпоху высокопроизводительных Android-аппаратов.
Чуть позже было выпущено пару минорных обновлений: Android 3.1 (10 мая 2011) научила ОС «видеть» подключаемые через USB аксессуары, проигрывать FLAC-аудио и масштабировать виджеты на домашнем экране, а Android 3.2 включала поддержку Google TV.
Android 4.0 Ice Cream Sandwich
Четвертая версия Android считается одним из самых крупных обновлений этой операционной системы. «Четверка» вышла 18 октября 2011, и предназначалась для всех устройств с Android 2.3 и выше. В этом апдейте вновь был переработан интерфейс и появился новый шрифт Roboto, ставший системным шрифтом ОС Android по умолчанию. Кроме того, в Android 4.0 Ice Cream Sandwich произошли такие изменения, как:
- Упростилась работа с папками (например, до этого нельзя было перетаскивать файлы из одной папки в другую)
- Камера стала поддерживать съемку роликов в разрешении 1080p
- Стандартный веб-браузер научился синхронизировать закладки с таковыми из Chrome (если, конечно, в последнем был выполнен вход в учетную запись Google).
Android 4.1 Jelly Bean
«Желейка» была представлена 9 июля 2012 и в ней разработчики сосредоточились на повышении производительности и улучшении внешнего вида интерфейса. Особое внимание было уделено работе с графикой, в частности, технологии, которая должна была обеспечить стабильную работу с пользовательским интерфейсом при идеальных 60 fps.
В ноябре того же года на рынке появилась Android 4.2, а 24 июля 2013 – Android 4.3, сделавшая возможным размещение виджетов на локскрине и совместимая с 4К-экранами.
Android 4.4 KitKat
Какое-то время после релиза Jelly Bean многие специалисты предрекали, что следующую версию Android назовут Lime Pie, однако 31 октября 2013 года ребята из Маунтин-Вью представили новую прошивку с номером 4.4, и по мнению маркетологов Google, более лаконичным именем KitKat, а первым устройством под управлением KitKat стал анонсированный в тот же день Google Nexus 5. В Android 4.4 были применены несколько ухищрений, делающих интерфейс более «свежим».
Однако не все новшества были исключительно эстетического характера: например, появился особый режим, позволяющий приложениям при необходимости скрывать статус бар и наэкранные кнопки, тем самым, освобождая больше места для отображения самого приложения. Помимо вышеупомянутых особенностей, обновившиеся до Android 4.4 девайсы получили возможность эмуляции NFC-карт – иными словами, пользователи смогли оплачивать покупки с помощью смартфона.
Android Wear
18 марта 2014 в свет вышла платформа Android Wear, разработанная специально для смарт-часов и прочей носимой электроники. Android Wear сопрягается с устройствами на базе Android 4.3+ и использует Google Now и мобильные уведомления, чтобы сообщать вам нужную информацию. Первыми гаджетами под управлением Android Wear в июне 2014го стали часы Samsung Gear Live и LG G Watch, а через два месяца, 5 сентября 2014 к ним присоединились и кругленькие Moto 360.
Android Wear была отлично воспринята публикой: только за первые 6 месяцев с момента релиза было продано более 720 000 носимых устройств под управлением AW. В завершение разговора об Android Wear добавлю, что 10 декабря 2014 вышло небольшое обновление системы, позволившее создавать и устанавливать кастомные циферблаты.
Android 5.0 Lollipop
О выходе Android 5.0 Lollipop впервые было объявлено 25 июня 2014 в ходе конференции для разработчиков Google I/O 2014, полноценный же релиз состоялся 12 ноября. В новой прошивке очередной раз был перерисован интерфейс, получивший любимый многими минималистичный Material Design.
Значительному переосмыслению подверглись и уведомления, многозадачность и огромное количество других вещей (разблокировка с помощью распознавания лица, включения экрана двойным тапом, Гостевой режим – и это далеко не полный список).
Android 6.0 Marshmallow
Шестая версия Android была представлена в мае 2015, а стала доступна она почти через полгода, в октябре того же года. В Android 6.0 появилась ранее недоступная функция Now on Tap, представляющая собой возможность контекстного поиска с использованием истории браузера для более релевантных результатов.
С Marshmallow также было добавлено большое системное обновление, касающееся политики энергосбережения. Теперь, если вы не используете смартфон, он практически не расходует энергию.
Android 7 Nougat
Самая актуальная на сегодняшний день версия Android 7 очень рано — в сравнении с предшественницами — появилась в виде бета-версии (в марте прошлого года), однако полномасштабный запуск пришелся на август 2016. Различия между Android Marshmallow и Nougat минимальны, но в то же время последняя осчастливила многих пользователей по всему миру долгожданным многооконным режимом. Эта функция наиболее полезна на Pixel C с его большой диагональю дисплея, но при этом она неплохо работает и на смартфонах – особенно, если вам надо работать с двумя приложениями одновременно.
Кроме того, в Android 7 появилась возможность быстрого ответа в мессенджерах напрямую из уведомлений. Как это обычно бывает, свежая версия мобильной операционной системы от Google очень медленно портируется под девайсы сторонних производителей, но я надеюсь, что в 2017 году ситуация изменится в лучшую сторону – не в последнюю очередь благодаря устройствам, продающимся с Android Nougat из коробки.
Источник: android.mobile-review.com
Пять столпов Android. Технологии, лежащие в основе самой популярной ОС
Существует как минимум пять технологий, которые делают Android именно тем, чем мы привыкли его видеть: виртуальная машина, система многозадачности, сервисы Google, IPC-механизм Binder и ядро Linux. Каждая из этих подсистем имеет свою историю развития, свои причины появления и наделяет Android присущими ему широкими возможностями. Мы в подробностях поговорим о каждой из них и покажем, почему Android — это нечто гораздо большее, чем мобильная ОС.
Виртуальная машина
Принято считать, что в основе Android лежит Java. Дескать, именно поэтому ОС такая требовательная к процессору и оперативной памяти. На самом деле все намного сложнее. Java (а теперь и Kotlin) — это действительно официальный язык Android. Но Java — это не только язык, но и среда исполнения.
В случае обычной Java, разработанной компанией Sun (теперь уже Oracle), приложения компилируются в специальный промежуточный байт-код, который затем исполняет виртуальная машина. Самые ранние версии виртуальной машины делали это путем интерпретации: ВМ читала байт-код, анализировала записанные в нем инструкции и исполняла их.
Это медленный метод исполнения (на каждую инструкцию ВМ могли уходить десятки и сотни машинных инструкций), поэтому позднее появился так называемый JIT-компилятор (Just In Time compiler). С его помощью виртуальная машина могла на лету перегонять байт-код в машинные инструкции, что существенно подняло скорость его исполнения, но повысило расход оперативной памяти: в памяти теперь необходимо хранить не только байт-код, но и полученные из него машинные инструкции плюс метаданные, позволяющие выполнять оптимизации.
Кроме того, при разработке виртуальной машины Джеймс Гослинг решил использовать стековый дизайн виртуальной машины, как простой и универсальный. Но существует более эффективный в скорости исполнения байт-кода и потребления оперативной памяти дизайн виртуальной машины — регистровый.
Именно такая регистровая виртуальная машина (под названием Dalvik) использовалась в первых версиях Android. Благодаря отсутствию JIT-компилятора она была очень нетребовательной к оперативной памяти, а регистровый дизайн позволял исполнять приложения достаточно быстро даже в режиме интерпретации.
Однако в Android 2.2 Google все-таки реализовала JIT-компилятор и долго хвасталась графиками многократного прироста производительности. На деле же скорость возросла незначительно, все самые требовательные к ресурсам API Android и так были реализованы на C++, который исполнялся напрямую на процессоре. Почти все тяжеловесные игры также использовали код на C/C++ и других компилируемых в машинные инструкции языках.
В Android 5.0 Google пошла еще дальше и заменила Dalvik на AOT-компилятор (Ahead Of Time compiler) под названием ART. В теории такой компилятор позволяет избавиться от виртуальной машины как сущности и переводить приложение в машинные инструкции еще на этапе установки. На деле же получалось так, что не весь байт-код можно было одним махом сконвертировать в инструкции процессора, и результирующий код мог содержать как машинные инструкции, так и байт-код старого доброго Dalvik. И со всей этой мешаниной продолжала разбираться виртуальная машина.
AOT-компилятор также проигрывал JIT-компилятору в возможностях оптимизации машинного кода. У него просто не было достаточно информации о поведении приложения и особенностях его работы; ее можно было получить, только запустив приложение. И он существенно замедлял установку приложений и первый запуск операционной системы.
Чтобы это исправить, в Android 7 Google решила использовать гибридный JIT/AOT-компилятор. Сразу после установки приложение исполняется с использованием JIT-компилятора, но во время работы от зарядки смартфон перегоняет приложение в машинные инструкции с помощью AOT-компилятора, который может учитывать информацию, накопленную в процесс исполнения приложения.
А теперь вопрос: зачем Google нужны были все эти заморочки с Java и виртуальными машинами, когда можно было пойти по пути Apple и использовать обычный, компилируемый в машинные инструкции язык, который не страдает от проблем с жором оперативки и производительности?
Ответов на этот вопрос как минимум два.
- Портабельность. Помнишь слоган Java: «Написано однажды — работает везде»? А ведь это не маркетинговый булшит, это чистая правда. Ты можешь скачать любое когда-либо написанное на Java приложение и запустить его на любой полноценной виртуальной машине Java независимо от операционной системы, архитектуры процессора и фазы луны. Оно просто работает. Тем же принципом руководствовались разработчики Android. Неважно, на каком процессоре основан смартфон, неважно, смартфон это или телевизор. Приложение, написанное для Android, будет на нем работать без всяких перекомпиляций и модификаций (если, конечно, оно не использует машинный код на C/C++). Мало того — разработчику даже не нужно задумываться о поддержке более эффективных инструкций, появившихся в новых процессорах, за него это сделает виртуальная машина.
- Надежность. Java — это высокоуровневый язык со сборщиком мусора, не позволяющий адресовать память напрямую и не требующий самостоятельного освобождения выделенной памяти. Это значит, что многие типы атак, включая buffer overflow и use after free, против приложений на Java не могут быть реализованы. В крайнем случае виртуальная машина просто убьет приложение (как это нередко происходит при выходе за границы массива, например). Именно поэтому в Android в целом находят меньше уязвимостей, чем в iOS, полностью написанной на небезопасных языках C, C++ и Objective-C. И это одна из причин, почему Apple понадобился язык Swift, на котором она начала переписывать компоненты ОС и стоковые приложения.
- Популярность. Java — один из самых популярных языков в мире, поэтому у Android-разработчиков изначально был доступ к огромному количеству Java-библиотек и сниппетов, кода, которые можно задействовать в приложении.
Подводя итог: Java и виртуальная машина были правильным выбором. И хотя сейчас набирает обороты язык Kotlin, он полностью совместим с Java на уровне байт-кода. А это значит, что для его поддержки на стороне ОС не нужно делать ничего. Приложения просто работают.
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Источник: xakep.ru