在PhoneGap 3.x中远程提供cordova.js

Serve cordova.js remotely in PhoneGap 3.x

本文关键字:程提供 cordova js PhoneGap      更新时间:2023-09-26

使用PhoneGap2.x我能够快速开发应用程序,方法是让它们从change上的服务器中提取新资产,而不是每次都重新部署到设备上。

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

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

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

我可以查看所需的cordova.js,但它"需要"一堆其他资产。也许是一个充满咕哝过程的东西?

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

我不确定为什么它在3.x上不适用,但肯定可以重新构建JS文件并提供它。

这些资产(cordova.js+require tree)究竟是如何打包的?

在将它们打包在一起之前,它们都部署在不同的模块中(common、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:的理解

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

对于任何仍然感兴趣的人,我创建了一个脚本,将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"