Как заставить Sencha Touch и Cordova работать вместе?
У меня есть приложение Sencha Touch, и я бы хотел добавить его в комплект поставки Cordova для Android, iOS и браузера.
Я пытаюсь около дня, чтобы заставить их работать вместе. Я могу получить версию на свое устройство, но каждый раз, когда я пытаюсь обновить ее новым кодом, что-то не работает. "Что-то не работает" означает одно из следующего: устройство показывает "3 точки смерти" (мигающие 3 белые точки на синем фоне) навсегда ИЛИ предупреждение в стиле браузера, в котором говорится, что app.js был обновлен, и я должен перезагрузить компьютер (с кнопки отмены / перезагрузки) ИЛИ оповещение в стиле сенчи о том, что приложение завершило обновление, и я хочу перезагрузить.
Я думаю, что корень проблемы в том, как работает Сенча (Cmd?) Или в том, как я не могу понять, что я делаю неправильно. Я, кажется, неправильно понимаю, в чем разница между "производством", "упаковкой" и "нативным". Я могу понять, почему обновления по беспроводной сети могут быть хорошими, но так как это локальное приложение, мне это не нужно. Я не хочу / не должен иметь папку "архив" в моем выходном каталоге, ни папку "deltas". И почему в папке "архив" есть дополнительные копии всех моих CSS? вырывая волосы
Итак, я предполагаю, что мой основной вопрос заключается в следующем: как заставить Sencha Touch просто создать законченное приложение, без беспроводных обновлений, дельт, архивов, запутанных подсказок при запуске или "трех точек смерти"?
В ожидании начала дискуссии я собираюсь продолжать и продолжать пробовать вещи и сообщать здесь все, что я могу найти.
Финальные заметки:
- Я использую свою собственную Cordova, а не команды Sencha "Sencha Cordova". Я достаточно запутался, но мне нужно попробовать?
- Одна из причин, по которой мне нужна "нормальная" сборка с одним большим Js-файлом без дельт или архивов, заключается в том, что я хочу отправить его после компиляции в службу запутывания (jscrambler). Не знаю, важно ли это.
- Это может быть не связано, но когда я обновляю существующую установку моего приложения на устройстве 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, подобного этому.