Мы смотрели на Appcelerator при запуске нашего проекта Android.Мы знали, что в следующий раз нам понадобится iOS-клиент, поэтому Appcelerator соблазнил.
Мы решили не идти по этому пути, потому что он не поддерживает все собственные функции каждого устройства.
Например, мы рано решили, что нашему пользовательскому интерфейсу в Android потребуется виджет.В Appcelerator это не поддерживается, так как это характерно для Android.[Это было несколько месяцев назад - вы можете проверить еще раз.]
Компромисс в пользовательском интерфейсе был для нас слишком большим.Мы решили использовать C / C ++ для логики приложения и использовать Android SDK для пользовательского интерфейса.
Наши приложения теперь состоят из двух частей: C / C ++, насколько это возможно, для «мозгов» и нативных (Android / Cocoa Touch) для пользовательского интерфейса, чтобы воспользоваться преимуществами пользовательского интерфейса.
Работает, конечно, для платформ, которые могут интегрировать C / C ++.
Совет прощания: сначала разработайте свой пользовательский интерфейс,затем найдите инструмент, который сможет это реализовать.Пользователи возлагают большие надежды на интерфейс в портативных устройствах.Компромисс по этому вопросу на раннем этапе может быть KOD для вашего проекта.
[РЕДАКТИРОВАТЬ] Время от времени я вижу положительный ответ на этот вопрос.Я хотел бы рассказать о том, что мы узнали за последние два года:
- Использование C / C ++ для общих частей нашего приложения окупилось.Это требует немного более сложного процесса сборки, но экономия является гигантской, если часть кода, которой делятся, сложна (как в нашем случае).
- Для части пользовательского интерфейса мы начинаем искать гибридные приложения(некоторые элементы пользовательского интерфейса в HTML).По-прежнему ведутся споры об интерфейсах HTML (Facebook и LinkedIn - это две версии, которые переходят на собственный код для пользовательского интерфейса), а также некоторые сообщения о том, что при тщательном выборе это работает.Об этом очень хорошо говорят из Flipoard ;со слайдами здесь .
ОБНОВЛЕНИЕ Октябрь / 2014
В марте / 2014 Smashing Magazine опубликовал отличную статью, сравнивающую нативный iOS, родной Android, PhongeGap(Кордова) и Applelerator Titanium.Они показывают разработку простого приложения в каждой среде.
Это последняя часть серии .Вверху этой части есть ссылки на предыдущие части серии, а внизу - сравнение подходов.В конце также есть интересные комментарии от читателей.
ОБНОВЛЕНИЕ Май / 2015
Тем не менее, время от времени получаю отклик на этот вопрос, поэтому я хотел бы поделиться тем, что у нас естьсделано с тех пор, как я написал первую часть ответа.
Сейчас мы работаем над проектом, в котором также есть веб-клиент.Теперь у нас есть iOS-клиент, Android-клиент и веб-клиент.
JavaScript является естественным выбором для веб-клиента.
Поскольку мы хотим разделить как можно больше кода (на уровне бизнес-логики) между этими клиентами, это означает, что нам нужно найти способ запуска кода JavaScript в iOS и Android.
Иэто то, что мы в итоге сделали.
Это краткое изложение того, как мы с этим справляемся:
- Для всех клиентов: все структуры данных определены с помощью protobuf от Google ,Это позволяет автоматически генерировать код сериализации / десериализации для iOS и Android.
- iOS: запустить код JavaScript с помощью JavaScriptCore (хороший обзор здесь ).
- Android: запуск кода JavaScript с помощью движка Google V8.
Мост между JavaScript и слоем iOS / Android может быть узким местом, особенно сериализация объектов.Нам пришлось оптимизировать несколько вещей и выучить несколько уроков, чтобы избежать неприятностей.
В целом, опыт был положительным.Мы сэкономили значительное количество времени, передав код всем клиентам.
Если бы мне пришлось запустить другой проект, подобный этому (который требует обмена кодом с веб-клиентами и мобильными клиентами), я бы также посмотрел на , что Google сделал для входящих сообщений .Это не было доступно, когда мы начали.Выглядит многообещающе.
ОБНОВЛЕНИЕ Август / 2015
И мир продолжает вращаться ...
Я бы также внимательно посмотрел на React Native если бы мне нужно было запустить новое мобильное приложение сейчас.
Оно основано на JavaScript, упрощает веб-разработку и разработку мобильных приложений.
На сайте Рэя Вендерлиха есть отличное учебное пособие .
ОБНОВЛЕНИЕ Февраль 2016 г.
Мой список для кроссплатформенной разработки уменьшен до двух:
Я уделяю больше внимания ionic , потому что наше веб-приложение использует AngularJS, а также ionic (Cordova+ AngularJS). React Native заставит команду изучить другую среду (разумеется, если ваше веб-приложение использует React), аргумент будет противоположным.
Тем не менее, я серьезно рассмотрю React Native, даже из-за заявленной производительности и внешнего вида приложения, даже необходимости изучать другую среду.С сайта React Native:
С React Native вы можете использовать стандартные компоненты платформы, такие как UITabBar для iOS и Drawer на Android
Если вы начинаете сейчас, яРекомендуем вам как минимум завершить их уроки, чтобы вы лучше поняли каждую структуру.Каждый урок может быть выполнен за один-два часа:
Для более простого подхода: Smashing Magazine только что опубликовал (в то время, когда я писал это обновление) хорошая статья , показывающая, как использовать нативные элементы навигации, чтобы приложение казалось (ну ...) нативным,при использовании веб-представлений для визуализации содержимого.В статье подробно рассказывается о том, как сделать HTML / CSS пригодным для использования на мобильных устройствах (это не просто подталкивает HTML / CSS, который у вас уже есть).