Изучение возможностей и расширяемости 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, мы теперь можем создавать и развертывать приложенияиз облака! ☁️