Служить 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

Ответ 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"