Мобильное приложение - нацеливание на iPhone, WP7, Android и Blackberry - PullRequest
10 голосов
/ 23 марта 2011

Есть ли разумный способ разработки кроссплатформенного мобильного приложения?Мы хотим, чтобы они были родными приложениями на каждой платформе, а не обязательно какой-то веб-страницей.

В настоящее время мы думаем разбить ее на два языка:

  • C # backend (бизнес-логика)
  • -> Стандартное приложение C # для WP7
  • -> Приложение, построенное на MonoTouch для iPhone / iPad / и т. д.
  • Java-бэкэнд (бизнес-логика)
  • -> Стандартное Java-приложение для Android (версия C # для MonoDroid еще не готова)
  • -> Стандартное Java-приложение для Blackberry

Первоначально мы также могли разрабатывать на C #и использовать один из инструментов преобразования, чтобы преобразовать наш C # в Java в качестве отправной точки.

Есть ли другой подход?Наши навыки включают в себя, в основном, сильный опыт работы с C # .Net и небольшой опыт работы с Java.

На самом деле мы не хотим переходить на низкий уровень и использовать что-то вроде C / C ++ для выполнения своей работы.Обычно это простые LOB-приложения, которые взаимодействуют с каким-либо веб-сервисом.

Дополнительный вопрос: как это делают разработчики игр, такие как создатели Angry Birds?

ОБНОВЛЕНИЕ:

MonoDroid официально выпущен.Так что, похоже, вам нужно будет использовать только Java для BlackBerry.Мы рассматриваем возможность вообще не разрабатывать для BlackBerry, потому что разработка для других трех платформ была упрощена.Это определенно сопряжено с определенными затратами, поскольку MonoTouch и MonoDroid стоят 399 долларов, и вам также понадобится лицензия для Visual Studio (без учета стоимости магазина приложений и т. Д.).

Ответы [ 3 ]

3 голосов
/ 23 марта 2011

Нет хорошего простого ответа, который я знаю для всех мобильных платформ.Вы можете использовать такие среды разработки, как Appcelerator Titanium , которые осуществляют кросс-компиляцию с нативным кодом на различных платформах (сейчас, например, я думаю, что Titanium поддерживает iOS и Android, а также планирует Blackberry).Тем не менее, они обычно имеют ограниченный API, к которому у вас есть доступ, и вам все равно придется создавать разные интерфейсы для разных платформ (в моей коммерческой работе я никогда не использовал такую ​​платформу)

Выможет также спроектировать всю бизнес-логику в бэкэнде веб-сервисов, а затем просто написать «тонкий клиент» для каждой платформы.Это работает, но, конечно, требуется доступ к сети, когда конечный пользователь хочет использовать ваше приложение.(Обычно это будет там, но иногда может и не быть)

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

(Кстати, я считаю, что игры, подобные Angry Birds, написаны в основном на OpenGL, а затем загружаются в процессор OpenGL на каждой платформе. Но я могу ошибаться ...)

1 голос
/ 24 марта 2011

Это отличные ответы. Я согласен, разработка x-платформы все еще очень примитивна. Я хотел бы добавить 2 балла:

1) Вам не нужно писать свой бэкэнд на разных языках. Выберите один язык (в зависимости от вашего уровня комфорта, производительности и т. Д. Критериев), а затем подключитесь из приложений, специфичных для платформы, непосредственно к бэкэнду. Если ваш бэкэнд является серверным кодом, один из способов общения с ним будет через XmlHttpClient. Если это часть нативного кода, общего для разных приложений и написанная, например, на C ++, вы можете использовать JNI из Java и сборку оболочки из C #.

2) Другая причина, по которой следует избегать инструментов x-платформы, заключается в том, что вам всегда нужно ждать, пока они поддержат новые API, выпущенные поставщиком платформы (Apple, Google, MSFT и т. Д.). После того, как эти компании выпустят новые API, инструменты нужно будет обновить, и только тогда вы сможете использовать новые API.

0 голосов
/ 23 марта 2011

Я не думаю, что это (легко) возможно, если вы не используете какой-либо HTML5 (jquerymobile и т. Д.) В WebView в своем собственном приложении (выглядит как настоящее приложение, но все же вы каким-то образом увидите, что этонет) вместо обычного браузера.Вы все еще можете использовать некоторый собственный API с устройства (акселерометр, ...).

Существуют (коммерческие) платформы, такие как Sybase Unwired Platform , которые помогают вам создавать некоторый клиентский код.Afaik для Blackberry и Windows Mobile, даже некоторые бизнес-интерфейсы могут быть сгенерированы из бизнес-объектов на сервере.Но для меня это звучит слишком тяжело для вашего случая.

С уважением, Мартин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...