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

109

Запускается все больше и больше мобильных платформ, и разработчикам доступны SDK. Доступны различные мобильные платформы: Android, iOS, Moblin, Windows Mobile 7, RIM, symbian, bada, maemo и др.

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

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

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

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

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

  • XMLVM, Codename One и iSpectrum (кросс-компиляция кода Java из приложения Android или создание его с нуля

  • Phone Gap (кроссплатформенные мобильные приложения)

  • Titanium (для создания собственных мобильных и настольных приложений с использованием веб-технологий)

  • Mono Touch (C # для iphone)

  • rhomobile - http://rhomobile.com/ образцы здесь: http://github.com/rhomobile/rhodes-system-api-samples

  • Sencha Touch - Sencha Touch - это платформа для мобильных приложений HTML5, которая позволяет разрабатывать веб-приложения, которые выглядят и выглядят родными на устройствах с сенсорным экраном Apple iOS и Google Android. http://www.sencha.com/products/touch/

  • Corona - кроссплатформенная библиотека приложений для iPhone / iPad / Android. Слишком круто. http://anscamobile.com/corona/

  • Руководство по переносу существующего приложения Android на Windows Phone 7 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers

  • Оптимизированная для сенсорного экрана веб-платформа JQuery для смартфонов и планшетов
Sohilv
источник
1
Хотя я нашел одну интересную тему, связанную с этим, stackoverflow.com/questions/3326110/…
sohilv
еще один хороший пост о кроссплатформенной разработке: stackoverflow.com/questions/51988/…
sohilv
1
Проголосовал за то, чтобы закрыть это как дубликат. Это слишком важно, чтобы разделять его на два вопроса. stackoverflow.com/questions/51988/…
ripper234 06
1
Я недавно написал об этом в блоге stronia.com/2014/05/building-cross-platform-mobile-apps.html
Аншу Двибхаши

Ответы:

97

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

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

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

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

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

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

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

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

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

TechZen
источник
52
Меньше (ненужной) работы для разработчиков означает более быстрые циклы обновлений, более быстрые новые функции, более быстрые исправления ошибок и так далее. С теми же кадрами можно добиться большего. Считаю это выгодой для конечного пользователя.
schoetbi 01
10
Теоретически быстрая разработка может быть лучше для конечного пользователя, но это не философская основа большинства кроссплатформенных API. Я видел много попыток использовать такие инструменты во многих средах, и основное внимание всегда уделяется облегчению жизни разработчика за счет качества конечного продукта. Более того, обещания быстрее и дешевле редко оправдываются. Кажется, что всегда есть место для остановки шоу, которое съедает большую часть сэкономленного времени.
TechZen 02
5
Чтобы убедить меня в этом, примите во внимание следующее: кроссплатформенные API существуют для многих различных классов оборудования и ОС. Сколько кроссплатформенных приложений вы лично используете на регулярной основе? Сколько кроссплатформенных приложений вы когда-либо использовали и о которых вам хорошо понравилось? Люди продвигали кроссплатформенные API с тех пор, как у них было несколько платформ, но они никогда нигде не преуспели. Они не добиваются успеха, потому что не создают наиболее полезных приложений для конечных пользователей.
TechZen 02
4
@TechZen - Сейчас я использую StackOverflow в своем веб-браузере и не вижу причин искать собственный клиент. Я думаю, что вы слишком обобщаете свои утверждения.
Youval Bronicki
4
Я очень расстроен, что такого рода субъективные философские дискуссии получают правильную оценку на техническом веб-сайте. Что еще хуже, тезис этого сообщения неверен для большинства основных программ, которые мы используем сегодня: веб-браузеры кроссплатформенны; Photoshop, MS Office, Dropbox и прочее - кроссплатформенные; просто откройте меню «Пуск» или Finder и перечислите ребят, зависящих от платформы - скорее всего, они найдут небольшие служебные программы. Ваш аргумент будет действителен, если вы считаете, что мобильные телефоны радикально отличаются друг от друга (весьма обоснованное предположение), но, похоже, нет никаких аргументов для создания этой основы.
kizzx2
14

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

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

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

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

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

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

  • 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 сентября.

Jla
источник
6

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

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

Существуют «кроссплатформенные» фреймворки для смартфонов, такие как Phonegap, но я слышал в основном плохие отзывы об их использовании для «реальной» работы. (много накладных расходов и т. д.)

видеть
источник
5

Да, 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/ )

Матиас Конрад
источник
1

Насколько мне известно, большинство этих устройств могут запускать это:

Java ME - самая распространенная платформа приложений для мобильных устройств

Думаю, это может служить как хорошим, так и плохим примером.

Фози
источник
На самом деле на iPhone нет java, и, насколько я знаю, java me не работает на android
Алаа Нассеф
Разработка под Android в основном ведется на Java. developer.android.com/reference/java/net/package-summary.html
Ник Гарви,
Я не разбираюсь в деталях, но Avian JVM позволяет запускать java на устройствах iOS.
Quazi Irfan