Разработка кросс-платформенного мобильного приложения

Все новые и новые мобильные платформы запускаются, и sdk доступны разработчикам. Существуют различные мобильные платформы: Android, iOS, Moblin, Windows Mobile 7, RIM, symbian, bada, maemo и т.д.

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

Или есть возможности, написав код в html (тип виджетов) и загрузив его в собственное приложение. Я знаю об андроиде, в котором мы можем добавить веб-представление в приложение, вызвав setContentView(view)

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

Цель этой темы - делиться общими деталями между разработчиками. обозначение как вики сообщества.

Инструменты и библиотека кросс-платформы

Ответ 1

Мой ответ здесь охватывает некоторые технические ограничения инструментов cross-platfrom, но позвольте мне немного расширить:

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

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

Какой инструмент с поперечной платой НЕ продается на преимущество, которое они приносят конечным пользователям.

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

И наоборот, неизбежные компромиссы создания кросс-платформенного API означают, что все приложения, созданные API, будут в лучшем случае B-grade на каждой платформе. Они никогда не будут лучшим инструментом для использования на каждой платформе.

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

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

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

Ответ 2

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

Повторное использование кода

Хотя все мобильные ОС не используют один и тот же язык разработки и API, вы иногда можете использовать некоторые классы или код логического уровня.

Например, С++, вероятно, может быть повторно использован для приложения iOS для приложения Android с помощью NDK, для Symbian-приложения, так как они разработаны на С++ и т.д.

Некоторые решения также предлагают возможность писать приложение на другом языке, чем тот, который обычно используется устройством. Наиболее известные (на самом деле единственные, кого я знаю) являются коммерческими и основаны на Mono project (разработка С#):

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

  • Windows Phone 7 не разрешит разработку собственного кода (возможно, в последующих обновлениях).
  • Моноподобный проект AFAIK не существует для всех платформ (еще?) bada, webOS, maemo и т.д.

И часть пользовательского интерфейса также зависит от каждого устройства.

Веб-разработка

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

Повышение HTML5 приводит к функциональности веб-разработки, которые могут быть выполнены только с помощью собственного приложения, такого как геолокация, автономное приложение, локальное хранилище.

Мы можем найти все больше и больше фреймворков для разработки веб-приложений для мобильных телефонов с естественным внешним видом, используя последние веб-стандарты HTML5, CSS3, Js:

Но HTML5 все еще очень молод, и реализация может отличаться от браузера к другому. Большинство мобильных браузеров по умолчанию используют движок WebKit (основное исключение - Windows mobile/phone с использованием Internet Explorer), и даже поэтому они не обязательно поддерживают те же функциональные возможности. Локальная база данных по-прежнему неудобна для работы, и мы не можем быть уверены, как она будет реализована различными браузерами. Более того, даже с HTML5 веб-разработка по-прежнему очень ограничена по сравнению с родным приложением. Вы не можете получить доступ к контактам, камере, акселерометру и т.д.

Изменить: в начале этого месяца W3C предоставил некоторые предупреждения об эволюции HTML5: Статья из ZDNet

Таким образом, он подходит только для ограниченной категории приложений.

Межплатформенные рамки

И чем у нас кросс-платформенные платформы мобильных приложений. С чем вы, вероятно, можете развить один раз и развернуть на разных платформах. Эти решения обычно фокусируются на iOS и Android и полагаются на движок WebKit. Они предлагают больше взаимодействия с функциями телефона при разработке с использованием веб-технологий. Наиболее известными являются Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium. Но многие другие там, и не все используют тот же метод, что и MoSync, который переводит ваш код на свой собственный промежуточный язык, прежде чем компилировать его для желаемой платформы.

[1] Помните, что Apple имеет специальную политику о приложениях, написанных для своей платформы. Кажется, что они не блокируют эти приложения в эту дату, но это информация, которая должна быть принята во внимание. Изменить: Apple изменила эту политику с 9 сентября.

Ответ 3

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

HTML5 может немного улучшить ситуацию, но делать интересные вещи, которые вам нужны, чтобы начать работать.

Есть "кросс-платформенные" фреймворки для смартфонов, такие как Phonegap, но я слышал в основном плохие вещи об использовании его для "реальной" работы. (много накладных расходов и т.д.)

Ответ 4

Да, html5 получает некоторое внимание. Вы также должны посмотреть на этот консорциум и платформу, чтобы прийти в четвертом квартале. Не уверен в успехе этого проекта, поскольку это звучит как огромная проблема, но вот подробности:

Веб-сайт: http://www.wholesaleappcommunity.com/default.aspx

Новости: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=%22Wholesale+Applications+Community%22

WAC стремится опубликовать свой первоначальный спецификации и компонентов ее SDK для разработчиков в ноябре. Эта спецификация будет основана на W3C стандартов и создать прочную платформу для разработки богатой мобильной сети Приложения. WAC также предоставит обратная совместимость устройств на основе существующих JIL и BONDI технические характеристики. (http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021)

.

Это международная коалиция из 25 телекоммуникационных компаний, которая стремится создать платформу для всех разработчиков и продавать всем пользователям мобильных телефонов. (http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/)