Pull to refresh

Используем Titanium Developer для кроссплатформенной разработки

Reading time3 min
Views1.2K
Непрочь создать desktop-приложение, но знакомы только с технологиями, связанными с web? Возможно вас заинтересует технология Titanium Developer.

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



Интро



Вкратце о технологии. Titanium Developer представляет из себя специальную среду на манер Adobe AIR, с помощью которой можно собрать кросплатформенное приложение (Windows, Mac, Linux, Android, iPhone), используя знакомые каждому веб-разработчику инструменты и библиотеки. Неоспоримым преимуществом является также то, что проект собирается и размещается в специальном облаке, снимая с плеч разработчика тяжбы написания инсталляторов под разные ОС, а также позволяя сразу же поделиться ссылкой на собранный проект.

Принцип довольно прост: в приложение пакуется урезанный WebKit, внутри которого и открывается созданное приложение. При этом можно использовать jQuery, css-фреймворки, пользоваться поддержкой PHP, Python и Ruby. Все опционально и настраиваемо, можно например указать, что необходимые библиотеки не будут включены в стандартный инсталлятор, а будут докачаны из интернета.

Возможности



SQLite

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

var db = Titanium.Database.openFile(Titanium.API.application.dataPath+"demo.db");

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

Network


Документация по сетевым функциям находится здесь. Скажу прямо, удобство предоставленных функций вызвало у меня большие сомнения, поэтому для реализации асинхронной подгрузки данных с сервера было решено использовать стандартные и привычные функции jQuery. Вдобавок ко всему, разработчики честно признаются, что некоторые объекты API являются алиасами стандартных из Javascript.

Filesystem


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

Полезности


Помимо всего прочего, разработчику предоставлены удобные инструменты для работы с данными в формате JSON, управления иконкой приложения в системном трее (доке для Mac OS X), функции определения системных параметров и возможность взаимодействия с Android/iPhone SDK.

Проблемы


Конечно, не обошлось без ложки дегтя. Помимо описанных опечаток в документации по SQLite, заметны недоработки в разделе Update Manager — на форуме до сих пор остается не рассмотренным разработчиками вопрос о том, каким образом правильно работать с системой обновлений. В своем проекте пока оставили простой notification.

Рекомендация №1. Вдобавок к вышесказанному, рекомендую управлять окном программы посредством редактирования файлика tiapp.xml, который лежит в корне каждого проекта. Как показала практика, этот вариант работает надежнее на разных ОС, в отличие от настройки окна программы вызовом функций API.

Рекомендация №2. Если у вас есть сомнения по поводу пути до того или иного файла (например, файла изображения или подключаемого скрипта), рекомендую использовать префикс app:// — это позволит быть уверенным в том, что путь берется от корня приложения
Tags:
Hubs:
+7
Comments2

Articles