Меню

Режим art андроид – На Android-смартфонах стала доступна функция, которая превращает их в умные дисплеи

Содержание

Проблемы среды выполнения ART на Android / Habr


Доброе время суток, хабражители,

Я являюсь обладателем Nexus 4 с Android 4.4.2 Kit Kat на борту. В новой версии Android была добавлена тестовая функция, среда выполнение ART.
На хабре об этом уже писали: ART идет на смену Dalvik. Я переключился на эту среду выполнения и нашел некоторые баги, о которых и хотел бы рассказать. Кому интересно, прошу под кат.

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

Баг №1


Не все приложения на моем устройстве с Play Market, у меня также установлены некоторые крякнутые игры, например The Room, и если некоторые приложения падали от лишнего прикосновения на экран или просто другой раз писали ошибку — я не обращал внимание. Ну это же Android, думал я, у него чаще падают проги, чем, например, в iOS. Хоть Google и делает стремительные шаги по решению этих проблем, но они все еще есть и их не мало. В итоге после установки крякнутого Navitel 8.7 (до этого я как-то пользовался Navital 5 и Navitel 7, мне просто хотелось иметь оффлайн навигатор, но потом у меня появился мобильный интернет, я перешел на Яндекс Навигатор и забыл про Navitel). Навител 8.7 падал при попытке найти здание по адресу: как только наживаешь на клавиатуру — приложение падает. Также Навител падал при попытке зайти в региональные настройки. Я пробовал ставить приложение с Play Market, но ошибка не исчезла. Я написал в службу поддержке и порылся с интернете. оказалось, что проблема была в среде выполнения ARM. Можно было бы подождать пока Навител исправит проблему или просто забить на этот навигатор, если бы не ощущение того, что не только Навител может падать на ART.

Баг №2


Я вожу авто и порой мне требуется BlueTooth гарнитура. У меня была одна простенькая гарнитура, но позже девушка подарила мне гарнитуру чуть получше (Jabra). Да, Китай, но мне важно было, что бы была зарядка microUSB, был индикатор батареи и показывало, что есть соединение. В общем, гарнитура как гарнитура и должна работать на всех устройствах без нареканий, но не тут-то было. Некоторые разговоры по гарнитуре проходили отлично, но в некоторых разговорах терялся сигнал. То есть я не слышал собеседника, а собеседник не слышал меня, при этом на Android устройстве звучал сигнал(пии-пии). Я не мог понять в чем дела, но с гарнитурой явно было все ОК. Я пробовал подключать на другие устройства. В итоге, когда вернулся к среде выполнения Dalvik, это проблема ушла.

Заключение


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

Спасибо за внимание.

Mobile: Как включить ART на Android вместо Dalvik?

Как включить ART на Android вместо Dalvik ? — 4PDA — 4pda.ru

Уровень сложности: для продвинутых. В будущей версии Android , бета-версия которой сейчас выпущена для разработчиков под кодовым названием Android L, компания Google собирается окончательно сменить среду выполнения Android -приложений с Dalvik на ART .

Что лучше: Dalvik или ART режим? Как включить ART на Android — mobilkoy.ru

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

Пошаговая инструкция по переходу со среды Dalvik на ART — gadgetmir.org

Как переключиться с Dalvik на ART ? Как включить или активировать меню «Для разработчика» на Android ? Дмитрий. Как вернуться на делвик вна 6 андроиде ?

ART или Dalvik на Android — что это такое, в чем | remontka.pro — remontka.pro

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

ART вместо Dalvik : почему Android 4.4 «ест» меньше ресурсов — techtoday.in.ua

Виртуальная машина Dalvik (названа в честь исландского рыболовного порта Дальвик ) присутствует в Android от самого старта этой операционной системы в 2007 году. Чтобы включить ART вместо Dalvik , нужно войти в меню разработчика.

Как включить ART на Android вместо Dalvik ? — x-touch.ru

В будущей версии Android , бета-версия которой сейчас выпущена для разработчиков под кодовым названием Android L, компания Google собирается окончательно сменить среду выполнения Android -приложений с Dalvik на ART .

ART идет на смену Dalvik / Хабрахабр — habrahabr.ru

8 ноября 2013 в 10:59. ART идет на смену Dalvik . Разработка под Android *. ↑ ↓ Если вы, вдруг, как я, поставили ранний образ Android 4..4 от Nexus 5 на свой Nexus 4, то не стоит переключать далвик на арт .

Как включить ART на Android вместо Dalvik ? — Запорожье-ITшное — hd.zp.ua

В будущей версии Android , бета-версия которой сейчас выпущена для разработчиков под кодовым названием Android L, компания Google собирается окончательно сменить среду выполнения Android -приложений с Dalvik на ART .

ART и Dalvik : Как оно работает | AndroidInsider.ru — androidinsider.ru

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

Ответы@Mail.Ru: Как включить dalvik вместо ART на Android 5.1? — otvet.mail.ru

Только хрень типа «как перейти с dalvik на art «. Хелп, памяти вообще ни на что не хватает. Как считаете, какой сервис будет более удобен для прослушивания музыки на смартфоне с Android :Google Play Music или ВК?

Всем привет! У меня такой вопрос. Какая среда лучше Dalvik или — android-helper.com

Пробовал два раза ставить ART вместо Dalvik на Galaxy S5 с Кит-катом. На 5.0 далвика нет совсем. Сравнивать не с чем. Выпилили давлик не потому-что плох, а из-за патентных ява-наездов со стороны oracle.

Как ускорить работу приложений Android 4.4 KitKat ( ART vs. Dalvik ) — athunder.livejournal.com

В Android 4.4 Google добавил экспериментальный продукт. Пользователь может изменить среду выполнения приложений (runtime), выбрав ART вместо привычной среды Dalvik . Чтобы «Инструменты разработчика» появились в настройках

Детальный анализ Android RunTime ( ART ) в Android L — «Хакер» — xakep.ru

Экспериментальная версия ART появилась в Android KitKat 4.4 (его можно активировать через настройки для разработчика), а в будущем ART должен полностью заменить Dalvik и будет использоваться по все приложения будут и под далвик работать,так сючто не парься.

ART против Dalvik — что быстрее? — Android +1 — androidp1.ru

Многие уже говорят что Android c ART просто летает, приложения работают в 2, а то и 3 раза быстрее чем на Dalvik ! Так ли это, можно узнать из видео представленного ниже! ( ART слева, Dalvik cache справа).

Как включить ART на Android вместо Dalvik ? | Проблемы — vk.com

В будущей версии Android , бета-версия которой сейчас выпущена для разработчиков под кодовым названием Android L, компания Google собирается окончательно сменить среду выполнения Android -приложений с Dalvik на ART .

Как включить ART на Android вместо Dalvik ? — Android | Форум — faqstorage.ru

L, компания Google собирается окончательно сменить среду выполнения Android -приложений с Dalvik на ART . Тем не менее, ART гарантированно можно включить на таких смартфонах, как Samsung Galaxy S5, HTC M8, LG

ART вместо DALVIK — itstatii.blogspot.ru

25 ноября 2013 г. ART вместо DALVIK . Здравствуйте! Вывод: Увидеть какие плюсы имеет новая среда выполнения приложения ( ART ) могут уже сейчас владельцы девайсов из л нейки Nexus, с новой версией ОС Android 4.4 KitKat.

В чём разница между Dalvik и ART — Android , Настройка — trashbox.ru

Форум → Android → Настройка, Программы. И стоит ли переключаться на ART ? На треше была статья, что Арт быстрее запускает проги, но жрет больше оперативки. или далвик , не помню.

Android от А до Я: Что такое Dalvik – Прошивки – DroidTune — droidtune.com

Android , dalvik , Андроид от А до Я. Android от А до Я: ART – новая среда выполнения приложений на Android 4.4 KitKat (замена Dalvik ). 3 приложения которые помогут получить root доступ практически на любой девайс android .

Пошаговая инструкция по переходу со среды Dalvik на ART

Home » F.A.Q. » Как переключиться с Dalvik на ART в меню «Для разработчиков» на Android?

переход с дальвик на арт


Перед ответом на вопрос: как включить среду выполнения приложений ART на Android, сначала выясним что это вообще такое. Итак, сама аббревиатура «ART» обозначает сочетание в себе двух английских слов: Android и Runtime. Другими словами, ART являет собой среду выполнения приложений, которая построена на языках программирования С и С++.

По мнению экспертов, именно недавно разработанный ART придет на смену привычному Dalvik. Новая программная оболочка (среда) способна обеспечить более быструю и комфортную работу приложений на Android. Чтобы долго не заморачиваться подведем итог: программная среда ART является более новой, продвинутой и перспективной относительно «старенькой» Dalvik.

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

Потом переходим в следующее меню — «О телефоне» и ищем пункт «Номер сборки». Теперь самое главное! Для активации или отображения меню «Для разработчиков» пользователю надо тяпнуть семь раз по этому пункту. Именно после этого у вашего аппарата, в общих настройках появится меню «Для разработчиков».

меню настройки номер сборки

Далее переходим в новоявленную менюшку и ищем там подпунктик «Выберите среду». Тяпаем по этому делу и видим системное сообщение: «Среда выполнения: 1. Использовать Dalvik; 2. Использовать ART». Тяпаем по второму пункту и видим еще одно системное уведомление: «Перезагрузить устройство, чтобы сменить среду выполнения с libdvm.so на  libart.so?». Выбираем «ОК».

выбор среды выполнения подтверждение выбора

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

Все скрины и эсперименты проводились на Nexus 4 под Android 4.4.4. Если работа в новой системе ART вас чем-либо разочарует — вы всегда сможете вернуться к доброй и старой Dalvik.

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

На Android-смартфонах стала доступна функция, которая превращает их в умные дисплеи

Google в сентябре анонсировала режим Ambient Mode для своего голосового помощника. Он превращает Android-смартфоны и планшеты в подобие умных дисплеев. Изначально функция была доступна эксклюзивно на Google Pixel, но теперь ею можно пользоваться и на других устройствах, в том числе Nokia и Xiaomi.

Режим Ambient Mode автоматически включается в тот момент, когда пользователь ставит устройство на зарядку. Он дает быстрый доступ к некоторым функциям на заблокированном экране. В этом режиме на дисплей могут выводиться фотографии из альбомов Google Photos, напоминания из календаря, панели управления музыкой и подключенными устройствами умного дома, а также сам Google Assistant.

На Google Pixel функция активировалась тогда, когда устройство подключалось к фирменной беспроводной зарядке Pixel Stand. Однако теперь Ambient Mode доступен на других смартфонах с проводными зарядками.

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


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

Новый режим работает на Android 8 Oreo и выше. В будущем Google планирует развивать эту концепцию для всех Android-устройств. Идея в реализации похожа на виджеты на главном экране в более старых версиях Android.

См. также: «В прошивке Android-смартфонов нашли 146 уязвимостей. Они позволяют красть данные и шпионить»

Между тем Xiaomi представила свой голосовой помощник XiaoAI 3.0, который способен вести с пользователем длительные диалоги. Беседу можно будет прекратить с помощью инструкции — и тогда помощник переключится на выполнение задания. XiaoAI сможет также сам принять звонок, перевести его в текст и показать этот текст пользователю на экране, если тот занят. XiaoAI 3.0 будет недоступен в глобальных прошивках MIUI.

тёмная тема, десктопный режим и прочие нововведения

Android Q

Google выпустила первую бета-версию следующего крупного обновления своей мобильной операционной системы — Android Q. Этот апдейт доступен всем смартфонам Google из линейки Pixel и содержит довольно много нововведений. Разработчикам также доступна превью-версия нового SDK, с помощью которого они могут создавать приложения, использующие новые возможности Android.

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

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

Android Q

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

Поддержка нового форм-фактора

Android Q

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

Упрощенная отправка контента

Android Q

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

Быстрый доступ к системным настройкам

Android Q

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

Фото

Android Q

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

Видео и звук

Android Q получил поддержку нового видеокодека AV1, который позволяет получать стриминговый видеопоток с высоким качеством, используя меньше трафика. Также появилась нативная поддержка аудиокодека Opus и режима HDR10+ для устройств с экранами, которые совместимы с ним. Устройства с Android Q можно будет использовать для профессиональной работы с музыкой — благодаря нативной поддержке MIDI.

ART и Vulkan

В Android Q ускорен запуск приложений, в том числе за счёт использования улучшенной технологии ART, которая заранее компилирует и оптимизирует код. Видеодвижок Vulkan, ускоряющий обработку 3D-графики, теперь используется не только в играх, но и в приложениях.

Приложения

Android Q совместим с как с 64-битными приложениями, так и 32-битными, однако через несколько месяцев Google начнёт требовать от разработчиков отказ от более низкой разрядности — в Play Маркет будут принимать проекты только с поддержкой 64 бит.

Десктопный режим

  • Android Q
  • Android Q
Для использования десктопного режима нужно форсированно включить его в настройках для разработчиков, а затем подключить смартфон к компьютеру кабелем и запустить ADB-команду:

adb shell am start -n «com.google.android.apps.nexuslauncher/com.android.launcher3.SecondaryDisplayLauncher»

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

Дополнительные настройки уведомлений

Android Q

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

После свайпа уведомления влево появляются кнопки, позволяющие отключить уведомления на определённое время (15 минут, полчаса или час) или приглушить их.

Новое приложение «Файлы»

Android Q

Стандартное приложение «Файлы» было обновлено — теперь оно выполнено в стиле Material Theme (как многие другие приложения Google). В верхней части экрана появилась строка поиска, а с помощью фильтров можно сортировать файлы по их типу.

