Внимание! На момент эта статья уже не актуальна для тех, кто хочет просто установить стабильную версию и начать ей пользоваться. Сейчас всё гораздо проще.
Эта инфа теперь может пригодиться тем, кто хочет устанавливать и собирать версию из СВН или тем, кто хочет чуть глубже разобраться от каких мучений их избавил install-tool который сейчас входит в NME.
Публикую плоды своих изысканий и тестов настройки среды для создания кросс-платформенных проектов на haXe, позволяющих собирать из одного кода приложения для Android, iOS, webOS и конечно стандартных для haXe flash, c++ ...
Основано в основном на статьях с http://gamehaxe.com и на собственном опыте. На момент поставил такую среду на двух машинах и успешно собираю приложения для Android. В iOS тоже собираю, но с ним не всё так гладко пока.
В общем делюсь тем, с чем успел разобраться сам. Итак поехали:
в консоли:
эти первые два шага идентичны и для установки на Mac и на Linux (на Mac нужно еще запустить @haxelib setup@ перед установкой либ)
дальше то, что связано с компиляций C++ нужно смотреть для каждой отдельной платформы
Update: Всё! Новые версии NME и HXCPP вышли на haxelib. так что остальную часть этого раздела можно уже не читать, а переходить сразу к настройке и сборке проекта.
сейчас уже можно собирать flash, js и cpp версии, но для мобильной разработки текущие стабильные версии nme и hxcpp в haxelib устарели.
после того, как там появятся новые стабильные версии nme и hxcpp, на этом всё закончится, но пока нужны версии с SVN, поэтому продолжаем:
hxcpp: http://code.google.com/p/hxcpp/source/checkout, nme: http://code.google.com/p/nekonme/source/checkout
еще для сборки nme нам понадобятся статические библиотеки: sdl-statiс: http://code.google.com/p/sdl-static/source/checkout их также просто чекаутим в папку sdl-static (название в ее случае важно).
в результате получаем в папке с:/SVN три лежащие +рядом+ папки: *hxcpp*, *nme*, *sdl-static* c последними версиями этих библиотек
Эта огромная хрень нужна только для *nme* и ради одной маленькой либы dxguid.lib. Автор nme собирался ее добавить, тогда ставить DirectX будет не нужно, но пока вот так
* Установку доков и сэмплов/исходников в диалоге установки можно отключить, они нам не нужны)
Настройка системы
для сборки Android проектов
примерно так (подставьте свои пути, куда установили):
для сборки iOS проектов
Нужны только собственно Mac OS X и установленный на ней xcode. Больше ничего вроде бы не надо.
Сборка проекта
С использованием gm2d
библиотека gm2d использует installTool встроенный в nme
для сборки для каждой платформы достаточно зайти в папку проекта и ввести одну из следующих строк в консоль:
Для сборки xcode-проекта для iOS строка немного меняется и выглядит нам момент таким образом:
сборку под iphonesim нужно обязательно делать под OS X, все остальное можно собирать и под Windows
Комментарии
NMETemplate Android
А кто-нибудь собирал и запускал проект от Граника NMETemplate под андройдом? У меня проект собирается, устанавливается и даже запускается, но после первого же кадра вылетает с ошибкой. Попробовал на всех версиях эмулятора :( И даже на реальном устройстве... вылетает. Написал к ним на форум - не отвечают :(
RE: NMETemplate Android
у меня на Acer Liquid E без проблем запустился и не вылетает. только там белый экран. это же template.
с эмулятором могут быть траблы из-за того что в нем не работает OpenGL, а nme его вроде бы по умолчанию использует. во всяком случае у меня один из тестов на эмуляторе не работал, а на девайсе работал отлично. правда при запуске в эмуляторе в logcat были видны вполне внятные ошибки из-за отсутствия OpenGL.
а вообще я быстро перестал пользоваться эмулятором и тестирую сейчас только на девайсе. и гораздо быстрее и реалистичнее. с haxe-nme особенно удобно, т.к. install tool сразу и собирает и ставит/запускает приложение и дальше в той же консоли показывает logcat. т.е. при включенном режиме отладки на девайсе и установленных USB-драйверах в компе одна команда в консоли даёт всё - и собранный проект и запущенное приложение на девайсе.
RE
Эх:( почему же мне так не везёт:( И планшет то неплох по характеристикам, и вроде прошивку допилили, и даже 3д игры многие идут... а тут ну никак...
Создал темку тут: http://haxe.ru/node/368
Опыт
Давай пробовать вместе. Запость тему на форуме, приатач apk и будем смотреть. Я смотрю народ оживился, многим будет интересно
Re: Опыт
Да, было бы интересно :) запостю вечером
жить стало проще
Всё, дождались: Релиз NME 3.0 и HXCPP 2.08 на haxelib
Теперь из десяти пунктов установки достаточно сделать первые три.
Остальные оставлю на будущее, могут пригодиться тем, кто будет собирать из SVN свежие версии.
Отличные
Отличные новости!
Забыл про neko
Забыл добавить, что можно и так:
haxelib run nme test ProjectName.nmml neko
added
спасиб, добавил
меньше всего правда представляю кому и в каком случае эта цель может понадобиться. даже меньше чем WebOS ;)
на сервере еще могу представить зачем neko может понадобиться, а вот для графических приложений... есть опыт или мысли в этом плане?
шутка
Для увеличения длины списка поддерживаемых таргетов :) Аргумент?
neko довольно шустрая vm, так что вполне возможно, что чтобы написать какую нить внутреннюю тулу для офиса, она подойдет лучше всего, т.к. кроссплатформена.
Хэлп
Спасибо за туториал! Как раз разбираюсь с Haxe :)
При сборке флэш версии не возникло проблем, но при сборке CPP версии, все примеры, которые собираются через *.nmml конфиг вылетают с ошибкой, что они не являются приложениями WIN32 (у меня операционка Windows XP). Покопавшись в файлах экспорта хакса, нашёл исходное приложение в папке obj, которое как ни странно запускается... а из папки bin (который видимо запускает nme для теста) - не запускается :( Может кто встречался с таким?
решено
Проблема оказалась во встроенной в nme ReplaceVistaIcon.exe, которая заменяет иконку приложения, отключив замену всё заработало
есть такое
кстати да, есть такая проблема с cpp на Висте, проверил. на Win7 все в порядке
достали эти заголовки
Вопрос 1. Как отключил замену?
Предложени 2. Столкнулся с аналогичной проблемой, решил переименовыванием папки nme из 3,0,0 в просто 3 и поменял содержимое файла .current соответственно
Заголовок
1. Пришлось залезть в код install_tool из nme (install-tool/src/data/Icons.hx) и почти в самом конце закомментировать строку InstallTool.runCommand(".", InstallTool.nme + "\\ndll\\Windows\\ReplaceVistaIcon.exe", [ inExeName, name] );
Ну и как обычно:
cd install-tool
haxe InstallTool.hxml
2. Не понял
шапка
2. Я из FD запускал билд и он ругнулся мол нет файла такого и чтото там ".../nme/3," (запятая в конце строки)
Я полез в haxe/lib/nme/ Там фаил .current и папка 3,0,0. Я эту папку переименовал просто в 3, а фаил подредактировал в текстовом редакторе. И ошибка перестала быть. Надо таки баг репорт написать, чтобы отказались от запятых в путях или экранировали пути старательнее
native API
Спасибо за туториал.
Тема актуальная, продолжаю изучать ее применительно к Андроиду.
Возникает один вопрос - как из haXe + cpp + nme получить доступ к системному API.
Допустим к файловой системе наверное получится через cpp.FileSystem или cpp.io...
А как например с акселерометром быть?
native API: акселерометр тоже есть
Похоже с акселерометром проблем нет,
нашел в NME пакедж UI,
Acceleration.hx
Accelerometer.hx
Keyboard.hx
Multitouch.hx
MultitouchInputMode.hx
Однако вопрос с доступом к остальному API Android остается открытым.
могу
могу посоветовать ключевые слова - NME JNI, но что и как там работает - пока не в курсе
а можно пару
а можно пару слов о том, что оно умеет/не умеет из флеша?
если речь о NME,
если речь о NME, из того, что знаю, умеет маппить методы программного рисования graphics.drawLine в методы SDL, работу с BitmapData, с SVG, со звуком... А не умеет вроде бы получать программный доступ к объектам и анимации внутри swf (сам swf загрузить/запустить вроде бы можно, по крамере сэмпл такой в gm2d есть). Анимацию из flash вообще рекомендуется конвертировать в тайлы - и в плане производительности. Механизмы для работы с тайлами есть. Один из вариантов как раз во вчерашнем тьюториале от Граника: http://www.joshuagranick.com/blog/?p=493
попробовал, мне
попробовал, мне нравится
из выясненных смешных штук
nme - как я понял, не умеет использовать API 10 и 11 флеша на родной флешплатформе - мультитач и акселерометр надо врапать в #if cpp #end
родной андроидный флешплеер (который сегодня обновился до 11го) не умеет мультитач вообще - Multitouch.maxTouchPoints всегда 1
(для сравнения у nme всегда 2, мой телефон поддерживает 4)
update. NME можно
update. NME можно задать версию апи флеша в NMML файле (чтобы не было ошибок Accessing this field require flash version) так:
<set name="SWF_VERSION" value="10.1" />в документации почему-то нет
Добавь, что
Добавь, что после сборки nme стоит сделать из папки nme
cd install-tool
haxe InstallTool.hxml
спасибо,
спасибо, добавил
но вообще это по-моему делается для теста что все ок.
я после сборки на Windows-машине этого не делал и все заработало.
а вот на МакОси собирал по этому тьютору и сделал. но вообще и там это называется "Trying the new install-tool"
А вот я в
А вот я в воскресение пока не сделал этого, у меня не собирались проекты, вылитала ошибка везде :(
Отправить комментарий