iOS / Android кроссплатформенная разработка

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

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

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

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

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

9 ответов

Решение

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

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

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

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

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

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

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

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

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

NB:

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

...

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

например, PhoneGap просто сохраняет код HTML/CSS/JS, который вы пишете, и упаковывает его в достаточный код iOS, чтобы квалифицировать его как приложение, тогда как Appcelerator предоставляет вам проект XCode... так что, если вы не знакомы с iOS, тогда это на самом деле не принесет вам никакой пользы по сравнению с PhoneGap, но если вы ДЕЙСТВИТЕЛЬНО знаете, это может дать вам чуть больше возможностей для настройки нативных версий после больших усилий по написанию кода.

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

И да, для того, чтобы по-настоящему подчиниться apple, вам понадобится Mac, но если это не ваша основная рабочая платформа, вы можете пойти дешево.

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

http://developer.anscamobile.com/

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

Также есть MoSync Mobile SDK

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

Капучино или PhoneGap.

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

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

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

Другие вопросы по тегам