Сравнение между Corona, Phonegap, Titanium

325

Я - веб-разработчик, и я хочу перенести свои веб-продукты на iPhone. Один из продуктов похож на Карты Google: отображать карту на экране телефона, вы можете перетаскивать или изменять размер карты и просматривать информацию, которую мы добавляем на карту.

Я знаю, что есть некоторые технологии, которые позволяют использовать HTML, CSS и Javascript для разработки собственных приложений для iPhone. Я определил несколько:

Существуют ли другие подобные продукты? Каковы различия между ними? Что выбрать?

  • 1
    Существует также Adobe FLEX, который может создавать приложения для iPhone с июня 2011 года. Adobe.com/products/flex
  • 1
    Проверьте это. Чувак, это сравнение с точки зрения. savagelook.com/blog/portfolio/...
Теги:
iphone
mobile-website

14 ответов

386
Лучший ответ

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

Ответ Rory Blyth содержит некоторые действительные точки относительно двух мобильных фреймворков javascript. Однако его ключевые моменты неверны. Правда в том, что Titanium и PhoneGap более похожи друг на друга. Они оба раскрывают функции мобильного телефона через набор API-интерфейсов javascript, а логика приложения (html, css, javascript) выполняется внутри собственного элемента управления WebView.

  • PhoneGap - это не только родная оболочка веб-приложения. Благодаря API-интерфейсам PhoneGap, "веб-приложение" имеет доступ к функциям мобильного телефона, таким как геолокация, камера акселерометра, контакты, база данных, файловая система и т.д. В принципе, любая функция, предоставляемая SDK мобильного телефона, может быть "соединена" с javascript world. С другой стороны, обычное веб-приложение, работающее в мобильном веб-браузере, не имеет доступа к большинству этих функций (безопасность является основной причиной). Поэтому приложение PhoneGap является скорее мобильным приложением, чем веб-приложением. Вы можете, безусловно, использовать PhoneGap для обертки веб-приложения, которое вообще не использует никаких API-интерфейсов PhoneGap, но это не то, для чего был создан PhoneGap.

  • Titanium не компилирует ваш код html, css или javascript в "собственные биты". Они упакованы в качестве ресурсов в исполняемый пакет, подобно встроенному файлу изображения. Когда приложение запускается, эти ресурсы загружаются в элемент управления UIWebView и выполняются там (как, например, javascript, а не собственные биты). Нет такой вещи, как компилятор javascript-to-native-code (или to- objective-c). Это делается также в PhoneGap. С архитектурной точки зрения эти две структуры очень похожи.

Теперь, они разные? Да. Во-первых, Titanium, по-видимому, больше функциональна, чем PhoneGap, путем объединения функций мобильного телефона в javascript. Наиболее заметно, что PhoneGap не предоставляет многие (если есть) собственные компоненты пользовательского интерфейса для javascript. С другой стороны, у Titanium есть всеобъемлющие API интерфейса, которые можно вызвать в javascript для создания и управления всеми видами собственных пользовательских интерфейсов. Используя эти API интерфейса, приложение Titanium может выглядеть более "родным", чем приложение PhoneGap. Во-вторых, PhoneGap поддерживает больше платформ для мобильных телефонов, чем Titanium. API PhoneGap более универсальны и могут использоваться на разных платформах, таких как iPhone, Android, Blackberry, Symbian и т.д. Титан в первую очередь нацелен на iPhone и Android, по крайней мере, на данный момент. Некоторые из его API-интерфейсов специфичны для платформы (например, API интерфейса UI для iPhone). Использование этих API уменьшит кросс-платформенную возможность вашего приложения.

Итак, если ваша забота о вашем приложении - сделать его более "родным", Titanium - лучший выбор. Если вы хотите более легко "переносить" приложение на другую платформу, PhoneGap будет лучше.

Обновлено 8/13/2010: Ссылка на ответ сотрудника Титана на вопрос Мики.

Обновлено 12/04/2010: Я решил дать этому посту ежегодный обзор, чтобы сохранить свою информацию в актуальном состоянии. В течение многих изменений произошли изменения, которые сделали часть информации в первоначальном устаревании устаревшей.

