2013-04-12 3 views
5

Я разработчик .NET (более 6 лет) и только начинаю изучать разработку мобильных/смартфонов/планшетов. Логично, что я (и, вероятно, все остальные там) хотел бы, чтобы приложение, которое мы создаем, запускалось на всех платформах смартфонов. С точки зрения обычного пользователя (непрофессионала) просто кажется естественным, что если это «мобильное приложение», оно должно работать на мобильном устройстве. Не имеет значения, есть ли у меня iPhone или Android, мобильное приложение - мобильное приложение. Примечание. Я говорю о разработке собственной платформы, а не о HTML/веб-приложениях, которые можно использовать в браузерах.Как развивается кроссплатформенная мобильная разработка на практике (2013 год)?

Так что это всего лишь обзорный вопрос высокого уровня ... каковы текущие стратегии (в 2013 году) для решения этой проблемы? Как я полагаю, мобильные разработки кросс-платформенной разработки - это, вероятно, одна общая база кода, которая реализует бизнес-логику приложения, а затем для каждой платформы таргетинга нам нужно разработать часть GUI отдельно. Насколько это справедливо на практике?

Возьмем, к примеру, популярную игру «Angry Birds». Я играл на iPhone, Android и даже из браузера Chrome на рабочем столе Windows (возможно, в качестве игры Flash или HTML5), и каждая версия имела очень много одинаковых ощущений при воспроизведении. Как они это сделали? Я думаю, у них есть игровой движок как общий код, но на каком языке он может быть написан? Насколько я знаю, нет единого языка программирования, который с учетом отдельных файлов исходного кода может быть скомпилирован в родные двоичные файлы для телефонов ios/android/win8.

ответ

6

К сожалению, не существует способа разработать кросс-платформенное приложение, которое имеет действительно собственный внешний вид и имеет одинаковый код для всех платформ. Его можно разделить на некоторых платформах на некоторых платформах (например, вы можете использовать C/C++ для iOS и Android), но только для логической части вашего приложения. Чтобы получить собственный пользовательский интерфейс, вы будете вынуждены использовать собственные API. Если ваше приложение не связано с какой-либо сложной обработкой данных, то этот подход может иметь больше недостатков, чем действительно помогает вам.

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

+0

Согласитесь с вышесказанным. Я думаю, что PhoneGap имеет больше смысла в первые дни разработки iOS, когда не было много людей за пределами Apple, которые хорошо разбирались в Objective C, но многие люди, которые знали веб-технологии. Теперь Obj-C является одним из 10 лучших языков программирования, и есть много талантливых разработчиков. Я исследовал его использование, чтобы расширить свои возможности в Android, но пришел к выводу, что имеет смысл либо узнать, что SDK, либо субподряд. –

+0

Я не буду списывать PhoneGap из-за перечисленных причин. Во всей реальности большинство изменений в пользовательском интерфейсе можно было бы использовать, просто используя другой файл CSS для каждого устройства, или вы всегда можете быть менее озабочены поиском 100% родных. Кнопки будут выглядеть как кнопка по умолчанию, которая появляется в браузере ... как и другие элементы. Обе опции, перечисленные в моем ответе, могут быть легко адаптированы к любой платформе, поддерживаемой изменением только слоев пользовательского интерфейса (CSS для телефонного разговора и проекта пользовательского интерфейса для Xamarin). Моя причина пропустить телефонную трубку будет производительностью ... не внешностью. – Jared

+0

Я не сказал, что им следует избегать PhoneGap или тому подобное. На самом деле это может быть отличным решением для быстрого развертывания приложения для всех основных платформ, а затем (при необходимости) переход на собственный интерфейс пользователя шаг за шагом. Пункт моего ответа состоял в том, что нет серебряной пули. Есть несколько способов пойти, но у всех есть свои недостатки. – Const

3

Поскольку вы являетесь разработчиком .NET Dev, вам было бы полезно использовать предложения Xamarin. (http://xamarin.com/) Они позволяют вам развить логическую логику один раз, а затем скомпилировать ее на все три основные мобильные платформы (iPhone/Android/WP). Затем вы можете использовать этот логический проект для создания пользовательского интерфейса для каждой конкретной платформы.

Другой вариант, который есть у разработчиков: использовать маршрут javascript/html, похожий на PhoneGap. Хотя я не смотрел на это недавно, при переходе на JS/HTML-маршрут обычно возникали некоторые хиты производительности и недостатки использования аппаратного обеспечения. Теперь это может быть улучшено.

EDIT: Поскольку вы специально упомянули такие игры, как Angry Birds. Платформа Unity предлагает очень хорошую поддержку для разработки, которая совместима с большинством устройств, если вам нужен 3D.

Для Angry Birds специально ... они используют Box2D для физики, и я не 100%, но это выглядит как Cocos2d для рисования элементов.

Если вы хотите построить игры и, как идея Xamarin, посмотрите на MonoGame, который в основном выглядит как XNA-порт для Mono Framework.

2

В дополнение к ответу Джареда, сегодня днем ​​я проверил Xamarin.

Вы являетесь a.Net Developer, и если вы уже используете Visual Studio, вам так повезло. Потому что у Xamarin есть extension for Visual Studio

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

+0

На самом деле на всех платформах есть бесплатные визуальные редакторы для пользовательского интерфейса. Возможно, вам понадобится настроить XML, но нет единой платформы (поддержка Xamarin), которая НЕОБХОДИМА, чтобы вы касались XML. Windows Phone = Expression Blend (Expression уходит в какой-то момент)/Android имеет несколько вариантов, но один из них - DroidDraw/iPhone, это часть XCode? (не помните точное имя, но вы загружаете его как часть лицензии iOS/dev kit) – Jared

+1

Я думаю, что здесь есть недоразумение. Я просто хотел сказать, что это плюс для Xamarin, у которого есть Visual Studio. Затем, если вы проверяете страницу источника компонента, есть синтаксис на основе xml, и я не получил доступ к автозавершению. Я не говорю о отдельном файле xml. –

Смежные вопросы