我在我的项目中使用了PG-SQLitePlugin-Android插件,它实际上只支持Phonegap 2.7.0.
我发现我可以通过调用它来强制Ripple使用2.7.0:
文件://localhost/Users/—-/—-/—-/www/index.html enableripple =科尔多瓦-2.7.0
在通过chrome访问文件系统后,Ripple实际上加载了很多.
当我在我的脚本中包含cordova-2.7.0.js时
index.html弹出一个弹出窗口,其中包含以下文本:
gap:[“Device”,”getDeviceInfo”,”Device119187522″]
我可以接受或取消,然后再出现2个对话框,如果我接受它会被绞死.
js控制台显示cordova 2.7.0真正运行:
Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. cordova-2.7.0.js:906
deviceready没有被解雇
当我在我的脚本中包含cordova-2.9.0.js时
它与2.7相同
Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. cordova-2.7.0.js:906
但这次我得到了其他错误
Failed to load resource file://localhost/Users/laullobetpayas/——-/—/——/www/cordova/cordova_plugins.json
Failed to load resource file://localhost/Users/——-/—/——/www/cordova/cordova_plugins.js
deviceready没有被解雇
当我的脚本中没有包含任何cordova.js时
sqlitePlugin.js:31
Uncaught ReferenceError: cordova is not defined sqlitePlugin.js:34
>我使用正确的插件吗?
>哪个是使用插件和纹波运行的cordova / device tu的正版版本?
>我是否必须在我的项目中包含cordova.js
Hel将是非常贬值的,很长一段时间我都试图解决这个问题.
先谢谢你.
解决方法
Ripple纯粹是基于Javascript的,所以插件的Javascript部分没有任何东西可以与之接口.
例如,在sqlitePlugin的情况下,调用sqlitePlugin.close()会导致调用:
cordova.exec(null,null,"sqlitePlugin","close",[this.dbname]);
其中sqlitePlugin是本机类名称,close是本机函数名称.
如果您想在Android,iOS和Ripple中使用相同的存储API,可以考虑将lawnchair与适当的适配器一起使用.
至于Ripple和Phonegap 2.7.0 / 2.9.0的问题,Ripple还没有完全赶上Phonegap,所以你会在控制台中获得这些弹出窗口和错误消息,但这不会阻止你的Phonegap应用程序(没有本机插件) )在Ripple中运行.您可以通过一个简单的测试用例来说服自己:
document.addEventListener("deviceready",function(){ alert("I'm alive"); });
但答案是,是的,你确实需要包含cordova.js才能在Ripple中完成所有工作.