Самое большое изменение произошло от Titanium. В начале этого года Appcelerator выпустил Titanium 1.0, который резко удалился из своих предыдущих версий с архитектурной точки зрения. В 1.0 элемент управления UIWebView больше не используется. Вместо этого вы вызываете Titanium API для любых функций пользовательского интерфейса. Это изменение означает пару вещей:

  • Пользовательский интерфейс приложения становится полностью родным. В вашем приложении больше нет веб-интерфейса, поскольку пользовательские интерфейсы Titanium управляют всеми вашими потребностями пользовательского интерфейса. Титан заслуживает большого уважения, опираясь на границу "Кросс-платформенный родной интерфейс". Это дает программистам, которые предпочитают внешний вид собственного интерфейса, но не любят официальный язык программирования.

  • Вы не сможете использовать HTML или CSS в своем приложении, так как веб-представление исчезло. (Примечание: вы все равно можете создать веб-представление в Titanium, но есть несколько функций Titanium, которые вы можете использовать в веб-представлении.) Titanium Q & A: Что случилось с HTML и CSS?

  • Вы не сможете использовать популярные JS-библиотеки, такие как JQuery, которые предполагают существование объекта DOM. Вы продолжаете использовать JavaScript в качестве языка кодирования. Но это почти единственная веб-технология, которую вы можете использовать, если вы придете к Titanium 1.0 в качестве веб-программиста.

Титановое видео: Что нового в Titanium 1.0.

Теперь, Titanium 1.0 компилирует ваш JavaScript в "родные биты"? Нет. В этом блоге разработчик наконец пришел к этому вопросу: Проект Titanium Guides Project: JS Environment. Мы, программисты, более настоящие люди, чем те, кто в Отдел маркетинга, не так ли?:-)

Перейдите к PhoneGap. В PhoneGap не так много нового. Я считаю, что разработка PhoneGap не была очень активной, пока IBM не подскочила на борту в конце этого года. Некоторые люди даже утверждали, что IBM вносит больше кода в PhoneGap, чем Nitobi. Это правда или нет, хорошо знать, что PhoneGap активно развивается.

PhoneGap продолжает основываться на веб-технологиях, а именно на HTML, CSS и JavaScript. Это не похоже, что у PhoneGap есть какой-то план по переносу собственных возможностей пользовательского интерфейса на JavaScript, как это делает Титан. В то время как веб-интерфейс все еще отстает от собственного пользовательского интерфейса по производительности и внешнему виду, этот разрыв быстро закрывается. В веб-технологиях есть две тенденции, которые обеспечивают яркую функциональность для мобильного веб-интерфейса с точки зрения производительности:

  • Двигатель JavaScript перемещается от интерпретатора к виртуальной машине. JavaScript JIT скомпилирован в собственный код для более быстрого выполнения. Safari JS engine: SquirrelFish Extreme

  • Передача веб-страниц переходит от использования процессора к использованию ускорения GPU. Графические интенсивные задачи, такие как переходы на страницы и трехмерная анимация, становятся намного более гладкими с помощью аппаратного ускорения. ускоренный состав GPU в Chrome

Такие улучшения, которые происходят из настольных браузеров, быстро доставляются в мобильные браузеры. Фактически, начиная с iOS 3.2 и Android 2.0, управление мобильным веб-представлением стало намного более эффективным и удобным для HTML5. Будущее мобильной сети настолько многообещающе, что привлекло большого парня в город: JQuery недавно анонсировала свою мобильную веб-инфраструктуру. С помощью JQuery Mobile UI-гаджеты и PhoneGap, предоставляющие функции телефона, они, по-моему, создают идеальную мобильную веб-платформу.

Я также должен упомянуть Sencha Touch в качестве другой системы гаджета для мобильного веб-интерфейса. Недавно выпущена версия Sencha Touch версии 1.0 под двойной лицензией, которая включает GPLv3. Sencha Touch отлично работает с PhoneGap, как это делает JQuery Mobile.

