如何在Ripple中使用Sqlite运行PhoneGap应用程序?

如何在Ripple中使用Sqlite运行PhoneGap应用程序?,sqlite,cordova,phonegap-plugins,ripple,Sqlite,Cordova,Phonegap Plugins,Ripple,我有一个phongap应用程序,带有一个sqlite插件,可以在android和iphone上运行。当我尝试在Ripple中运行它时,根据cordova版本和我使用的设备的不同,会出现一些错误。他们中没有一个人在工作。在stackoverflow的一些评论中,我看到人们在ripple下的phonegap中运行sqlite 我在我的项目中使用这个插件,它实际上只支持Phonegap 2.7.0+ 我发现我可以通过以下方式强制Ripple使用2.7.0: file://localhost/Users

我有一个phongap应用程序,带有一个sqlite插件,可以在android和iphone上运行。当我尝试在Ripple中运行它时,根据cordova版本和我使用的设备的不同,会出现一些错误。他们中没有一个人在工作。在stackoverflow的一些评论中,我看到人们在ripple下的phonegap中运行sqlite

我在我的项目中使用这个插件,它实际上只支持Phonegap 2.7.0+

我发现我可以通过以下方式强制Ripple使用2.7.0:

file://localhost/Users/----/----/----/www/index.html?enableripple=cordova-2.7.0

Ripple在启用了通过chrome访问文件系统后,实际上负载非常大

当我在脚本中包含cordova-2.7.0.js时

index.html会弹出一个带有以下文本的弹出窗口:

间隙:[“设备”、“获取设备信息”、“设备119187522”]

我可以接受或取消,然后再出现两个对话框,如果我接受它就会被挂起

js控制台显示cordova 2.7.0正在真正运行:

正在返回提示模式,因为缺少_cordovanive。仅适用于Android 3.2及更低版本。cordova-2.7.0.js:906

DeviceRady没有被触发

当我在脚本中包含cordova-2.9.0.js时

其发生方式与2.7相同

正在返回提示模式,因为缺少_cordovanive。仅适用于Android 3.2及更低版本。cordova-2.7.0.js:906

但这一次我得到了其他的错误

无法加载资源file://localhost/Users/laullobetpayas/-------/---/------/www/cordova/cordova_plugins.json 无法加载资源file://localhost/Users/-------/---/------/www/cordova/cordova_plugins.js

DeviceRady没有被触发

当我的脚本中不包含任何cordova.js时

SQLitePlugin.js:31 未捕获引用错误:未定义cordova SQLitePlugin.js:34

  • 我是否使用了正确的插件
  • 哪个版本的cordova/device tu与插件和ripple一起运行
  • 我必须在我的项目中包含cordova.js吗
他会非常感激的,我一直在努力解决这个问题。
感谢您的高级支持。

Phonegap插件不能与Ripple一起使用,因为Phonegap插件的思想是它提供了一个Javascript接口来执行本机代码。这意味着,在Android的情况下,Javascript将调用本机Java代码,在iOS的情况下,Javascript将调用本机Objective-C

Ripple完全基于Javascript,因此插件的Javascript部分没有任何接口

例如,在SQLitePlugin的情况下,调用
SQLitePlugin.close()
会导致调用:

cordova.exec(null, null, "SQLitePlugin", "close", [this.dbname]);
其中,
SQLitePlugin
是本机类名,
close
是本机函数名

如果您想在Android、iOS和涟漪上使用相同的存储API,可以考虑使用合适的适配器。 至于Ripple和Phonegap 2.7.0/2.9.0的问题,Ripple还没有完全赶上Phonegap,因此您会在控制台中看到这些弹出窗口和错误消息,但这不会阻止您的Phonegap应用程序(没有本机插件)在Ripple中运行。您可以通过一个简单的测试用例来说服自己:

document.addEventListener("deviceready", function(){
  alert("I'm alive");
});
但是答案是,是的,你确实需要包含cordova.js,这样它才能在Ripple中工作。

这是HTML5 SQL API的替代品,所以当在Ripple中运行时,你不需要调用cordova层,你只需要用window.openDatabase()替换对sqlitePlugin.openDatabase()的调用即可。我还没有用Ripple测试过,但它应该可以工作。有一些数据库大小限制,但这可能是测试所需的全部


这里有一个测试,如果你的内部科尔多瓦。您可以在应用程序启动时对Cordova进行测试的基础上,为openDatabase()方法创建一个垫片。

因为您的主要目标是使用Cordova对SQLite进行快速测试(而不是专门使用Ripple),所以我想建议使用Ripple的另一个新替代方案

我编写了一个应用程序调用,它可以用于Cordova/HTML5应用程序的快速开发,只需更新开发计算机上的文件,您就可以在移动设备上实时编辑和调试HTML/JS/CSS代码,这样您就可以跳过大多数重新编译/重新部署/重新启动调试器的时间开销。它还有很多其他很酷的功能。我自己用它来测试SQLite应用程序,而不是Ripple或Weinre

它基于Adobe PhoneGap开发者应用程序的代码,因此核心代码经过了良好测试。它被广泛地改编和调整为Sench Touch框架,尽管它也适用于jQuery Mobile或任何将HTML5代码放在
phonegap/www
cordova/www
文件夹下的框架。只需在PhoneGap或Cordova项目文件夹中启动服务器

为了测试SQL和控制器逻辑,我建议将emulator与Android 4.4.x KitKat版本一起使用。在桌面上启动最新版本的Chrome,一旦你的应用程序在emulator或real device上运行,就可以打开
chrome://inspect
现在,您可以在远程设备应用程序上使用完整的Chrome调试器。您还可以使用最新版本的Safari进行OSX/iPhone模拟器测试

你可以在这里观看演示(从5分钟开始)。对它需要一个更精致、回声更少的视频,但你会想到:


第二种方法在Ripple中对我有效。其他方法不适用于模拟器。