在PhoneGap 3.x中远程提供cordova.js
Serve cordova.js remotely in PhoneGap 3.x
使用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"
- 我需要为我的朋友在这个项目上提供帮助
- Grunt-connect在根目录之外提供静态文件
- cordova-2.0.0.js不适用于使用phonegap的android
- ReferenceError: cordova is not defined @ng-cordova.min.js:7
- 如何提供在javascript中编写对对象的重复访问以设置元素样式的简写
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 文档就绪提供了错误的选择器高度
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- 为图像提供灯箱效果
- 在cordova android应用程序中连接数据库
- Cordova RSS馈送的链接不会在外部浏览器中打开
- 使用filetransfer/cordova插件上传一些文件
- 主线程上的同步XMLHttpRequest已弃用
- Cordova ng路线工作不正常
- 如果在代码末尾进行求值,jQuery-console.log将提供空数组
- Angular 1.5组件中的Angular Bootstrap Modal$uibModalInstance未知提供程
- Cordova应用程序在安卓系统上运行,但线程似乎在ios上冻结了;“由于页面加载而重置插件”;
- 浏览器会为iframe提供一个单独的JavaScript线程吗
- 在PhoneGap 3.x中远程提供cordova.js