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

标签 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 :

file://localhost/Users/----/----/----/www/index.html?enableripple=cordova-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

  • 我使用的插件是否正确?
  • 使用插件和 ripple 运行的 cordova/设备的正确版本是什么?
  • 我是否必须在我的项目中包含 cordova.js

Hel 将不胜感激,很长一段时间以来,我一直在努力解决这个问题。 先谢谢你。

最佳答案

Phonegap 插件不适用于 Ripple,因为 Phonegap 插件的理念是它提供 Javascript 接口(interface)以执行 native 代码。这意味着,在 Android 的情况下,Javascript 将调用 native Java 代码,而在 iOS 的情况下,Javascript 将调用 native Objective-C。

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

例如,对于 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 还没有完全 catch Phonegap,所以您会在控制台中看到这些弹出窗口和错误消息,但这不会停止您的 Phonegap 应用程序(没有 native 插件)在 Ripple 中运行。您可以通过一个简单的测试用例让自己相信这一点,例如:

document.addEventListener("deviceready", function(){
  alert("I'm alive");
});

但答案是,是的,您确实需要包含 cordova.js 才能使其在 Ripple 中正常工作。

关于sqlite - 如何在 Ripple 中使用 Sqlite 运行 PhoneGap 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236348/

相关文章:

ios - 设置 iPhone 模拟器目录和 Xcode 派生数据目录

安卓 : Insert multiple rows into sqlite database not working

android - 在 ionic android 平台中放置插页式广告的正确方法

android - 无法从其他域访问php文件

cordova - Facebook Connect 与 PhoneGap Build - ReferenceError : Can't find variable: facebookConnectPlugin

ios - 带有 subselect 语句的 SQL 的 SQLite 列名现在以表名作为列名的前缀

python - SQLite3/ python : Results differ when selecting from VIEW instead of TABLE

android - 后台 Phonegap android 应用程序 cpu 使用情况

ios - 如何通过 Apache Cordova 实时重新加载使用 ES6/ES2015?

android - 2015 年哪个 Android/iPhone 跨平台框架?