«

»

Jan 27

Кросс-платформенная мобильная разработка – краткий тулзуарий

IOs, Android, Bada, WindowsPhone, Blackberry … число здравствующих (и упрямо подающих признаки жизни) мобильных платформ переваливает за все рамки разумного, а разработчики с трудом подавляют стенания, заслышав бодрые воззвания менеджмента о поддержке очередной платформы…

Я думаю, у каждого человека связанного с разработкой, во время очередного умственного затмения, вызванного прогрессирующим дедлайном, возникала такая банальная мысль – ну почему, черт возьми, нельзя делать 1 (один) проект, который неким магическим образом берет и деплойится на все платформы, в нативном, предсказуемом виде, на основе единой базы кода – одного единственного проекта. Есть несколько фреймворков, которые декларируют такие возможности.

По факту в них используются три подхода – генерация интерфейсов на основе javascript/html5, на си-подобных языках а то и смешивая и то и другое. Устройство-зависимые вещи, в некоторых случаях, запихиваются всем скопом в единый пакет (AppCelerator в этом плане сильно расстраивает, хотя разработчики и клянутся, что прилагают не мыслимые усилия по оптимизации результирующих приложений) или же на моменте компиляции происходит мучительный выбор конкретной платформы и устройства, под которое должен быть собран пакет (MoSync поразил нескончаемым списком чекбоксов, сортированным по брендам и моделям телефонов). Приверженность к универсальности – накладывает ограничения на доступный функционал и производительность – просто потому, что на разных платформах разный набор стандартных контролов, и разный взгляд на оптимальный UX. Словом, не все так радужно как бы хотелось, однако проекты эти развиваются, горделивые разделы Partners на их сайтах пестрят звучными именами, а потому не будем окончательно отбрасывать эту утопическую идею – в конечном счете все зависит от целей и рамок проекта.

Ниже результаты экспериментов лета 2011 года, когда для реализации проекта выбиралось средство. Критерии были нехитрыми – единая база кода, кроссплатформенность (было достаточно iOs, Android), возможность создания собственных элементов GUI, связь с web-сервисами. Средства, которым можно решать задачи, не отвлекаясь на укрощение самого инструмента, я на тот момент не нашел (рассматривались phonegap, mosync, marmalade и appcelerator).

http://www.appcelerator.com – изначально позиционировалась как среда разработки на javascript на основе собственного фреймворка в специально-подготовленной для мобильной разработки сборки eclipse. В настоящее время добавлена поддержка HTML5, CSS3, критичные участки кода можно писать на “родных” для целевой платформы языках – Java или Objective-C. Приятное Ide. Для того чтобы писать под iOs нужна Mac ось. Базовая версия – бесплатна, однако по заверениям распространителей вся мощь данной платформы для разработки заключается в использовании дополнительных платных расширений (50 долларов в месяц). Летом 2011 была очень сырой.

http://phonegap.com/ – одни из первых решили плюнуть на нативный “look and feel” и обратиться к универсальному везде и всюду средству – web-интерфейсам. В связи с этим основной язык разработки – html, можно использовать javascript, jquery, css. Основные платформы потенциально поддерживаются все (iOs, Android, WebOs, Bada, Windows Phone, Symbian), на практике – для безболезненной разработки под iOs опять же необходима рабочая станция с Mac, для каждой платформы надлежит выкачивать sdk. Поддерживают ряд дополнительных библиотек для создания приложений, особо хочу выделить Sensha Touch. Процесс сборки финальных пакетов достаточно интересный – вы подготавливаете код проекта, загружаете его на специальный сервис – https://build.phonegap.com/ и получаете взамен пакет готовый для установки на целевую платформу. Список поддерживаемых возможностей – http://phonegap.com/about/features. Цена для open source проектов – бесплатна, в силу того что статус билд-сервисов по прежнему бета – с других разработчиков деньги не берут, но с релизом ситуация может измениться. Поддержка возможностей устройств расстроила.

http://www.mosync.com/ – основной язык – C++, можно использовать JavaScript и html5. Среда разработки – специально подготовленная сборка Eclipse, на сайте описываются варианты интеграции в Visual Studio. Blackberry и Windows Phone 7 не поддерживается, под все остальное можно смело писать  Android iOs, Windows Mobile, Symbian, JavaME. Под iOs на Windows писать нельзя – требуется непременно Mac Os. Есть подробное описание статуса поддержки платформо-зависимых элементов – http://www.mosync.com/documentation/manualpages/featureplatform-matrix. Если пишете что-то под GPL – mosync sdk можно использовать бесплатно, иначе лицензия стоит от 200 евро.

http://www.madewithmarmalade.com/ – основной язык – c++ (Код пишется в Visual Studio или Xcode). Видел упоминания о возможности использовать вставки на нативных для целевой платформы  языках. Для написания по под iOs можно обойтись ПК с Windows. Симулятор устройств свой. Слышал жалобы на завидную прожорливость в плане ресурсов и объем получающихся бинарников. Лицензия – 500 долларов.

http://xamarin.com/monotouch и http://xamarin.com/monoforandroid. Любопытнейший проект ведут создатели свободной версии Sharp – Mono, предлагая всем желающим коммерческие версии библиотек для разработки на C Sharp под Windows Phone, Android и iOs. При необходимости можно прибегать к c++, objective-c и работать с готовыми библиотеками специфичными для обоих платформа. Модуль для каждой платформы стоит 400 долларов. Разработка ведется в MonoDevelop IDE.

Embarcadero RAD Studio (современная реинкарнация дельфи и с++ билдера). Хоть специализируется и не на мобильной разработке, но, в том числе, предоставляет достаточно многообещающие средства для создания приложений по iOs-based устройства на основе Fire Monkey. Декларируется грядущая поддержка Android и Blackberry устройств. Цена для одинокого разработчика пока дороговата (более 3500 долларов), редакции только для мобильной разработки нет, и пока поддержки дополнительных мобильных операционных систем нет – рассматривать ее не стоит. Но поглядывать в какую сторону развивается – имеет смысл.

Зы если еще есть какие-то тулзы для подобных целей, было бы интересно почитать про ваш опыт. Как успешный так и нет.

2 comments

  1. gkawlakj

    I just stumbled upon your weblog and wanted to say that I have truly enjoyed surfing around your blog posts. In any case I’ll be subscribing to your rss feed and I hope you write again very soon!

    1. Nayara

      A really good anewsr, full of rationality!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>