Фреймворк для создания мобильных приложений
По работе мне неоднократно приходилось сталкиваться с выбором подходящей технологии для мобильной разработки. Ниже я попробовал собрать и классифицировать основные фреймворки по используемым подходам, достоинствам и недостаткам.
Если какая-то моя информация некорректна, или устарела — комментарии приветствуются.
Ограниченная поддержка платформы
Любой кросс-платформенный фреймворк — это слой абстракции над нативной платформой и позволяет обращаться только к тем её возможностям, которые прямо поддерживаются фреймворком.
В большинстве случаев есть возможность расширить поддержку возможностей платформы путём написания нативных плагинов к фреймворку, но в некоторых случаях это может существенно усложнить разработку. Свежий пример из нашумевшей статьи AirBnb — React Native, который в данный момент не умеет “из коробки” работать с 64-битными Android-библиотеками.
Также нужно обратить внимание, что нативные плагины и основной код кросс-платформенного приложения, как правило, исполняются в разных процессах и взаимодействие между ними может вызывать проблемы с производительностью. Для работы с датчиками, или SQLite это, обычно, не проблема, но если вы используете, скажем, библиотеку OpenCV в качестве нативного плагина и начинаете кидать видео между ней и основным приложением, замедление может быть существенным.
Основные фреймворки
Основой всех основных гибридных фреймворков является Cordova, предоставляющая доступ к нативным плагинам. PhoneGap предоставляет инструментарий для сборки поверх Cordova, в то время как Ionic представляет собой фреймворк и набор компонентов для построения в ней пользовательских интерфейсов.
Основные плюсы
Минимальная стоимость разработки
Гибридный подход позволяет переиспользовать не только навыки разработчиков, но и код, написанный для веб-сайтов.
Возможность интеграции веб-элементов
Количество библиотек для HTML/JS заметно превосходит количество таковых для нативных приложений. Из интересного, сюда относятся, например, Google Analytics, или богатый выбор рекламных сетей.
Основные минусы
Данные минусы актуальны только для приложений, имитирующих стандартный интерфейс ОС. Как уже говорилось, для дизайнерских интерфейсов и игр данный подход является оптимальным.
Размер приложения
Приложения с таким подходом вынуждены нести с собой код для отрисовки всех элементов интерфейса, включая условно стандартные. Это сказывается как на размере приложения при установке, так и на оперативной памяти при работе.
Если первую проблему можно минимизировать эффективным Tree Shaking (как это делают последние версии Flutter), то по оперативной памяти эти приложения стабильно проигрывают нативным. Впрочем, эта проблема характерна и для других кросс-платформенных фреймворков.
Ненативный интерфейс
По умолчанию, приложение выглядит одинаково на всех платформах, что может создавать дискомфорт для пользователей. Для решения этих проблем используются темы, но создать ощущение полностью нативного приложения они не могут.
Но есть и более крупный минус — с таким подходом сложнее всего использовать сторонние элементы интерфейса, созданные для нативных приложений (включая упомянутые ранее Native Ads).
Ограниченное предложение на рынке труда
Во-первых, само наличие разработчиков зависит от распространённости фреймворка. Найти людей под React Native может быть даже легче, чем нативных разработчиков, а, например, с Flutter намного сложнее.
Насколько нужно учитывать этот фактор — зависит от задач. Большинство стартапов могут не обращать на него внимания, поскольку изучение новой технологии является скорее бонусом для действующих и потенциальных сотрудников. С другой стороны, крупный бизнес вынужден учитывать рынок труда.
Основные плюсы
Полностью нативный интерфейс
Во-первых, внешний вид и “ощущение” от приложения полностью совпадают с нативными приложениями.
Во-вторых, это позволяет использовать в приложениях библиотеки нативных интерфейсов. Использовать нативную рекламу (Native Ads), ориентированную на мобильные приложения, в других подходах не получится. Правда и для этого подхода набор соответствующих библиотек очень ограничен. Я знаю только о поддержке Facebook Native Ads в React Native.
Возможность переиспользования квалификации разработчиков
Основные плюсы
Высокая производительность интерфейсов
По сути, приложение, самостоятельно рисующее свой интерфейс, выполняет те же операции, что ОС в нативном интерфейсе. В теории оно может быть даже быстрее, т.к. нет переключения между процессом и ядром, но на практике другие факторы влияют на скорость отрисовки конкретного интерфейса, играют намного большую роль.
“Дизайнерские интерфейсы”
Нативные приложения пользуются готовыми компонентами интерфейса и имеют некоторые ограничения в том, что с ними можно сделать. В свою очередь, приложения, сами рисующие свой интерфейс, не имеют таких ограничений и могут свободно смешивать готовые элементы с индивидуальной отрисовкой.
Классификация по работе исполняемого кода
Компилируемый код
Интерпретируемый язык с JIT-компиляцией
Большинство фреймворков этого подхода используют JavaScript для обработки бизнес-логики.
Основные минусы
Невысокая производительность
Сам по себе современный JavaScript использует JIT-компиляцию, хорошо оптимизирован и работает быстро, но построение интерфейса на основе DOM-дерева — не очень эффективный процесс. Использование современных JS-фреймворков даёт дополнительный уровень нагрузки. Для слабых телефонов и/или при активном использовании интерактивных элементов, это может быть проблемой.
“Ненативное ощущение”
Это довольно неформальный, но очень важный пункт. Сайт в браузере реагирует на жесты и отображается немного не так, как мобильное приложение. Наиболее заметный элемент этого ощущения, задержку 300ms при нажатиях, Cordova решает, но многие другие детали остаются.
Проблема браузерной совместимости
На старых версиях Android (до версии 5), WebView был частью платформы и не обновлялся автоматически. Соответственно, использовать современные возможности браузеров в гибридных приложениях на этих устройствах не получится.
Как следствие, гибридные приложения либо ограничивают минимальную версию Android (оставляя за бортом около 13% устройств на данный момент), либо включают WebView в код приложения (проект CrossWalk), увеличивая размер приложения на несколько десятков мегабайт.
Гибридная разработка, HTML+JavaScript
Технически, приложения гибридного типа представляют собой HTML-страницу, отображаемую во встроенном браузере. В целом для этого подхода фреймворк не обязателен, но Cordova обеспечивает набор плагинов для доступа к возможностям платформы, из-за чего как правило используют её.
Основные минусы
Ограничение возможностей интерфейса, или дополнительные затраты на раздельную разработку
Формат этого минуса зависит от классификации фреймворка по способу описания интерфейса:
Xamarin позволяет использовать почти все возможности платформ, но приходится тратить много времени на интерфейсы для каждой платформы. В итоге трудозатраты становятся ненамного меньше, чем при нативной разработке.
Xamarin Forms и Appcelerator позволяют описывать интерфейсы только один раз, но работают с сильно ограниченным подмножеством нативной функциональности (не больше, чем минимальное пересечение множеств возможностей каждой платформы, если быть формальным).
React Native находится посредине, совмещая оба недостатка, но в менее выраженной форме.
Производительность взаимодействия с интерфейсом
Здесь вступает в игру фактор исполнения интерфейсов и бизнес-логики в разных процессах. Когда нужно обмениваться через мост большими объёмами информации с высокой скоростью (сложная анимация с высокой частотой), в данном подходе могут возникать сложности.
Утечки памяти
Утечки памяти могут возникать в любом приложении, но с большинством стандартных ситуаций отлично справляются сборщики мусора.
Проблема кросс-платформенных приложений с нативным интерфейсом опять в том, что они выполняются в двух процессах, имеющих раздельные сборщики мусора. Если объект бизнес-логики ссылается на объект интерфейса, этот объект интерфейса не является мусором, т.к. на него есть ссылка из моста. Если объект интерфейса ссылается обратно на объект бизнес-логики, они не будут считаться мусором даже если больше никаких ссылок на них не будет.
Шансы встретить проблему и её масштаб напрямую зависят от приложения. Если в нём активно создаются и удаляются объекты, связанные с интерфейсом (как в бесконечном скроллинге) вероятность утечки вырастает. Если эти объекты большие (например изображения), вырастает влияние утечки.
Собственно, эта проблема присутствует и при работе с нативными плагинами, которые тоже выполняются в отдельном процессе. Но там, в большинстве случаев, либо нет такого интенсивного манипулирования большими объектами, либо взаимодействие идёт в строго процедурном подходе, без перекрёстных ссылок.
Предназначение
Приложения с полностью нативным интерфейсом, особенно при наличии специалистов в смежных технологиях.
Нативный UI, общий код
Важно отметить, что при таком подходе, пользовательский интерфейс и бизнес-логика выполняются в разных процессах, взаимодействующих через мост (“bridge”). С этим связан ряд минусов подхода.
У этого подхода есть несколько вариантов реализации.
Основные фреймворки
React Native
Имеет поддержку Facebook и использует подход самого популярного JS-фреймворка React, за счёт чего очень популярен. Недавняя статья об отказе AirBnb от React Native наделала много шума, но если осознавать риски, может быть очень эффективным решением.
Xamarin
NativeScript
Сделан по образцу React Native для разработчиков, владеющих другими JS-фреймворками (Angular и Vue.js). Менее популярен, но имеет ряд более современных решений в архитектуре.
Риски поддержки
Считается, что вероятность того, что поддержка кросс-платформенного фремворка закончится — намного выше, чем вероятность того же события в отношении мобильной ОС.
На самом деле вопрос довольно сложный. ОС могут закрываться так же, как фреймворки (пример Windows Phone совсем свеж). Кроме того, внутри нативной разработки могут отдельные технологии также могут закрываться и иногда код на кросс-платформенных фреймворках обладает большей живучестью.
Основные фреймворки
Flutter
Flutter продвигается компанией Google как основной фреймворк кросс-платформенной разработки и основа интерфейса их будущей ОС Fuscia. Пока фреймворк очень молод (в стадии Release Preview) и не очень распространён, но быстро набирает популярность. Использует язык Dart (с компиляцией в нативный код).
Имеет все плюсы и минусы молодости — продуманную архитектуру с учётом ошибок предшественников, но достаточно ограниченную экосистему.
QT Mobile
Пользуется популярностью у разработчиков десктопного QT. При разработке может использоваться JavaScript. Без поддержки крупных компаний не пользуется особой популярностью.
Ещё один не очень популярный фреймворк, который интересен, в первую очередь тем, что это единственный фреймворк в списке, который использует язык Python. Для разработчиков, знакомых только с этим языком (а таких много в некоторых областях информационных технологий), это может иметь решающее значение.
В конце статьи поместил несколько опросов, которые помогут понять популярность и рейтинг этих фреймворков.
Интересные возможности
Отличительные фишки платформ, которые захотелось выделить.
- Приложения выглядят и ведут себя как нативные, но полностью написаны с использованием JavaScript (js код в рантайме транслируется в нативные view).
- UI можно создавать отдельно для каждой платформы с использованием фреймворка Alloy (интегрированный MVC фреймворк, использующий XML и CSS-подобный синтакс). Несмотря на то, что создание отдельного UI для каждой ОС усложняет разработку и сильно снижает объем переиспользуемого кода, вся бизнес-логика, модель и ядро приложения все же остаются одинаковыми для любой платформы.
- Магазин плагинов и компонентов (520 компонентов и 204 из них бесплатные) – все, что только может понадобится для приложений: аналитика, реклама, облачные хранилища, социальные сети, работа с графикой и т.д.
- Аналитическая платформа (мониторинг данных о приложении в режиме реального времени, мониторинг производительности, крэшей, логов и даже самого процесса создания приложения)
- Полная автоматизация тестов.
- Встроенные коннекторы к самым популярным enterprise-платформам (Salesforce, SAP, Oracle, Microsoft Dynamics и SharePoint), коннекторы к популярным приложениям (LinkedIn, PayPal, DropBox, Facebook, Twitter и др.). Возможность создавать свои собственные коннекторы к любым сервисам.
- Приложение работает как обычная веб-страница внутри WebView, соответственно все строится на основе всем знакомых HTML, CSS и JS. Но при этом PhoneGap API дает нам возможность использовать все возможности устройства в приложении: камера, звук, GPS, файловая система, контакты, уведомления и т.д.
- Из-за того, что PhoneGap приложение строится на основе WebView, его можно внедрить в нативное приложение (получим гибридное приложение).
- Можно скомпилировать под любую существующую мобильную платформу, включая Tizen, Bada, Firefox OS. Причем сделать это можно буквально в пару кликов, используя облачный сервис PhoneGap Build.
- Фреймворк сам по себе небольшой и простой, поэтому порог вхождения в разработку на PhoneGap довольно низок, достаточно знать лишь основные веб-технологии.
- Это открытый и бесплатный продукт.
- Встроенные отзывы пользователей (user feedback).
- Платформа аналитики.
- Портал AppManager, куда можно загружать свои приложения, назначать доступ к ним, приглашать и управлять пользователями. (своеобразный собственный Play Market).
- Автоматизированное тестирование нативных, гибридных и web-приложений.
- Пуш-уведомления.
- Собственная продвинутая веб-IDE, соответственно создавать приложения можно прямо в браузере с любого устройства (с нормальным браузером конечно) в любой точке мира (с доступом к интернету).
- Дизайн и создание прототипов.
- Система контроля версий (VCS).
- Как и PhoneGap и Worklight, Telerik основан на Apache Cordova со всеми ее достоинствами и недостатками.
- Создание нативных и гибридных приложений.
- Система удаленного управления своими приложениями.
- Интеграция с enterprise-сервисами.
- Пуш уведомления.
- Синхронизация с сервером изменений, сделанных пока приложение было в оффлайне.
- Возможность использовать для разработки любую привычную и любимую IDE (IDEA, Eclipse, NetBeans и др.), а также есть собственная Verivo AppStudio.
Инструменты разработки
- Titanium Studio, основанная на Eclipse.
- Основанная на Eclipse Kony Studio (Kony Visualization Cloud – для дизайна и прототипирования, Kony Development Cloud – разработка, Kony Management Cloud – управление приложениями).
- Собственной среды разработки нет, но по сути это и не особо нужно. Зато есть интеграция с Adobe Dreamweaver и Brackets.
- Также есть некое приложение «Developer App», которое позволяет мгновенно смотреть изменения на мобильном устройстве, без необходимости компилировать разрабатываемое приложение и собирать его.
- Worklight Studio – плагин для Eclipse, превращающий его в среду разработки на Worklight.
- AppPrototyper (дизайн и прототипирование)
- AppBuilder (разработка)
- AppManager (управление)
- AppFeedback (обратная связь с пользователями)
- AppAnalytics (соответственно система аналитики)
- Есть своя IDE Verivo AppStudio.
- Также для разработки можно использовать любую привычную среду (IDEA, Eclipse, NetBeans и др.)
- Есть своя IDE Xamarin Studio.
- Также разрабатывать можно и в любимой Visual Studio, установив специальный плагин.
Поддерживаемые платформы
- Нативные приложения под мобильные ОС: iOS, Android, BlackBerry, Tizen, Denso.
Mobile-web приложения под те же платформы. - Десктопные приложения под Windows, Mac.
- Десктопные приложения под Windows, Mac.
- Веб-приложения для браузеров IE 8+, Safari 5+, Chrome 20+, Opera 12+, Firefox 4+.
- Приложения для смартфонов и планшетов — iOS, Android, Blackberry, Windows Phone.
- Приложения для инфокиосков.
- Mobile-web приложения: iOS, Android, Windows Phone, Blackberry, Ubuntu, Firefox OS.
- Мобильные нативные и mobile-web: Android, iOS, Blackberry, Windows Phone, Java ME.
- Десктопные: Windows 8.
- Мобильные: iOS, Android, Windows Phone.
- Десктопные: Windows 8.
- Нативные и mobile-web: iOS, Android.
- Мобильные нативные приложения: iOS, Android, Windows Phone.
- Десктопные нативные – Windows, Mac.
Судя по всему, если необходимо по-настоящему кроссплатформенное приложение, то Kony предоставляет самый широкий выбор платформ.
Языки разработки
Расширяемость фреймворков
- Используя «модули», которые можно загружать или создавать самому (для этого необходимы навыки нативной разработки под нужную платформу), можно расширять возможности Titanium.
- Есть свой магазин компонентов (520 на данный момент и 204 из них бесплатные).
- FFI (Foreign Function Interface) – расширения для платформы, которые можно писать, используя нативные языки. Но проблема в том, что их очень мало и сложно найти, в итоге разработчики ругаются, что для обычных мелочей приходится писать эти расширения. (Если кто знает подробности, пожалуйста, напишите в комментариях).
- В JS разработке можно использовать какие угодно JS библиотеки (jQuery, Sencha Tuch и т.д.).
- Сам PhoneGap поддерживает плагины, которые можно найти в интернете или написать самому. Но существуют различные проблемы совместимости с разными платформами. (Кто пробовал, пожалуйста, опишите в комментариях подробности).
- Аналогично PhoneGap, так как Worklight создан на основе Apache Cordova, как и PhoneGap.
- Можно использовать специальные плагины для Verivo, а также плагины для Apache Cordova, которые можно найти в интернете или писать самому.
- Нужные модули можно разработать самому, используя Java. Сама платформа еще только развивается, поэтому скорее всего готовых решений еще очень мало, если вообще можно найти.
- У Xamarin есть свой магазин компонентов, где на данный момент выложено 200 расширений (в основном для iOS и Android), огромное количество из них бесплатные.
Аналитика, крэш-репорты, логи, аудит и менеджмент
Возможности наблюдения за приложением, пользователями, а также средства для мониторинга ошибок и просмотра логов.
- Панель наблюдения в режиме реального времени за жизненным циклом приложения (от прототипа до публикации).
- Система аналитики для бизнес-пользователей, где в реалтайме можно отслеживать все показатели приложения. Также есть специальное приложение для iOS и Android.
- Система управления (Management Dashboard), где можно следить за производительностью приложений, возникающими исключениями, просматривать креш-репорты.
- Встроенная система аналитики и креш-репортов.
- Интеграция с Omniture, IBM Coremetrics, Google Analytics и WebTrends.
- Возможность задания кастомных атрибутов через специальное API для создания кастомных репортов.
- Возможность отслеживания действий пользователя (детальный аудит).
- Отсутствие своих систем аналитики. Но так как это веб-приложение, вы можете интегрировать любую стороннюю систему, например Google Analytics (в интернете есть даже специальные плагины для этого). Та же ситуация и с креш-репортами (только вот плагинов я не нашел).
- Система аналитики для enterprise-клиентов, которая позволяет следить в реалтайме за логами и событиями, которые собираются со всех приложений, устройств и серверов.
- Креш-репорты и гибкая настройка логов.
- Запуски и работа приложений.
- Просмотр пользователей и сессий.
- Отслеживание собственных событий.
- Отслеживание возникающих исключений.
- Нет, вообще ничего. Платформа новая и еще только начинает развиваться.
- Встроенных средств нет. Но зато есть много разных плагинов, которые решают эту проблему.
Цены и тарифные планы
- Developer — бесплатно (без системы менеджмента)
- Enterprise (все фишки платформы + support) – цену не указывают, предлагая связаться с ними, так что если кто знает их корпоративные расценки, укажите в комментариях.
- Trial (90 дней) – бесплатно.
- Standard (1 приложение) — $19/пользователь/мес.
- Professional (3 приложения) — $39/ пользователь/мес.
- Enterprise (неограниченное кол-во приложений) – договорная цена.
- Developer (неограниченное кол-во публичных приложений, но только 1 приватное) — бесплатно.
- Starter (3 приватных приложения) — $12/мес., $120/год (экономия $24).
- Team (10 приватных приложений, до 3 сотрудников) — $30/мес., $300/год (экономия $60).
- Corporate (25 приватных приложений, до 10 сотрудников) — $90/мес., $900/год (экономия $180).
- Trial (30 дней) — бесплатно.
- Developer (1 приложение, без множества фич) — $49/мес., $468/год (экономия $120).
- Professional (гибридные и нативные приложения)- $119/пользователь/мес., $948/пользователь/год (экономия $480).
- Business (веб, гибридные и нативные приложения) — $224/пользователь/мес., $1788/пользователь/год (экономия $900).
- Trial (30 дней) — бесплатно.
- Enterprise — $5000-$60000/год.
- Starter (индивидуальный план, без множества фич) — бесплатно.
- Indie (индивидуальный план, без некоторых фич) — $299/год.
- Business (для организаций, без некоторых фич) — $999/пользователь/год.
- Enterprise (для организаций, все включено) — $1899/пользователь/год.
Что из этого выбирать — решать вам. Надеюсь этот краткий обзор кому-нибудь сэкономит время в поисках подходящего решения. Плюсы и минусы каждого фреймворка, к сожалению, не имеет смысла описывать, не поработав с каждым из них. Надеюсь, что в комментариях к статье кто-нибудь поделится со мной полезной информацией касательно этой темы и, может быть, статья будет дополняться.
UPDATE 15.07.2014
Добавлен раздел «Языки разработки». Пара дополнений в статье.
________________________________________________________________
Android – прекрасная платформа для мобильных устройств, она работает на миллионах смартфонов в 200 странах по всему миру. В этом посте я собрал несколько популярных фреймворков для разработки приложений под Android, из числа популярных среди разработчиков.
Смысл фреймворка – увеличить производительность, уменьшив затраты усилий на разработку. В идеале они экономят разработчикам время на то, чтобы заняться реально важными при разработке приложения вопросами.
1) Corona SDK
Богатый инструментарий для создания игр и приложений за рекордно короткое время
Обеспечивает возможность очень быстрой разработки. Элегантный API упрощает добавление сложных функций, технологический процесс позволяет сразу же видеть внесённые изменения, сама же разработка идёт на Lua – простом для изучения языке. Всё это приводит к рекордной скорости разработки.
Самый популярный фреймворк, часто используется разработчиками игр, но подходит для любого рода приложений. Уже более миллиона разработчиков пользуются API, поддержкой нативного интерфейса, встроенным движком и рекламной платформой.
2) Phonegap
Простое создание приложений при помощи веб-технологий.
Использует HTML5, CSS и JavaScript. Спонсируется Apache и Adobe. Версия 2.0 предлагает поддержку Windows phone, новых библиотек и функций CLI. Для вставки кода в крупные приложения используется инструмент Cordova WebView
3) Xamarin
4) Sencha Touch 2
Идеальная платформа для разработки и управления безопасными бизнес-приложениями, работающими на разных устройствах. Разработка ведётся на JavaScript и HTML5. Встроенная система MVC, 50 различных встроенных компонентов, система управления разработкой. Имеется бесплатная функция публикации приложения в Google Play.
5) Appcelerator
Разработчики утверждают, что в мире работают два миллиарда приложений, созданных на этом фреймворке. Частью фреймворка является Titanium SDK, который поддерживает разработку на языке JavaScript
6) Basic4Android
RAD (быстрая разработка приложений) и наличие своего IDE. Разработка ведётся на простом языке программирования, напоминающем Visual Basic.
7) JQuery Mobile
JQuery, заточенный под работу с сенсорными экранами. Помогает разработчикам строить сайты с отзывчивым дизайном и приложения, работающие как на десктопах, так и на планшетах и смартфонах.
8) Dojo Mobile
Фреймворк для создания приложений на базе HTML5 + JavaScript, помогающий реализовать быструю разработку мобильных приложений для Android и iOS. Присутствует набор форм, MVC, и симпатичные темы приложений.
9) Sproutcore
MVC-дизайн, оптимизация быстродействия и забота о расширяемости приложений.
10) Theappbuilder
Основан на HTML5. Предлагает простой drag and drop интерфейс без написания кода, что позволяет очень быстро разрабатывать приложения. Особое внимание уделяется интеграцией с соцсетями и прямая отправка приложений в Google Play.
11) DHTMLX Touch
Библиотека на основе AJAX и JavaScript, предназначенная для создания виджетов и приложений на основе HTML5.
12) Mo Sync SDK
Поддержка HTML5, JavaScript, C++ и 9-и различных платформ. Также возможно сопряжение с PhoneGap. Для отладки предлагается эмулятор под названием MoSync Reload.
Для создания мобильных приложений есть множество фреймворков. Но выбрать нужно лишь один.
Совсем недавно каждый разработчик занимался разработкой мобильных приложений, используя Software Development Kit (SDK), предоставляемый конкретной мобильной платформой. Например, SDK Android имеет для разработки приложений все необходимые API Java. В свою очередь, SDK iOS предлагает API Swift/Objective C. Таким образом, две популярные мобильные платформы имеют совершенно разные SDK. Сложившаяся ситуация создала проблему для коммерческого развития процессов разработки мобильных приложений. Компании должны были поддерживать базы исходного кода для каждой мобильной платформы. Как правило, им приходилось иметь две группы разработчиков.
Решением этой проблемы стали фреймворки для кроссплатформенной разработки мобильных приложений. Все они пытаются ввести уровень абстракции над специфичными для каждой платформы API. Некоторые фреймворки использовали для абстракции webview (веб-просмотр). Другие включали собственные графические библиотеки. Сегодня есть несколько вариантов для тех, кто планирует создать кроссплатформенное мобильное приложение. Выбору фреймворка нужно уделить особое внимание, потому что от него будет зависеть успех вашего проекта.
Внимательно изучив все популярные фреймворки я выделил их примечательные особенности.
Ionic изначально был создан на основе проекта Cordova и позволяет создавать гибридные кроссплатформенные приложения с использованием веб-технологий. Внутренняя архитектура Ionic несколько напоминает проект Electron. Вся структура графического интерфейса приложения отображается внутри веб-страницы. Ionic предлагает набор плагинов для обработки встроенных операций, таких как фотографирование и запись файла.
Ionic отлично подходит для небольших мобильных приложений с быстрой загрузкой. Если у компании уже есть фронтенд-разработчики, тогда для создания мобильного приложения на Ionic не нужны дополнительные специалисты. Ionic подходит для создания мобильных приложений с небольшим бюджетом и постоянными запросами. Однако он плохо работает в крупномасштабных приложениях, потому что базируется на веб-просмотре.
React Native позволяет разработчикам создавать кроссплатформенные приложения с встроенными элементами графического интерфейса мобильной операционной системы. Он обрабатывает встроенные функции, очень похожие на Ionic, но не использует веб-просмотр. Все встроенные операции выполняются через движок JavaScript, который взаимодействует с собственными плагинами. Самое важное то, что мы можем разработать интерфейс в стиле React с помощью React Native FlexBox.
React Native отлично подходит для концептуального приложения с множественным динамическим контентом. Например, это может быть приложение с лентой новостей, где пользователи могут ставить лайки и оставлять комментарии. Он отлично подходит для мобильных приложений среднего размера с бюджетом на разработку выше среднего. React Native может стать разумным выбором для приложений со сложным пользовательским интерфейсом. Но этот фреймворк окажется не лучшим выбором для приложения, которое выполняет много нативных функций, потому что такие операции обрабатываются через мост JavaScript.
Flutter стал альтернативой от Google на проект React Native. Он включает графическую библиотеку для отрисовки встроенных элементов графического интерфейса. Flutter поставляется с собственным набором инструментов для интерфейсных элементов. Следовательно, все созданное с помощью этого инструментария будет выглядеть одинаково в любой операционной системе. Но Flutter также виджеты в стиле Android/iOS. Существуют API библиотеки Dart для нативных операций.
Flutter является хорошим выбором для тех, кто хочет иметь одинаковый визуальный интерфейс в разных операционных системах. Стоимость разработки такого мобильного приложения может оказаться более высокой из-за того, что у Flutter еще не совсем устоявшаяся инфраструктура. В процессе работы над проектами по разработке приложений на Flutter может появиться необходимость в оплате услуг еще и разработчиков Dart. Flutter — хороший выбор для больших мобильных приложений. Он также отлично подходит для мобильных приложений у которых достаточно много встроенных функций, потому что встроенные операции Flutter никогда не взаимодействуют через мост JavaScript. Например, Flutter взаимодействует с API Android с помощью класса Java ByteBuffer.
Ни один фреймворк не является оптимальным выбором. Обычно устранение посредников благоприятно сказывается на житейских проблемах. Точно так же, используя лишь SDK операционной системы, у вас будет больше свободы в действиях. Если есть новый нативный API, а вы используете фреймворк, то придется ждать до тех пор, пока кто-нибудь не создаст общедоступный плагин. А без фреймворка вы сможете непосредственно применять самый последний SDK с недавно выпущенной функцией. Кроме того, плагины могут содержать скрытые ошибки и снижать производительность, поэтому после выявления подобных проблем, обычно приходится ждать, пока специалисты по сопровождению устранят выявленную ошибку.
Если позволяет бюджет проекта, а концептуальное приложение имеет множество встроенных функций, лучше всего подойдет нативный системный SDK. Для простого мобильного приложения возможной альтернативой этому подходу без фреймворка может стать Xamarin. Следовательно, можно будет использовать один язык программирования для доступа к API и Android, и iOS. Кроме того, при использовании общего независимого от платформы кода можно улучшить управляемость исходной программы.
Как отмечено выше, при выборе фреймворка необходимо учитывать ряд факторов. Общими факторами для принятия решения являются масштаб проекта, количество встроенных функций, сложность пользовательского интерфейса, выделенный бюджет и время реализации проекта. Кроме того, следует подумать о поддержке сетевого сообщества. Например, у Flutter и Dart поддержка сообщества лучше, чем у Xamarin. Фактически, преимущества работы без фреймворков в настоящее время недостаточно оценены. Неправильный выбор фреймворка зачастую является для разработчика причиной проблем с производительностью приложения, поэтому уделяйте серьезное внимание выбору фреймворка.
Android предлагает разработчикам массу возможностей: это универсальная, открытая платформа, используемая миллионами пользователей по всему миру, с удивительно простой в использовании площадкой для распространения приложений. К счастью, существует множество инструментов для Android-разработчиков, которые помогут быстро начать работу. Но еще лучше то, что с каждым годом инструментов становится все больше, а их эффективность постоянно повышается. Еще никогда не было столь благоприятного времени для создания собственного приложения под Android!
Ни один топ “Лучших инструментов для разработки приложений под Android” не обходится без Android Studio. Это официальная IDE (интегрированная среда разработки) для Android, созданная компанией Google. Именно поэтому Android Studio является номером один для разработчиков, которые хотят создавать приложения, в соответствии с Material дизайном Google и доступом к расширенным функциям платформы.
IDE — это место, в котором разработчик проводит большую часть своего времени: Android Studio выступает в качестве редактора для выбранного вами языка программирования (он поддерживает Java, C++, а также Kotlin, который с недавних пор тоже стал официальным языком Android), компилятора, который может создавать APK файлы и файловой системы для организации вашего проекта. Кроме этого он включает в себя редактор XML и расширенный редактор макетов. Android Studio предлагает целый набор дополнительных инструментов, некоторые из которых мы рассмотрим в данной статье. К счастью, большинство из них теперь можно скачать единым пакетом. По сути, этот пакет идет в комплекте с Android SDK, но вам все равно придется отдельно загрузить и установить Java JDK. И было бы неплохо, если бы вы прочли инструкцию для новичков по использованию Android Studio.
Разработка при помощи Java и Android SDK имеет несколько крутую кривую обучаемости, но с точки зрения интеграции, поддержки и возможностей — Android Studio нет равных.
Инструмент AVD Manager идет в комплекте с Android Studio. Аббревиатура AVD расшифровывается как “Android Virtual Device”, поэтому, по сути, это эмулятор для запуска приложений Android на вашем компьютере. Это очень полезный инструмент, который позволяет вам тестировать свои приложения, без необходимости устанавливать их на физические устройства. Что еще более важно, AVD Manager позволяет создавать множество эмуляторов с различными размерами экрана, спецификациями и версиями Android. Вы сможете увидеть, как будет выглядеть ваше творение на любом устройстве, и тем самым обеспечите поддержку среди самых популярных гаджетов. Производительность инструмента постоянно улучшается, особенно с режимом fast virt, который запускает на вашем компьютере версию Android от Intel и устраняет необходимость эмуляции уровня instruction.
Еще один встроенный инструмент — Android Device Monitor, который позволяет проводить мониторинг вашего физического или виртуального устройства во время его работы, и, взамен, получать информацию о том, сколько процессов выполняется по потоку, сетевую статистику, LogCat и т.д. Данный инструмент отлично подходит для тестирования производительности ваших приложений.
ADB — это инструмент командной строки, с помощью которого можно копировать файлы на устройство и обратно, устанавливать и удалять приложения, выполнять резервное копирование и восстановление на всех устройствах на базе Android, в том числе и на виртуальном. Он идет в комплекте с Android Studio и, по большей части, вам не придется его использовать. Но в редких случаях вам все же придется им воспользоваться. Для этого перейдите в папку, где находится файл adb.exe и откройте командную строку (Shift + RMB>Открыть окно команд).
Unity 3D — первый инструмент в нашем списке, который не предустановлен в Android Studio. Unity 3D представляет из себя игровой движок и IDE для кроссплатформенной разработки игр. Он очень прост в изучении и обладает большим набором функций для разработки игр. С помощью Android Studio можно создать игру, но в Unity то же самое можно сделать гораздо легче, без уймы потерянного времени и головной боли. Кстати говоря, в Unity есть возможность создавать приложения с дополненной реальностью для Daydream, Cardboard или Gear VR!
Unreal Engine — это игровой движок и альтернативный вариант для тех, кто интересуется кроссплатформенной и полнофункциональной разработкой игр. Unreal, также как и Unity, поддерживает разработку под Android, но, в плане графики, игры на Unreal сильно превосходят игры на Unity. Тем не менее Unity имеет лучшую встроенную поддержку мобильных и 2D-творений, поэтому является предпочтительным вариантом для большинства мобильных разработчиков игр. Не имеет значения, какой в итоге вы выберете движок, так как нет причин, по которым вы не можете дать им обоим шанс.
GameMaker: Studio — еще один инструмент для разработки игр, на этот раз для 2D-игр. Он гораздо проще в использовании, чем Unity или Unreal, и позволяет создавать игры, практически без написания кода. Однако, если хотите добавить немного больше настроек в свою игру, вы можете воспользоваться встроенным языком программирования для начинающих — GML или «GameMaker Language».
Однако из-за простоты использования вы, в какой-то степени, теряете мощность и функциональность. Также стоит отметить, что GameMaker: Studio не является бесплатным ПО, но есть бесплатная пробная версия.
B4A (или Basic for Android) — самый малоизвестный инструмент для разработки Android-приложений от компании Anywhere Software, специализирующейся на концепции быстрой разработки приложений(RAD). Как следует из названия, B4A — это IDE и интерпретатор, который позволяет разработчикам создавать приложения с использованием языка программирования BASIC. Для тех, кто не знаком с BASIC — это процедурный язык программирования, который читается практически как обычный английский язык. Несмотря на то, что B4A — это проект, разработанный всего одним человеком, ему удалось соединить в себе множество полезных расширенных функций, таких как: беспроводная отладка через Bluetooth, визуальный редактор для добавления и упорядочивания представлений и т.п. Данное ПО не бесплатно.
С помощью B4A вы можете делать практически все то же самое, что вы делаете при помощи Java, но гораздо быстрее и с меньшим количеством шаблонов. Любое понижение производительности, по сравнению с другими IDE, минимально. Тем не менее, вам все еще стоит изучить официальный метод создания приложений, особенно если вы хотите использовать конкретные библиотеки (но стоит упомянуть, что библиотеки Java могут быть обернуты для Basic4Android).
Наверное вы уже успели заметить, что инструменты для разработки приложений под Android любят аббревиатуры. AIDE расшифровывается как “Android IDE” и он уникален тем, что работает на самом Android. Это означает, что вы можете создавать приложения, используя свой телефон или планшет, а затем тестировать их на этом же устройстве.
Скорее всего вы уже поняли, что данному IDE не хватает некоторых функций из Android Studio (окей, очень многих функций) и у него нет никакого реального преимущества перед более функциональными IDE для разработки под Android. Он пригоден только для изучения Java и Android SDK, так как предоставляет возможность читать учебник по программированию и, в тот же самый момент, проверять оттуда код в режиме реального времени. Это настоящая находка для тех, кто только-только начал разрабатывать собственные мобильные проекты. AIDE не бесплатен и, независимо от того, хорошее о нем общественное мнение или нет — его стоит купить и попробовать самостоятельно.
До появления Android Studio, в качестве основного инструмента для разработки Android-приложений, разработчики использовали Eclipse. Этот IDE поддерживает несколько различных языков программирования, в том числе и Java с Android SDK. В отличие от Android Studio, Eclipse не предлагает встроенную поддержку и требует более тщательной настройки. На данный момент Google отключила официальную поддержку, поэтому, на самом деле, нет никаких оснований использовать Eclipse, вместо Android Studio. Я включил его в этот список, так как он может быть полезен тем, кто интересуется историей IDE и учится создавать приложения для Android. Так сказать для того, чтобы расширить кругозор.
Помимо перечисленных выше инструментов, существует еще много вариантов, например, PhoneGap, Cordova или IntelliJ IDEA для создания простых приложений, или Andyroid и Blustacks, если вам нужна эмуляция Android без установки Android Studio и AVD Manager. Также разработчикам будет полезно освоить целый ряд других программ, помимо программ программирования. Например, вы можете использовать Photoshop или GiMP для редактирования изображений, а Illustrator для создания качественных векторных изображений. Может быть вам понравится идея создать макет дизайна приложения, сделав его интерактивным при помощи InVision, ну или можно по-старинке нарисовать его вручную. Возможно вы будете использовать Blender для создания 3D-моделей для ваших игр на Android или, возможно, вы будете использовать FL Studio 12 для написания музыки. Но мой вам совет — не делайте все в одиночку, а используйте сервисы для совместной работы с фрилансерами.
Для разработки приложений под Android подойдут многие программы, но подходящие именно вам будут зависеть от вашего стиля работы, предпочтений и целей. Надеюсь этот список дал вам хорошее представление о том, с чего начать свой путь.
Классификация по способу описания интерфейса
Нативные инструменты
Xamarin не только использует нативные компоненты интерфейса, но и описывает их в формате, принятом для каждой платформы.
Универсальные элементы интерфейса
Xamarin Forms и Appcelerator используют собственный набор виджетов, который преобразуется в подходящие компоненты интерфейса каждой платформы.
Разный интерфейс для разных платформ, но общий подход
React Native использует обёртки вокруг нативных компонентов интерфейса. Соответственно, интерфейс описывается для каждой платформы отдельно, но способ описания един.
Собственный UI, общий код
Этим подходом пользуются почти все игровые движки, но они находятся за рамками данной статьи.
Принцип данного подхода — приложение использует собственный код и собственную отрисовку пользовательского интерфейса.
Предназначение
Быстрое создание одноразовых приложений. При наличии существенного бюджета на разработку, гибридным подходом, как правило, брезгуют.
Предназначение
Приложения общего пользования, особенно с дизайнерским интерфейсом.
Читайте также: