Изучение возможностей и расширяемости Axway Titanium Alloy

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

Когда мы закончили в прошлый раз, мы увидели, что можем установить локальную версию Alloy для использования с Titanium. Чтобы полностью продемонстрировать мощь этого, казалось бы, простого шага, я создал форк фреймворка Titanium Alloy с открытым исходным кодом и опубликовал его на GitHub здесь: https://github.com/brentonhouse/titanium-turbo. Я назвал его Turbo, чтобы соответствовать теме этой серии, и я расскажу вам о том, что я сделал, и продемонстрирую силу Titanium Alloy.

Важно отметить, что Turbo не является официальным продуктом Axway. Как и Alloy, это проект с открытым исходным кодом, но Turbo поддерживается только сообществом разработчиков Titanium.

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

  • Поддержка установки пакетов npm в корневой каталог проекта.
  • Поддержка дополнительных атрибутов XML, таких как fontSize, fontFamily и т. д.
  • Замените Underscore.js на Lodash
  • Поддержка camelCase, snake_case и kabab-case в представлениях XML.
  • Добавление элемента <Code> в XML-представления, который поддерживает в нем код JavaScript.

С момента запуска этой серии МНОГИЕ функции уже были объединены в Alloy и отмечены этим изображением:

в списке функций. Функции, эксклюзивные для Turbo, отмечены этим изображением:

✨ Блестящие новые функции ✨

Многие новые функции, которые я добавил для этого эксперимента, являются поверхностными изменениями (например, поддержка camelCase в XML-представлениях 😊), которые вам могут быть безразличны и, вероятно, никогда не войдут в Alloy.

(Это нормально!)

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

Одним из них является поддержка npm.

🧰 поддержка нпм 🧰

Чего эта функция не делает.

Чего эта функция не делает, так это волшебным образом заставляет каждый пакет, опубликованный в npm, работать в Titanium. Во-первых, пакеты в npm даже не обязательно должны быть модулями JavaScript. Кроме того, многие пакеты JavaScript предназначены для Node.js, что зависит от доступности среды выполнения Node.js (и связанных с ней глобальных модулей). Хотя команда Titanium создала полифиллы для некоторых глобальных модулей Node.js (таких как os, path и process) и работает над созданием новых, вы не можете просто добавить пакет Node.js и ожидайте, что это сработает.

Что делает эта функция.

Что эта функция делает, так это позволяет вам запускать npm install your-cool-package в корне вашего проекта. Это установит этот пакет как зависимость, добавит его в корневой файл package.json и сделает этот модуль, совместимый с Titanium, доступным для вас в вашем мобильном приложении. Просто убедитесь, что это не зависит от среды выполнения Node.js.

Понятно. Что еще?

Итак, если вы возьмете функцию, которую я добавил для установки пакетов npm в корень проекта, а теперь объедините ее со всей новой функцией Titanium 8.1.x, позволяющей устанавливать собственные модули из npm, и вы получите очень приятную настройку для разработчиков. !

Мало того, что ваш репозиторий кода станет меньше, (поскольку большая часть кода будет находиться в каталоге node_modules, который игнорируется (или должен) игнорироваться), но и потому, что ваш проект теперь очень автономен, вы может делать классные, сумасшедшие вещи, например:

Подождите…

☁️ Создание и развертывание приложений для iOS и Android из облака! ☁️

Ага! Поскольку все ваши зависимости (Titanium, Turbo, нативные модули и модули JavaScript) являются локальными, вы можете использовать облачные рабочие процессы CI (например, Azure DevOps и недавно анонсированные действия GitHub) для создания и развертывания приложений iOS и Android из облака.

Теперь вы можете создавать, тестировать и развертывать свое приложение iOS для пользователей в TestFlight и в App Store — и все это без использования локального компьютера с MacOS! Вы также можете создавать и развертывать свои приложения для Android в Google Beta и Google Play!

Конечно, я бы не рекомендовал этот метод в качестве замены, пока вы все еще находитесь в процессе разработки и отладки своего приложения на компьютере с MacOS, поскольку облачный процесс будет медленнее. Кроме того, локальная разработка и тестирование с использованием Titanium LiveView выполняются СУПЕР БЫСТРО. Он отлично подходит для серверов сборки непрерывной интеграции (CI), где вам нужно создать сборку приложения и развернуть ее для тестировщиков. Очень приятно узнать, что Titanium поддерживает так много опций!

🚀 Попробуйте Титаниум Турбо! 🚀

Если вы хотите попробовать Turbo, вы можете создать новый проект, используя созданный мной шаблон:

Во-первых, убедитесь, что у вас уже установлен мобильный инструментарий (обзор см. в этом посте):

npm install -g @geek/mobile

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

mobile app:create my-app-name

ИЛИ… если вы хотите попробовать шаблон, который включает в себя многое из того, что вам уже нужно для сборки облачной CI, попробуйте следующее:

mobile app:create my-app-name @titanium/template-turbo-next

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

npm install

Теперь вы можете создать свое приложение так же, как и любой другой проект мобильного приложения Titanium, используя:

ti build --platform ios --liveview

— OR —

ti build --platform android --liveview

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

npm run build

Взгляните на Документацию Titanium CLI для сборки, если у вас есть какие-либо вопросы о других вариантах.

Вывод

Axway Titanium Alloy одновременно мощный и гибкий!

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

В прямом смысле! 😎

Воспользовавшись мощью Titanium, мы теперь можем создавать и развертывать приложенияиз облака! ☁️

🎉 Наслаждайтесь!! 🎉