2012-10-14

Разработка под мобильные платформы с использованием Haxe NME

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

В предыдущей статье мы рассматривали мобильную разработку с PhoneGap. Приложения, созданные с его помощью, работают на базе WebView. Теперь попробуем разобраться с другой технологией, использующей иной подход. Где, например, приложения под Android компилируются с помощью NDK.

Haxe и NME


Есть такой интересный язык программирования Haxe. Подход следующий: мы используем один язык программирования для написания программ на C++, ActionScript, PHP, JavaScript и других языках. Звучит странно, другими словами - используем один язык для получения программного кода на других языках с последующей компиляцией, при необходимости. На мой взгляд, очень удобно - не нужно изучать много разных языков, лучше совершенствоваться в одном.
NME - один из многочисленных фреймворков под Haxe. NME используется для создания как мобильных приложений под популярные платформы так и десктопных под Windows, Linux и Mac.

Практика (установка)

К сожалению, под Windows мне так и не удалось довести компиляцию Haxe-Android приложения до финального конца. Сначала NDK ругался, потом после некоторых ковыряний компиляция пошла, но возникла проблема со сборщиком Apache Ant, в итоге, опять же, после некоторых ковыряний, уже безуспешных, было решено сменить поле боя и перебазироваться в Linux.
Ура, в Ubuntu, все прошло гладко, без заминок!
Первым делом загружаем и устанавливаем NME. Дистрибутив включает в себя Haxe, hxcpp и все что нам понадобится для компиляции. Для финальной сборки проекта под Android нам понадобится еще несколько ресурсов. Их установка оказалась так же проста - пишем в консоли "nme setup android" и следуем инструкциям.
В результате мы получим установленные Android SDK, Android NDK, Apache Ant и JDK. Что-то из этого списка может быть уже установлено ранее, тогда нужно будет всего лишь указать путь. Установщик самостоятельно не загружает только JDK, а любезно открывает интернет-обозреватель со страницей загрузки JDK и смиренно ждет закрытия окна, чтобы продолжить. Я использовал JDK 6, так как пакет уже был у меня установлен. В Windows у меня JDK 7, может быть, это стало причиной неудач с Ant, а может что другое - не стал тратить время на выяснения.
UPD: Под Windows все таки удалось собрать. Из-за невнимательности не заметил, что путь до Android SDK в настройках NME был неправильно указан.

Практика (подготовка устройств)

Для тестирования на реальном устройстве необходимо включить в смартфоне режим отладки по USB и подключить к компьютеру. Здесь описано как "подружить" adb и наш девайс, не забудьте указать правильный VendorID вашего устройства и обязательно в конце нужно перезагрузить систему - простого перезапуска adb будет недостаточно. Чтобы проверить заработала ли отладка по USB, в консоли зайдем в папку с Android SDK и в ней в "platform-tools". Затем здесь выполним "./adb devices" - если в списке будет устройство, то все получилось, иначе придется либо разобраться что не так, либо использовать эмулятор.

Практика (использование)

После того как все подготовительные этапы пройдены, все загружено, установлено и настроено, можно "пощупать" готовые примеры с сайта NME или попробовать написать что-то свое на Haxe.
Для первого знакомства возьмем любой готовый пример проекта, в консоли перейдем в его корень и выполним команду для тестирования "nme test DemoProjectName.nmml android". Здесь "test" - означает, что будет собрано приложение и отправлено на устройство или можно другой командой просто собрать финальное решение для самостоятельной загрузки. Список команд можно посмотреть набрав "nme help".
В результате длительной компиляции на смартфон устанавливается приложение и запускается.
На этом все - с установкой и первым запуском разобрались, далее можно еще с другими примерами поиграться.