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

时间:2013-08-14 15:46:00

标签: sqlite cordova phonegap-plugins ripple

我有一个带有sqlite插件的phongap应用程序,可在android和iphone中运行。当我尝试在Ripple中运行它时,我会得到几个错误,具体取决于我使用的cordova版本和设备。他们中的任何人都没有工作。在stackoverflow的一些评论中,我看到人们在涟漪下的phonegap中运行sqlite。

我在我的项目中使用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弹出一个弹出窗口,其中包含以下文字:

  

间隙: “设备”, “getDeviceInfo”, “Device119187522”]

我可以接受或取消,然后再出现2个对话框,如果我接受它会被绞死。

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

  

由于缺少_cordovaNative,因此退回PROMPT模式。预计仅适用于Android 3.2及更低版本。科尔多瓦-2.7.0.js:906

deviceready未被解雇

当我在我的剧本中包含cordova-2.9.0.js

它与2.7

相同
  

由于缺少_cordovaNative,因此退回PROMPT模式。预计仅适用于Android 3.2及更低版本。科尔多瓦-2.7.0.js:906

但这次我得到了其他错误

  

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

deviceready未被解雇

我的脚本中没有包含任何cordova.js

  

SQLitePlugin.js:31   未捕获的ReferenceError:cordova未定义SQLitePlugin.js:34

  • 我使用的是正确的插件吗?
  • 这是使用插件和纹波运行的cordova / device tu的适当版本吗?
  • 我是否必须在我的项目中包含cordova.js

Hel会非常贬值,很长一段时间我都试图解决这个问题。 先谢谢你。

3 个答案:

答案 0 :(得分:6)

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 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中使用它。

答案 1 :(得分:2)

Cordova-SQLitePlugin是HTML5 SQL API的替代品,因此当在Ripple中运行时,您不需要调用Cordova层,只需用窗口替换对sqlitePlugin.openDatabase()的调用即可。的openDatabase()。我还没有用Ripple测试它,但它应该工作。有一些数据库大小限制,但这可能只是您测试所需的全部内容。

several ways来测试你的内部Cordova。您可以根据应用启动时对Cordova的测试为openDatabase()方法创建一个垫片。

答案 2 :(得分:0)

由于您的主要目标是使用Cordova快速测试SQLite(而不是专门使用Ripple),我想建议使用Ripple的另一种新选择。

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

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

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

您可以在这里观看演示(从5分钟开始)。是!它需要一个更精美的视频,回声越少,但你会明白这一点: