Разработка кросс-платформы iOS/Android

Я некоторое время занимаюсь разработкой приложений для Android в Java, и теперь я начинаю разбираться. Однако, если я хочу начать с версии iOS, мне нужно закодировать все с нуля - что нежелательно.

Мне было интересно, какие кросс-платформенные решения доступны и насколько хорошо они работают на практике. Я думал о веб-приложениях - возможно, используя jQuery Mobile или Titanium или Adobe Flash/Flex/Air. У меня еще нет Mac, и мне, вероятно, придется инвестировать.

Итак, мои вопросы:

  • Какие межплатформенные среды разработки существуют для iOS/Android (и/или других устройств)?

  • Каков ваш опыт работы с этими инструментами? (это то, что я действительно хочу знать)

Ответы

Ответ 1

Отказ от ответственности: я работаю в компании, Particle Code, которая создает межплатформенную структуру. В этом пространстве есть масса компаний. Новые кажутся spring каждую неделю. Хорошие новости для вас: у вас есть много вариантов.

Эти рамки используют разные подходы, и многие из них принципиально разработаны для решения различных проблем. Некоторые из них ориентированы на игры, некоторые из них ориентированы на приложения. Я задал бы следующие вопросы:

Что вы хотите написать? Приложение для предприятий, личное приложение для повышения производительности, игра-головоломка, шутер от первого лица?

Какую среду разработки вы предпочитаете? IDE или простой текстовый редактор?

У вас есть сильные чувства относительно языков программирования? Из фреймворков, с которыми я знаком, вы можете выбирать из ActionScript, С++, С#, Java, Lua и Ruby.

Моя компания больше в игровом пространстве, поэтому я не играл столько с фреймворками JavaScript + CSS, как Titanium, PhoneGap и Sencha. Но я могу немного рассказать о некоторых из ориентированных на игры фреймворков. Игры и богатые интернет-приложения - это область, где могут развиваться кросс-платформенные среды, потому что эти приложения имеют тенденцию придавать большее значение визуальному единству и меньшему смешению с родными пользовательскими интерфейсами. Вот несколько рамок для поиска:

  • Unity www.unity3d.com - это движок 3D-игр. Это действительно не похоже на любую другую среду разработки, в которой я работал. Вы создаете сцены с 3D-моделями и определяете поведение, добавляя сценарии к объектам. Вы можете script в JavaScript, С# или Boo. Если вы хотите написать 3D-физическую игру, которая будет работать на iOS, Android, Windows, OS X или консолях, это, вероятно, инструмент для вас. Вы также можете писать 2D-игры с использованием 3D-активов - прекрасным примером этого является инди-игра Max и Magic Marker, основанная на 2D физике -скроллер, написанный в Unity. Если вы этого не знаете, я рекомендую проверить его (особенно, если в вашем доме есть дети). Макс доступен для ПК, Wii, iOS и Windows Phone 7 (хотя последняя версия представляет собой порт, поскольку Unity не поддерживает WinPhone). Unity поставляется с некоторыми образцовыми играми в комплекте с 3D-активами и текстурами, что действительно помогает ускорить работу с тем, что может быть довольно сложной средой.

  • Corona www.anscamobile.com/corona - это движок 2D-игр, который использует язык сценариев Lua и поддерживает iOS и Android. Торговой точкой Corona является способность писать игры на основе физики очень быстро в нескольких строках кода, а большое количество игр на базе Corona в магазине приложений iOS является свидетельством его успеха. Окружающая среда очень скудная, которая понравится некоторым людям. Он поставляется с симулятором и отладчиком. Вы добавляете свой текстовый редактор по своему выбору, и у вас есть среда разработки. Базовый SDK не содержит компонентов интерфейса, таких как кнопки или списки, но для подписчиков доступно дополнение CoronaUI.

  • Particle SDK www.particlecode.com - это немного более общее кросс-платформенное решение с фоном в играх. Вы можете писать в Java или ActionScript, используя модель приложения MVC. Он включает интегрированную среду Eclipse с редактором UYSIWYG UI. В настоящее время мы поддерживаем создание устройств для Android, iOS, WebOS и Windows Phone 7. Вы также можете вывести Flash или HTML5 для Интернета. Структура была первоначально разработана для онлайновых многопользовательских социальных игр, таких как покер и нарды, и подходит для 2D-игр и приложений со сложной логикой. Структура поддерживает 2D-графику и включает в себя 2D-физический движок.

Примечание:

Сегодня мы объявили, что Particle Code был приобретен Appcelerator, создателем кроссплатформенной платформы Titanium.Суб >

<суб > ...суб >

По состоянию на 1 января 2012 г. [Код элемента] больше не будет официально поддерживать платформу [Particle SDK].Суб >

