在PhoneGap 3.x中远程服务cordova.js

时间:2013-11-19 04:01:11

标签: javascript ios iphone cordova gruntjs

借助PhoneGap 2.x ,我可以快速开发应用,方法是在change上从我的服务器下载新资源,而不是每次都重新部署到设备

我可以包含cordova.js并将其与其他资产一起发送,效果很好。

我的实际PhoneGap应用只是一个包含 window.location = "my/dev/server" 的shell,直到我需要分发它们,此时我会在本地打包资产。

我似乎无法使用 3.x 执行此操作。 :(

我可以查看所需的cordova.js,但“需要”一堆其他资源。也许是一些充满咕噜声的过程?

这些资产(cordova.js +需要树)究竟是如何打包的?如何将它们捆绑到一个文件中以便在开发环境中远程服务? <- an answer to these questions gets the bounty

5 个答案:

答案 0 :(得分:5)

我不确定为什么它在3.x上不起作用,但绝对可以重新构建JS文件并提供服务。

  

这些资产(cordova.js +需要树)究竟是如何打包的?

在它们打包在一起之前,它们都是在不同的模块(普通,exec,util,特定于平台的实现等)中布局,然后有一个将所有内容打包在一起的grunt脚本。

  

如何将它们捆绑到一个文件中以便在开发环境中远程服务?

如果你想要的是获得新版本的cordova.js,你应该能够通过下载JS源代码并自己运行grunt脚本来自己压缩所有内容。

来源可在此处获得: https://github.com/apache/cordova-js

您需要安装node.js,npm和grunt,但如果不安装,请参阅自述文件。

下载源代码,然后运行

grunt

在根目录中,您应该在'pkg'目录中找到'cordova.ios.js',以及其他平台的相同文件。这应该是你正在寻找的'cordova.js'。

我认为这应该可以帮助你,但如果没有,请随意提问。

答案 1 :(得分:0)

我不知道这对你有帮助,但这是我对cordova 3.X的理解:

  • 您的/ www文件夹中有cordova.js
  • 您可以通过CLI添加插件(例如:cordova插件添加org.apache.cordova.media)
  • 您的平台/ [platform] / www / plugins中创建了一个文件夹,其中包含所需的javascript插件。
  • / www文件夹
  • 中还有'cordova_plugins.js'
  • 在cordova.js中,在1321行(可能取决于您的3.x版本),您将看到一个名为“injectPluginScript”的函数,在此函数中,它会注入'cordova_plugins.js'的内容, / www / plugins
  • 中需要的插件

所以我认为如果你导入cordova.js,cordova_plugins.js和plugins文件夹它可能会有效。

答案 2 :(得分:0)

对于任何仍然感兴趣的人,我创建了一个脚本,用于将Cordova 3.X所需的所有cordova文件打包,包括一个文件中的插件,您可以从服务器端提供这些文件。 仅在cordove 3.4中进行测试。

它支持缩小和添加以及md5签名。

https://github.com/borisnieuwenhuis/cordovapackageplugins

答案 3 :(得分:0)

查看Cordova Loader,它会编译资产并为其提供服务:https://github.com/andrewreedy/cordova-loader

答案 4 :(得分:0)

最后,我设法将cordova.js 包括插件打包到一个平台JS文件中并使其工作。现在可以通过从2.9.1替换原始cordova.js(并升级本机部分)从2.9升级到3.x,4.x。希望这能解决问题。我很困惑为什么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"