Как заставить Sencha Touch и Cordova работать вместе?

У меня есть приложение Sencha Touch, и я бы хотел добавить его в комплект поставки Cordova для Android, iOS и браузера.

Я пытаюсь около дня, чтобы заставить их работать вместе. Я могу получить версию на свое устройство, но каждый раз, когда я пытаюсь обновить ее новым кодом, что-то не работает. "Что-то не работает" означает одно из следующего: устройство показывает "3 точки смерти" (мигающие 3 белые точки на синем фоне) навсегда ИЛИ предупреждение в стиле браузера, в котором говорится, что app.js был обновлен, и я должен перезагрузить компьютер (с кнопки отмены / перезагрузки) ИЛИ оповещение в стиле сенчи о том, что приложение завершило обновление, и я хочу перезагрузить.

Я думаю, что корень проблемы в том, как работает Сенча (Cmd?) Или в том, как я не могу понять, что я делаю неправильно. Я, кажется, неправильно понимаю, в чем разница между "производством", "упаковкой" и "нативным". Я могу понять, почему обновления по беспроводной сети могут быть хорошими, но так как это локальное приложение, мне это не нужно. Я не хочу / не должен иметь папку "архив" в моем выходном каталоге, ни папку "deltas". И почему в папке "архив" есть дополнительные копии всех моих CSS? вырывая волосы

Итак, я предполагаю, что мой основной вопрос заключается в следующем: как заставить Sencha Touch просто создать законченное приложение, без беспроводных обновлений, дельт, архивов, запутанных подсказок при запуске или "трех точек смерти"?

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

Финальные заметки:

  1. Я использую свою собственную Cordova, а не команды Sencha "Sencha Cordova". Я достаточно запутался, но мне нужно попробовать?
  2. Одна из причин, по которой мне нужна "нормальная" сборка с одним большим Js-файлом без дельт или архивов, заключается в том, что я хочу отправить его после компиляции в службу запутывания (jscrambler). Не знаю, важно ли это.
  3. Это может быть не связано, но когда я обновляю существующую установку моего приложения на устройстве Android, я получаю старую версию своего Javascript (даже если само приложение Android было обновлено, я могу сказать по номеру версии). Я где-то читал, что мне нужно удалить и добавить платформу Android из моего проекта Cordova перед компиляцией... почему?

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

Версии: Cordova -v = 5.3.3, Sencha Touch (zip) = 2.4.2, Sencha Cmd = 5.1.3.61, уровень Android API = 22, Mac OS X 10.10.5

2 ответа

Решение

Лучший способ справиться с этим - просто позволить Sencha CMD сделать свое дело. Это можно сделать другими способами, но я бы порекомендовал это после выяснения основ Sencha Touch и Cordova.

По сути, у вас есть проект ST, который вы можете создать в CMD.

sencha -sdk ~/path/to/touch-0.0.0 generate app MyApp ~/path/to/create/my-app

Затем вы делаете какую-то работу разработчика и хотите сделать сборку в Cordova.

sencha cordova init com.mydomain.myapp MyApp

Каталог Cordova добавлен в ваш проект и содержит..

cordova
    |_ hooks/
    |_ platforms/
    |_ plugins/
    |_ www/
    |_ config.xml

Так что просто объяснить немного, прежде чем двигаться вперед - когда вы бежите

sencha app build production 

вы получаете минимизированную версию вашего приложения (скомпилировано в my-app/build/production/MyApp) развертывается на веб-сервере, предназначенном для работы в качестве мобильного веб-сайта / веб-приложения.

Когда ты бежишь

sencha app build native

вы получаете почти ту же минимизированную кодовую базу, но она скомпилирована в my-app/cordova/www/,

Сборка Сенчи завершается с введением кода в www папка запускает сборку кордовы. Тогда содержимое www папка копируется в каждый platform/[os]/www каталог.

Если вы вносите какие-либо изменения в свой проект, относящиеся к сборке Cordova, вы можете сделать это в cordova/www папка (будьте осторожны, так как вы можете удалить изменения)

Нативная сборка Sencha CMD делает некоторые пользовательские вещи с index.html лучше сотрудничать с Сенчей, но для Кордовы это довольно нормально. Если вы CD в cordova вы можете запустить нормальный cordova [options] команды. Разница в том, что любые изменения в вашем проекте Sencha не копируются в проект Cordova.

# 1

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

# 2

Вам не нужно использовать сторонний инструмент, чтобы что-то делать с вашим JS, как это делается с помощью uglification в сборке.

# 3

Я могу ошибаться, но мое первое предположение в отдельном проекте Cordova, код платформы не обновляется, если вы не запустите

cordova build

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

РЕДАКТИРОВАТЬ Я использую iOS в моих примерах, но поменяйте местами с Android. Привычка:/

Рабочий процесс, который я обычно использую, состоит в том, чтобы иметь скрипт сборки (или вы можете использовать хук сборки Cordova), чтобы упаковать код приложения JS Sencha Touch с помощью Sencha cmd и скопировать результаты этого в папку www проекта Cordova до запуска сборки cordova.,

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

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