Если вы программист GWT (как и я), вы можете проверить GWT Mobile - проект с открытым исходным кодом для создания мобильных веб-приложений с GWT. Он включает оболочку PhoneGap GWT, которая позволяет использовать PhoneGap в GWT.

  • 10
    Гм ... вы говорите, что "PhoneGap - это не просто встроенная оболочка веб-приложения". Вы продолжаете обсуждать доступ, который он дает вам к собственным функциональным возможностям устройства. Я думаю, что я рассмотрел это, когда написал: «Помимо того, что PhoneGap предоставляет мост, это мост между JavaScript и собственными API-интерфейсами устройств. Итак, вы пишете JavaScript с API-интерфейсами PhoneGap, и PhoneGap затем делает соответствующий соответствующий нативный вызов. В этом отношении отличается от развертывания простого старого веб-приложения. " Если вы зарегистрировались только для того, чтобы опровергнуть мое заявление, вы должны прочитать его полностью. Я знаю, что мои сообщения длинные, но ... все же.
  • 5
    Я мог бы быть более понятным, но детали того, какие API-интерфейсы сложны, так как они менялись с течением времени от устройства к устройству, что вы можете сделать (это значительно улучшилось, но матрица функций для разных платформ претерпела довольно много изменений). Я написал об одном из ключевых отличий, и то, что я написал, является правильным - фактически, это соответствует тому, что вы написали. Вы просто попали в подробности о том, к каким API вы можете получить доступ.
Показать ещё 12 комментариев
184

Из того, что я собрал, вот некоторые различия между ними:

  • PhoneGap в основном создает собственные обертки для веб-приложений. Он выплевывает проект WhateverYourPlatformIs, вы его создаете и развертываете. Если мы говорим об iPhone (где я трачу свое время), он не сильно отличается от создания веб-приложения launcher (ярлык, который получает свой собственный значок Springboard, поэтому вы можете запускать его как (например) родное приложение). "Приложение" само по себе остается html/js/etc. И запускается внутри размещенного элемента управления браузера. То, что PhoneGap обеспечивает помимо этого, является мостом между JavaScript и API-интерфейсами на основе собственных устройств. Таким образом, вы пишете JavaScript против API PhoneGap, а PhoneGap затем делает соответствующий соответствующий собственный вызов. В этом отношении он отличается от развертывания простого старого веб-приложения.

  • Титановый источник скомпилируется до собственных битов. То есть, ваш html/js/etc. не просто привязаны к проекту, а затем размещаются внутри элемента управления веб-браузера - они превращаются в родные приложения. Это означает, например, что ваш интерфейс приложения будет состоять из компонентов пользовательского интерфейса. Есть способы получить собственный внешний вид, не имея собственного приложения, но... ну... какой кошмар, который обычно оказывается.

Оба аналогичны тем, что вы пишете все свои материалы с помощью типичных веб-технологий (html/js/css/blah blah blah) и получаете доступ к встроенным функциям с помощью пользовательских JavaScript-API.

Но, опять же, приложения PhoneGap (PhonGapps? Я не знаю... это глупое имя? Легче сказать - я так много знаю) начинают свою жизнь как веб-приложения и заканчивают свою жизнь как веб-приложения. На iPhone, ваш html/js/etc. просто выполняется внутри элемента управления UIWebView, а API-интерфейс JavaScript PhoneGap ваши js-вызовы маршрутизируются в собственные API-интерфейсы.

Титановые приложения становятся родными приложениями - они только что разработаны с использованием технологии web dev.

Что это значит?

  • Приложение Titanium будет выглядеть как "реальное" приложение, потому что, в конечном счете, это "реальное" приложение.

  • Приложение PhoneGap будет выглядеть как веб-приложение, размещенное в элементе управления браузером, поскольку, в конечном счете, это веб-приложение, размещенное в элементе управления браузером.

Что подходит вам?

  • Если вы хотите писать собственные приложения с помощью навыков веб-разработчиков, Titanium - ваш лучший выбор.

  • Если вы хотите написать приложение с помощью навыков веб-разработчиков, которые вы могли бы реально реализовать на нескольких платформах (iPhone, Android, Blackberry и все остальное, что они решили включить), и если вы хотите получить доступ к подмножеству встроенные функции платформы (GPS, акселерометр и т.д.) через унифицированный JavaScript API, PhoneGap, вероятно, вы хотите.

