Служить cordova.js удаленно в PhoneGap 3.x
С PhoneGap 2.x
Я смог быстро разрабатывать приложения, заставляя их извлекать новые активы с моего сервера на change
, а не повторно развертывать их на устройстве каждый раз.
Я мог бы включить cordova.js
и отправить его другим активам, и он отлично работал.
Мои фактические приложения PhoneGap были всего лишь оболочкой с window.location = "my/dev/server"
, пока мне не понадобилось распространять их, в какой момент я бы упаковал активы локально.
Я не могу сделать это с помощью 3.x
.: (
Я могу просмотреть нужный cordova.js
, но он требует " кучу других активов. Может быть, что-то, что упаковано с хрюкающим процессом?
Как именно эти активы (cordova.js + требуют дерева) упакованы? И как можно объединить их в один файл для удаленного доступа в среду разработки? <- an answer to these questions gets the bounty
Ответы
Ответ 1
Я не уверен, почему это не работает для вас на 3.x, но, безусловно, возможно перестроить JS файл и обслуживать его.
Как именно упакованы эти активы (кордова .js + требуется дерево)?
Перед тем, как они упакованы вместе, все они выложены в разных модулях (общие, exec, util, реализация на платформе и т.д.), а затем есть grunt script, который объединяет все вместе.
И как можно связать их в один файл для удаленного обслуживания в среде разработки?
Если все, что вы хотите сделать, это получить новую версию cordova.js, вы сможете скомпилировать все самостоятельно, загрузив источник JS и запустив grunt script самостоятельно.
Источник доступен здесь:
https://github.com/apache/cordova-js
Требуется, чтобы у вас были node.js, npm и grunt, но если вы этого не сделаете, инструкции находятся в readme.
Загрузите исходный код, затем запустите
grunt
в корневом каталоге, и вы должны найти "cordova.ios.js" в каталоге "pkg" вместе с теми же файлами для других платформ. Это должен быть "cordova.js", который вы ищете.
Я думаю, что это должно помочь вам, но если нет, не стесняйтесь спрашивать.
Ответ 2
Я не знаю, поможет ли это вам, но вот мое понимание кордовы 3.X:
- У вас есть ваш cordova.js в вашей папке /www.
- Вы добавляете свои плагины через CLI (пример: плагин cordova add org.apache.cordova.media)
- В ваших платформах/[платформа]/www/плагинах есть папка с необходимыми плагинами javascript.
- В папке /www есть также "cordova_plugins.js"
- В cordova.js, в строке 1321 (может зависеть от вашей версии 3.x) вы увидите функцию под названием "injectPluginScript", и в этой функции она вводит содержимое "cordova_plugins.js", которое импортирует плагины, необходимые в /www/plugins
Поэтому я думаю, что это может сработать, если вы импортируете кордова .js, cordova_plugins.js и папку плагинов.
Ответ 3
Для кого-то, кого это интересует, я создал script, который упаковывает все необходимые файлы cordova для Cordova 3.X, включая плагины в один файл, которые вы можете использовать со своей серверной части.
Испытано только в канавке 3.4.
Он поддерживает минификацию и добавление и подпись md5.
https://github.com/borisnieuwenhuis/cordovapackageplugins
Ответ 4
Посмотрите на Кордову-загрузчик, он компилирует их активы и серверы: https://github.com/andrewreedy/cordova-loader
Ответ 5
Наконец-то мне удалось упаковать cordova.js , включая плагины, в один JS файл платформы и заставить его работать. Теперь его можно обновить с 2.9 до 3.x, 4.x, просто заменив оригинальный cordova.js с 2.9.1 (и, естественно, обновив собственную часть). Надеюсь, это решает проблему. Я озадачен тем, почему cordova не предоставляет этого, но вместо этого полагается на динамически, включая эти файлы.
Надеюсь, что это полезно и спасает других 2 дня, которые я потратил на это.
#!/bin/bash
echo rm -r CordovaPseudoProject
rm -r CordovaPseudoProject
cordova create CordovaPseudoProject com.pseudo.CordovaPseudoProject CordovaPseudoProject
cd CordovaPseudoProject/
cordova platform add ios
cordova plugin add org.apache.cordova.device
cordova plugin add org.apache.cordova.device-motion
cordova plugin add org.apache.cordova.device-orientation
cordova plugin add org.apache.cordova.geolocation
cordova plugin add org.apache.cordova.camera
cordova plugin add org.apache.cordova.dialogs
cordova plugin add org.apache.cordova.vibration
cordova plugin add org.apache.cordova.console
cordova prepare
# concat all plugin files into a single file
IFS=$'\n' # make newlines the only separator
cd platforms/ios/www
## extract plugin files
grep '"file":' cordova_plugins.js | sed 's/.* "//g' | sed 's/",//g' > tmp_junk_tmpq
cat cordova_plugins.js > cat_plugins.js
for j in `cat tmp_junk_tmpq` ; do
echo "cat $j >>cat_plugins.js"
cat $j >> cat_plugins.js
done
rm tmp_junk_tmpq
# overwrite cordova_plugins.js with concatenated version
#echo cp cat_plugins.js cordova_plugins.js
#cp cat_plugins.js cordova_plugins.js
echo cat cordova.js cat_plugins.js to cordova_platform_complete.js
cat cordova.js cat_plugins.js > cordova_platform_complete.js
cd $CUR_WD
echo "CREATED CordovaPseudoProject/platforms/ios/www/cordova_platform_complete.js"