繁体   English   中英

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

[英]Serve cordova.js remotely in PhoneGap 3.x

使用PhoneGap 2.x我可以通过使应用程序在change从服务器上拉下新资产来快速开发应用程序,而不必每次都重新部署到设备上。

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

我实际的PhoneGap应用程序只是一个具有window.location = "my/dev/server"的外壳,直到需要分发它们为止,此时我会将资产打包在本地。

我似乎无法使用3.x做到这一点。 :(

我可以查看所需的cordova.js但它“需要”很多其他资产。 也许是充满咕gr声的过程?

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

我不确定为什么它在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”。

我认为这应该对您有所帮助,但如果没有,请随时提出。

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

  • 您的/ www文件夹中有cordova.js
  • 您可以通过CLI添加插件(例如:cordova plugin add org.apache.cordova.media)
  • 在您的platform / [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文件夹可能会起作用。

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

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

https://github.com/borisnieuwenhuis/cordovapackageplugins

查看Cordova Loader,它可以编译资产并将其存储在服务器中: https : //github.com/andrewreedy/cordova-loader

最终,我设法将包括插件的 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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM