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

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

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

Есть ли другие, похожие продукты? Каковы различия между ними? какой я должен выбрать?

14 ответов

Решение

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

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

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

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

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

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

Обновлено 13.08.2010: Ссылка на ответ сотрудника Titanium на вопрос Микки.

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

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

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

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

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

Видео Titanium: что нового в Titanium 1.0.

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

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

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

  1. Двигатель JavaScript движется от переводчика к виртуальной машине. JavaScript - это JIT, скомпилированный в собственный код для более быстрого выполнения. Двигатель Safari JS: SquirrelFish Extreme

  2. Рендеринг веб-страниц переходит от использования CPU к использованию ускорения GPU. С помощью аппаратного ускорения графические задачи, такие как переход страниц и трехмерная анимация, становятся намного более плавными. GPU Ускоренное наложение в Chrome

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

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

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

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

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

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

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

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

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

Что это на самом деле означает?

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

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

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

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

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

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

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

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

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

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

Должны идти. У моей девушки такое выражение лица, которое вы можете прекратить использовать на компьютере в течение трех секунд.

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

iPhone Android двойной таргетинг

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

A lot of the people in the class has done iPhone applications, and they can not make them work on Android without major rewrites. I developed a simple childrens app called Animap (see android market / Appstore in Sweden) and started developing under Windows. Once the Android target was working I opened the project on OS X. It does not show any build stuff for iPhone, just for Android. You need to start a dual target project under OS X. (Ok, I copied the relevant files to a new project). Next problem - the animations does not work on iPhone (they work on Android). The scrolling events does not work the same on the iPhone. (ie on Android you get the untouch event when user stops scrolling and releases their finger from the screen, this does not happen on the iPhone).

Since this is not mentioned somewhere you basicly need to do trial and error programming on first one platform, then on the other platform. By trial and error I mean it will take about two days to get such a simple App as Animap working on the other platform. You will also need to have if (android) then... or if(iphone)... all over your code...

Download and setup

You must follow the instructions to the letter. Do not try to use java 64 bit. It will not compile the KitchenSink 1.4.0 demo application. (1.3 works OK!) You must put files directly on the C drive as long pathnames will make the external program not receiving all command line parameters if they get to long. (Fine for small programs though) 1/3 of the times, the toolchain simply stops and you must press 'launch' again. Then it will probably work... very unreliable. The simulator will not be found on startup and then you must simply kill of adb.exe with Ctrl+Alt+Delete and retry.

Network connection

On a wifi-network you sometimes looses the live connection and Titanium crashes on you (the compile/deploy interface) If you do not have a working internet connection it will not start as it can not log you in to their servers.

API

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

В Titanium все просто ломается, когда вы добавляете другое представление поверх элемента управления или щелкаете где-то еще в GUI.

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

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

Кухонная мойка

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

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

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

отладка

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

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

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

аппаратные средства

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

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

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

  • Bugdatabase

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

  • сообщество

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

ошибки

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

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

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

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

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

Резюме

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему не веб-приложение? On entry level market android phones its horribly slow to generate a webview and consumes a lot of memory you could be using to do more complex logic.

Вот более свежий и углубленный анализ 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

Родной mapkit поддерживается в Titanium

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

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

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

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

  1. шаблон Model View Controller (как предоставляют большинство веб-фреймворков)
  2. объект реляционного менеджера
  3. поддержка всех популярных смартфонов (включая Windows Phone 7)
  4. размещенная служба разработки (не просто размещенная сборка): http://rhohub.com/
  5. полный отладчик и эмулятор без SDK в RhoStudio IDE
  6. поддержка синхронизированных автономных данных

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

Насколько я понимаю, PhoneGap предоставляет API-интерфейсы Javascript для большинства API-интерфейсов iPhone.

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

ОБНОВЛЕНИЕ: Titanium добавил Maps API в версии 0.8 своего фреймворка.

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

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

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

редактировать: Titanium теперь имеет поддержку MapKit

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

Другие вопросы по тегам