Источник

  • Airplay SDK www.madewithmarmalade.com - это среда С++, которая позволяет вам разрабатывать Visual Studio или Xcode. Он поддерживает как 2D, так и 3D-графики. Airplay нацелен на iOS, Android, Bada, Symbian, webOS и Windows Mobile 6. У них также есть надстройка для создания приложений AirPlay для PSP. Мой С++ был очень ржавым, я не играл с ним много, но он выглядит круто.

С точки зрения кривой обучения, я бы сказал, что у Unity была самая крутая кривая обучения (для меня), Corona была самой простой, а Particle and Airplay где-то посередине.

Еще один интересный момент заключается в том, как структуры обрабатывают различные форм-факторы. Corona поддерживает динамическое масштабирование, которое будет знакомо разработчикам Flash. Это очень легко использовать, но означает, что в конечном итоге вы теряете пространство экрана при переходе с экрана 4: 3, такого как iPhone, на 16: 9, как и на новые устройства Android с QHD. Редактор пользовательского интерфейса SDK Particle позволяет создавать гибкие макеты, которые масштабируются, а также позволяет настраивать макеты для отдельных размеров экрана. Это занимает немного больше времени, но позволяет сделать приложение удобным для каждого экрана.

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

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

Надеюсь, что это поможет.

Ответ 2

MonoTouch и MonoDroid, но что будет с этой частью Attachmate, теперь никто не догадывается. Конечно, даже с моно решениями вы по-прежнему создаете неперекрестные взгляды на платформу, но идея заключается в повторном использовании бизнес-логики.

Следите за http://www.xamarin.com/, будет интересно посмотреть, что они придумали.

Ответ 3

Мой опыт создания чего-то очень простого в PhoneGap + jQuery Mobile был прекрасен. Я смог сделать это быстро для iOS. Тем не менее, он не работал на моих телефонах Android без внесения каких-либо изменений. Проект был очень простым приложением, чтобы делать снимки и размещать их на веб-сайте. И в конце дня он почувствовал себя "неуклюжим" по сравнению с настоящим родным приложением.

Я не верю, что когда-либо будет легко развиваться кросс-платформа. Я думаю, что браузер так же близок, как и вы. Выбрав что-то вроде PhoneGap, я думаю, что вы просто торгуете одним набором болей для другого набора точек боли.

Ответ 4

Если вы не хотите использовать полнофункциональную инфраструктуру для кросс-платформенной разработки, взгляните на С++ в качестве опции. iOS полностью поддерживает использование С++ для вашей логики приложения через Objective-C ++. Я не знаю, насколько хорошо поддержка Android для С++ через NDK подходит для выполнения вашей бизнес-логики на С++, а не только для некоторых критических фрагментов кода, но в случае, если этот случай хорошо поддерживается, вы можете попробовать.

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

На самом деле С++ является единственным наиболее широко используемым языком программирования (за исключением C) и поэтому является основным языком большинства крупных кросс-платформенных приложений.

Ответ 5

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

например, PhoneGap просто хранит код HTML/CSS/JS, который вы пишете, и обертывает его достаточным кодом iOS, чтобы квалифицироваться как приложение, тогда как Appcelerator предоставляет вам проект XCode... так что если вы не знакомы с iOS, то это не принесет вам никакой пользы по сравнению с PhoneGap, но если вы немного знаете, это может дать вам немного больше возможностей для настройки собственных версий после больших усилий по кодированию.

Я сам не использовал appcelerator, но пару недель назад работал над проектом, когда один из наших членов команды сделал приложение для iPad всего за 24 часа.

И да, чтобы на самом деле представить яблоко, вам нужно будет получить mac, но если это не ваша основная рабочая платформа, вы можете пойти дешево.

Ответ 6

Cappuccino или PhoneGap.

Иногда, хотя попытка найти ярлык не экономит ваше время или дает вам сопоставимый конечный продукт.

Ответ 7

Если вы когда-либо использовали LUA, вы можете попробовать Corona SDK может создавать приложения, которые запускаются на IOS и Android

http://developer.anscamobile.com/

Я загрузил его и испортил некоторые из них, я считаю, что LUA очень прост в освоении языка сценариев без привычек/ограничений языка сценариев....

Ответ 8

Там также MoSync Mobile SDK

GPL и коммерческое лицензирование. Там есть хороший обзор их подхода здесь.

Ответ 9

Существует также BatteryTech, который мы использовали последние 18 месяцев и выпустили несколько игр. http://www.batterypoweredgames.com/batterytech

Поддержка всех С++, Android и iOS, все пользователи получают полный исходный код. Новый v2 включает привязки lua.