Тёмная тема оформления

Android Q

Зачатки тёмной темы оформления были ещё в Android Pie, а Android Q позволяет применить её почти ко всему системному интерфейсу, а также некоторым приложениям Google. Включить её можно через настройки экрана. Многие приложения (например, Play Маркет, «Карты» и даже поисковик Google) остались без изменений и по-прежнему светлые.

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

Для включения: adb shell settings put secure ui_night_mode 2

Для отключения: adb shell settings put secure ui_night_mode 1

Для применения в зависимости от цвета обоев: adb shell settings put secure ui_night_mode 0

Фон для музыки

Android Q

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

Нечаянное удаление

Android Q

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

Чёрно-белый режим

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

Шрифты

Android Q

После включения доступа к настройкам для разработчиков на Android Q появляется возможность выбора акцентного цвета в интерфейсе операционной системы и приложений, шрифта для заголовков приложений, а также формы иконок на рабочем столе. Шрифтов не так много: Google Sans, Roboto, Noto Serif и Source Sans Pro. Акцентный цвет влияет в том числе на внешний вид кнопок в быстрых настройках.

Чёлка и закругления экрана

Android Q

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

Оставшееся время работы

Android Q

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

QR-код от сети Wi-Fi

Android Q

Через настройки сети теперь можно делиться QR-кодом для подключения к Wi-Fi без ввода пароля. Там же можно запустить сканер для считывания такого кода.

Запись экрана

Android Q

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

Экономия энергии

Android Q

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

Релизы Android Q

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

iGuides в Telegram — t-do.ru/igmedia
iGuides в Яндекс.Дзен — zen.yandex.ru/iguides.ru

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

Автор перевода и источник: Максим Юдин

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

Для разработки приложений под платформу Android потребуется набор инструментов и библиотек API — Android SDK, последнюю версию которого вы можете найти здесь.

На представленном ниже рисунке показана архитектура ОС Android.


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

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

Уровень каркаса приложений (Application Framework)

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

Основой всех приложений является набор систем и служб:
1. Система представлений (View System) – это богатый набор представлений с расширяемой функциональностью, который служит для построения внешнего вида приложений, включающий такие компоненты, как списки, таблицы, поля ввода, кнопки и т.п.
2. Контент-провайдеры (Content Providers) – это службы, которые позволяют приложениям получать доступ к данным других приложений, а также предоставлять доступ к своим данным.
3. Менеджер ресурсов (Resource Manager) предназначен для доступа к строковым, графическим и другим типам ресурсов.
4. Менеджер извещений (Notification Manager) позволяет любому приложению отображать пользовательские уведомления в строке статуса.
5. Менеджер действий (Activity Manager) управляет жизненным циклом приложений и предоставляет систему навигации по истории работы с действиями.

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

Платформа Android включает набор C/C++ библиотек, используемых различными компонентами ОС. Для разработчиков доступ к функциям этих библиотек реализован через использование Application Framework. Ниже представлены некоторые из них:
1. System C library — BSD-реализация стандартной системной библиотеки C (libc) для встраиваемых устройств, основанных на Linux.
2. Media Libraries – библиотеки, основанные на PacketVideo‘s OpenCORE, предназначенные для поддержки проигрывания и записи популярных аудио- и видео- форматов (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG и т.п.).
3. Surface Manager – менеджер поверхностей управляет доступом к подсистеме отображения 2D- и 3D- графических слоев.
4. LibWebCore – современный движок web-браузера, который предоставляет всю мощь встроенного Android-браузера.
5. SGL – движок для работы с 2D-графикой.
6. 3D libraries – движок для работы с 3D-графикой, основанный на OpenGL ES 1.0 API.
7. FreeType – библиотека, предназначенная для работы со шрифтами.
8. SQLite – мощный легковесный движок для работы с реляционными БД.

Уровень среды исполнения (Android Runtime)

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

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

Уровень ядра Linux (Linux Kernel)

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

Архитектура Android-приложений. Часть I — истоки / Habr

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

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

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

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

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

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

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

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

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

Архитектурные уровни Android

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

Рассмотрим эти слои один за другим и более подробно.
Уровень Linux

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему это так? Почему, например, Android-приложения не написаны на C++? Со стороны Google я не нашёл никаких объяснений, поэтому могу поделиться лишь собственными соображениями.

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

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

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

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

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

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

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

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

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

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

Ребята из Google также пересмотрели стандартные пакеты Java JDK API. Они удалили некоторые из них (например всё, что касалось Swing) и добавили некоторое количество собственных — их имя начинается с «android».

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

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

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

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

Следующие статьи:

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

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