Возможно, вы спросите: почему я хочу написать PhoneGapp (я решил использовать это имя), а не веб-приложение, размещенное в Интернете? Не могу ли я по-прежнему получить доступ к некоторым собственным функциям устройства, но также иметь удобство подлинного веб-развертывания, а не принуждать пользователя загружать "родное" приложение и устанавливать его?

Ответ: Потому что вы можете отправить свой PhoneGapp в App Store и заплатить за него. Вы также получаете значок запуска, который затрудняет пользователю забыть о вашем приложении (я гораздо чаще забываю о закладке, чем значок приложения).

Конечно, вы могли бы взимать плату за доступ к веб-веб-приложению, но сколько людей действительно собирается пройти процесс для этого? В App Store я выбираю приложение, нажимаю кнопку "Купить", вводим пароль, и все готово. Он устанавливает. Через несколько секунд я использую его. Если бы мне пришлось использовать какой-то одноразовый интерфейс для мобильных веб-транзакций, что, вероятно, означало бы использовать мое имя, адрес, номер телефона, номер CC и другие вещи, которые я не хочу использовать, я почти наверняка не буду " t пройти через это. Кроме того, я доверяю Apple - я уверен, что Стив Джобс не собирается регистрировать мою информацию, а затем взимать кучу непослушных подписей журнала на мой CC для пинков.

Во всяком случае, за исключением того, что задействован веб-технология dev, PhoneGap и Titanium очень разные - с точки зрения того, что они только внешне сопоставимы.

Я ненавижу веб-приложения, и, если вы читаете обзоры iTunes App Store, пользователи очень хорошо разбираются в них. Я не буду называть никаких имен, но у меня есть пара "приложений" на моем телефоне, которые выглядят и работают как мусор, и это потому, что они - веб-приложения, размещенные внутри экземпляров UIWebView. Если бы я хотел использовать веб-приложение, я бы открыл Safari и, вы знаете, перейдите к одному. Я купил iPhone, потому что мне нужны вещи, которые являются iPhone-y. У меня нет проблем с использованием, скажем, увлекательного веб-приложения Google в Safari, но я чувствовал бы себя обманутым, если бы Google просто запустил закладку на Springboard, представив веб-приложение как родной.

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

  • 0
    Большое спасибо за ваш ответ, и это делает меня более понятным о PhoneGap и Titanium ~ Еще раз спасибо
  • 22
    Проблема с ответом состоит в том, что это в основном НЕПРАВИЛЬНО. Смотрите ответ DennisJZH ниже.
Показать ещё 6 комментариев
65

Я занимаюсь курсом в разработке Android/iPhone, и мы провели 8 недель с Titanium (не полный рабочий день) (версия была Titanium 1.4.2, а время было около ноября 2010 года). Вот мой опыт.

iPhone с двойным нажатием

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

Многие люди в классе сделали приложения для iPhone, и они не могут заставить их работать на Android без серьезных перезаписи. Я разработал простое детское приложение под названием Animap (см. Рынок Android/Appstore в Швеции) и начал развиваться под Windows. Как только целевая группа Android работала, я открыл проект на OS X. Он не показывает никаких вещей для iPhone, только для Android. Вам нужно запустить двойной целевой проект под OS X. (Хорошо, я скопировал соответствующие файлы в новый проект). Следующая проблема - анимация не работает на iPhone (они работают на Android). Прокрутка событий не работает на iPhone. (т.е. на Android вы получаете событие untouch, когда пользователь перестает прокручивать и отпускает свой палец с экрана, этого не происходит на iPhone).

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

Загрузка и настройка

Вы должны следовать инструкциям к письму. Не пытайтесь использовать java 64 бит. Он не будет компилировать демонстрационное приложение KitchenSink 1.4.0. (1.3 работает нормально!) Вы должны помещать файлы непосредственно на диск C, так как длинные имена путей заставят внешнюю программу не получать все параметры командной строки, если они будут длинными. (Отлично подходит для небольших программ) 1/3 времени, инструментальная цепочка просто останавливается, и вы должны снова нажать "запуск". Тогда это, вероятно, будет работать... очень ненадежно. Симулятор не будет найден при запуске, а затем вы должны просто убить adb.exe с помощью Ctrl + Alt + Удалить и повторить попытку.

Сетевое подключение

В wifi-сети вы иногда теряете соединение в реальном времени, и Titanium падает на вас (интерфейс компиляции/развертывания) Если у вас нет рабочего интернет-соединения, он не запустится, так как он не сможет зарегистрировать вас на своих серверах.

API

CSS, HTML и jQuery - это ветер по сравнению с этим. Титан напоминает любой другой старый API GUI, и вам нужно установить некоторые свойства для каждой отдельной кнопки/поля/etc. Получение поля не так просто, чтобы запомнить все свойства, которые необходимо установить? Вы пишете его заглавными буквами в нужном месте? (поскольку это не улавливается компилятором, но будет рассматриваться как ошибка времени выполнения, если вам повезет проверить эту часть)

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

Документация

Несколько страниц API содержат символ Android, но при попытке создать элемент управления он вернет null. Они не просто доступны на платформе Android, несмотря на символы. Иногда Android упоминает, что не поддерживает определенный метод, но тогда весь API отсутствует.

KitchenSink

Демо-приложение. Я упоминал, что он не компилируется, если вы поместили его в папку проекта Eclipse, потому что путь слишком длинный? Должен быть помещен на ваш диск C в корневую папку. В настоящее время я использую ссылку symbolik (mklink/J...)

Недокументированные методы

Вы должны с пользой использовать вещи как label.setText('Hello World'), чтобы изменить метку надежным, но это вообще не документировано.

Отладка

Titanium.API.info( "Отпечатки - это единственный способ отладки" );

Редактирование

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

Оборудование

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

Некоторые положительные вещи

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

  • Bugdatabase

  • Он также открывается. Вы можете просто увидеть, что ваш не один и сделать обходной путь вместо 4 часов, потраченных на пробную и ошибку.

  • Community

  • Кажется, что они активны на своих форумах.

Ошибки

  • Titanium 1.4 не является потокобезопасным. Это означает, что если вы используете потоки (используйте свойство url: property в вызове createWindow), и программа, подобная потокам, работает и отправляет события с данными вперед и назад, вы запускаете много очень, очень странных вещей - потерянных обработчиков, потерянных окна, слишком много событий, слишком мало событий и т.д. и т.д. Все это зависит от времени, в результате чего строки кода в другом порядке могут привести к сбою или излечению вашего приложения. Добавление окна в другой файл .js прерывает выполнение app.js... Это также разрушает внутренние структуры данных в Titanium, поскольку они иногда могут обновлять внутренние структуры данных в паралели, переписывая только что измененное значение с чем-то другим.

Значительная часть проблем, с которыми я столкнулся с Titanium, исходит из моего опыта в системах реального времени, таких как OSE, которые поддерживают сотни потоков, событий и передачи сообщений. Предполагается, что он работает в Titanium 1.4, но он просто не делает это надежно.

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

  • Тогда у нас есть более простые ошибки в Titanium, как некоторые параметры, не работающие в функциях (что довольно часто встречается на платформе Android).

  • Скорость цикла отладки и ошибок Запустив Titnium Developer на нескольких компьютерах, я заметил, что узким местом является жесткий диск. Накопитель SSD на ноутбуке делает цикл сборки примерно в 3-5 раз быстрее, чем на диске с частотой 4200 об/мин. На рабочем столе, имея два диска в RAID 1 (режим полосания), делает сборку примерно на 25 процентов быстрее, чем на одном диске с несколько более быстрым процессором, а также превосходит ноутбук SSD.

Резюме

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

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

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

О себе: Я использовал Python в течение двух лет с помощью wxPython. (что графический интерфейс несовместим, но он никогда не ломается. Возможно, я не понял модель потоков, используемую Javascript и Titanium, но я не одинок в соответствии с их открытыми дискуссионными форумами, объекты GUI внезапно используют неправильный контекст/не обновляя..???) до этого у меня есть фон в программировании C и ASM для мобильных устройств.

[edit - добавлена ​​часть с ошибками и не является потокобезопасной] [Изменить - теперь работаю с ним в течение месяца +, в основном на ПК, а некоторые - на OS X. Добавлены двойные цели iPhone и Android. Добавлена ​​скорость цикла отладки проб и ошибок.]

  • 1
    С выпуском 1.4 Titanium я теперь изучил файлы .apk, доставленные из Titanium, и они просто не очень хороши. Они работают, но полный каталог сборки там как бы упакован. Это означает, что незначительные недостатки сборки, такие как копирование заставки в три разных места во время сборки, внезапно потребляют, так как у меня большое изображение с заставкой, около 1 Мб памяти в телефоне. И это только для очень простого варианта hello-world. Исходный код javascript также копируется в сборки и в файлы .apk и, таким образом, доставляется всем клиентам.
  • 0
    Выпуск 1.5 уже выпущен и, как говорят, является основным переписыванием для платформы Android. Я не буду проверять это, так как мне нужно сейчас изучать разработку под Android.
Показать ещё 2 комментария
24

Corona SDK (Ansca Mobile) использует Lua в качестве языка кодирования. См. Lua.org для получения дополнительной информации о Lua.

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

  • 0
    У вас есть какой-либо план или шкала времени для сценариев с пользовательским интерфейсом. Я немного поработал с Луа и очень хочу любить Корону. Для неигровой разработки Titanium кажется немного впереди.
  • 4
    Привет Урок. У нас есть встроенные функции пользовательского интерфейса, которые появятся в выпуске 1.1 (ETA позже на этой неделе!), И вскоре появятся другие функции. Тем не менее, я чувствую, что Titanium - это то, что они проделали отличную работу, разоблачая большое количество нативных элементов пользовательского интерфейса, в то время как мы собираемся сосредоточиться на наиболее важных элементах пользовательского интерфейса, в то же время вкладывая больше усилий в разработку анимации и рендеринга. Причина заключается в том, что (i) уже есть хорошие продукты для приложений только для пользовательского интерфейса, (ii) пользовательский интерфейс является самой дружественной частью Cocoa (условно говоря!), Но (iii) все, что связано с анимацией OpenGL, является болезненной точкой на iPhone в момент.
Показать ещё 1 комментарий
18

Я работаю с Titanium уже более недели и чувствую, что хорошо чувствую свою слабость.

1) Если вы надеетесь, что используете тот же код на нескольких платформах, удачи! Вы увидите что-то вроде backgroundGradient и будете удивлены, пока не узнаете, что версия для Android не поддерживает его. Затем нужно вернуться к использованию градиентного изображения, может также использовать его для обеих версий, чтобы сделать код более правильным?

2) Много странных поведений, на Sdk титанового андроида вам нужно понять, что такое "тяжелое" окно - это просто, чтобы заставить кнопку "вернуться" работать или даже лучше отслеживать события ориентации. Это не то, как на самом деле платформа Android, а именно то, как Titanium пытается заставить их работать API.

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

4) Ошибки.... есть много ошибок, и о них сообщают, сидят в течение нескольких месяцев, исправляются через несколько дней. Я удивлен, что они даже планируют выпустить черный ящик для мобильных телефонов, когда есть так много других проблем с Android.

5) Titanium Iphone против Titanium Android javascript-двигатели совершенно разные. В версии Android вы можете загружать удаленные файлы javascript, включать и использовать библиотеки, такие как mootools, jquery и т.д. Я был на небесах, когда узнал об этом, потому что мне не нужно было компилировать приложение для Android. Процесс установки Android apk занимает так много времени! Iphone ничто из этого не возможно, также версия iphone имеет гораздо более быстрый механизм javascript.

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

Так стоит? В конце концов, боль, это стоит каждую минуту. Вы можете абстрагироваться от логики и просто создавать разные пользовательские интерфейсы для каждого, а не везде, где угодно. Титан позволяет вам делать жидкие приложения, которые быстро чувствуют себя. Вы теряете мощные возможности макета каждой платформы, но если вы считаете, что это просто, все может быть сделано на одном языке.

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

10

Вот более свежий и углубленный анализ Appcelerator и PhoneGap: http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap

И еще более подробно о том, как они различаются программно: http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript

9

native mapkit поддерживается в титане

8

Создание виджетов HTML5, которые выглядят как виджеты iphone, - это одно, но сделать их одинаково хорошо - это совсем другое дело. Производительность анимации html5 (даже простой просмотр переходов), прокрутка длинных списков, отзывчивость на жесты кажутся липкими и отрывистыми. Пользователь iPhone заметит разницу.

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

Я сейчас останусь с родными приложениями. Думаю.

7

Rhomobile Rhodes (http://rhomobile.com/products/rhodes) очень похож на подход к PhoneGap, но является единственной структурой с:

  • шаблон контроллера модели (как большинство веб-фреймворков).
  • Реляционный менеджер объектов
  • поддержка всех популярных смартфонов (включая Windows Phone 7)
  • размещенная служба разработки (а не только размещенная сборка): http://rhohub.com
  • полный отладчик и эмулятор без SDK в среде разработки RhoStudio
  • поддержка синхронизированных автономных данных
  • 0
    И одна из единственных платформ без поддержки разработки под Linux ...
6

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

5

Мое понимание PhoneGap заключается в том, что они предоставляют API Javascript для большинства iPhone API.

Титану кажется проще для фона веб-разработчика. Это простой XML файл для создания базового приложения TabView, а затем все в области содержимого управляется с помощью HTML/JS. Я также знаю, что Titanium предоставляет некоторый доступ к javascript для некоторых фреймворков (особенно доступ к информации о местоположении, идентификатору телефона и т.д.).

UPDATE: Titanium добавила Maps API в версию 0.8 своей структуры.

  • 0
    Согласно «Titanium кажется более легким для веб-разработчиков». заявление. Вы имеете в виду легче, чем родное право? Поскольку PhoneGap, кажется, больше соответствует тому, кто имеет опыт работы с веб-разработчиками, чем Titanium ...
  • 0
    Да, я имею в виду против родного.
3

Вы должны изучить объектные c и программы для собственных приложений. Не полагайтесь на эти вещи, которые, по вашему мнению, облегчат жизнь. Apple убедилась, что самый простой способ - использовать свои собственные инструменты и язык. Для ваших 100 строк javascript я могу сделать то же самое в 3 строках кода или вообще не использовать код в зависимости от элемента. Следите за некоторыми учебниками - если вы понимаете javascript, то объективный c не является трудным. Обходные пути несчастны, и яблоко может вытащить вилку на вас в любое время.

  • 3
    Apple может отключить ... это то, что я имею в виду
  • 6
    Цитата: «Apple позаботилась о том, чтобы проще всего было использовать их родные инструменты и язык». Они действительно не имеют. Если бы они хотели это сделать, они бы предоставили, скажем, поддержку Python. Будет сбор мусора (который сам по себе уменьшит частоту сбоев - большинство приложений для iPhone написаны ужасно). Я копаю ObjC, и, как и вы, я бы лучше использовал его, чем js, но это не был вопрос оп. Кроме того, MonoTouch делает разработку проще, чем любой из этих вариантов. Я могу создать свойство в одну строку; получить ссылку на папку Document с одной строкой ... и так далее. Кусочки Apple могут быть значительно улучшены.
Показать ещё 2 комментария
3

Из упомянутых вами решений никто из них не дает вам прямого доступа к инфраструктуре MapKit, представленной в OS 3.0.

Поскольку виджеты Google Maps HTML не так хороши, как MapKit (см. Google Локатор для примера), вам, вероятно, лучше всего приступить к разработке приложения с сенсорным интерфейсом Cocoa или выбрать решение, которое вы можете расширить, чтобы добавить MapKit интеграция. PhoneGap является расширяемым таким образом (он с открытым исходным кодом, поэтому он по умолчанию), а некоторые другие решения также могут быть.

edit: Titanium теперь поддерживает MapKit

  • 0
    Спасибо. Но есть ли существенная разница между PhoneGap и Titanium?
  • 1
    MapKit уже давно доступен в Titanium.
Показать ещё 1 комментарий
1

Я пробовал корону. Это было хорошо, пока я не обнаружил, что он не поддерживает потоковое mp3-аудио. Итак, я остановился прямо здесь. Я думаю, что если я действительно хочу быть разработчиком приложений для iphone, я должен изучить obj c. Все, что я хотел сделать, приложение, которое имеет список радиостанций, и вы нажимаете на них, чтобы начать играть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню