最近手头上有个项目,需要使用到移动跨平台技术。在网络上搜罗了一下,发现有两个比较好的跨平台开发工具。
1、Cordova/PhoneGap
这两个其实是同一个项目,PhoneGap有部分的核心代码放到了Apache基金会开源,于是改名为Cordova。但PhoneGap依然是有团队继续开发。所以现在同时存在这两个项目。
Phonegap网址: http://phonegap.com/
2、Corona
游戏开发跨平台工具,主要用于游戏开发或者对性能要求比较高的应用也适合使用,只是暂时不支持windows8。
Corona 网址: http://www.coronalabs.com/
翻看了一下这两个工具的文档,都是英文的,看的偶眼花缭乱。对本地存储比较好的是Phonegap,支持Android、IOS上的websql,而windows8上支持indexedDB。由于w3c力推indexedDB,以后会放弃websql,于是我依然选择indexedDB作为本地存储的数据库。
但是Phonegap只支持Android、IOS上的websql,这个该怎么办呢?
答案是写一个中间适配的层,上层应用调用的是indexedDB的接口,通过这个中间层适配,在Android、IOS上下层会调用websql,而在windows8上调用的是indexedDB。这样不就解决了问题了吗。
为了避免重复制造轮子,我先google了一番,发现居然还真有人和我的想法一样,是个老外写的js库:IndexedDBShim.js 。我把它下载下来测试了一下,出来了一大堆问题,使用不了,其中一个最大的问题就是:
SECURITY_ERR: DOM Exception 18
出错地方是函数function openDB(oldVersion)中的这一句:
var db = window.openDatabase(name, 1, name, DEFAULT_DB_SIZE);
我们可以把该函数修改成Phonegap的接口调用方式,代码如下:
function openDB(oldVersion){
document.addEventListener("deviceready", onDeviceReady_db, false);
function onDeviceReady_db() {
var db = window.openDatabase(name, 1, name, DEFAULT_DB_SIZE);
req.readyState = "done";
if (typeof version === "undefined") {
version = oldVersion || 1;
}
if (version <= 0 || oldVersion > version) {
idbModules.util.throwDOMException(0, "An attempt was made to open a database using a lower version than the existing version.", version);
}
db.transaction(function(tx){
tx.executeSql("CREATE TABLE IF NOT EXISTS __sys__ (name VARCHAR(255), keyPath VARCHAR(255), autoInc BOOLEAN, indexList BLOB)", [], function(){
tx.executeSql("SELECT * FROM __sys__", [], function(tx, data){
var e = idbModules.Event("success");
req.source = req.result = new idbModules.IDBDatabase(db, name, version, data);
if (oldVersion < version) {
// DB Upgrade in progress
sysdb.transaction(function(systx){
systx.executeSql("UPDATE dbVersions set version = ? where name = ?", [version, name], function(){
var e = idbModules.Event("upgradeneeded");
e.oldVersion = oldVersion;
e.newVersion = version;
req.transaction = req.result.__versionTransaction = new idbModules.IDBTransaction([], 2, req.source);
idbModules.util.callback("onupgradeneeded", req, e, function(){
var e = idbModules.Event("success");
idbModules.util.callback("onsuccess", req, e);
});
}, dbCreateError);
}, dbCreateError);
} else {
idbModules.util.callback("onsuccess", req, e);
}
}, dbCreateError);
}, dbCreateError);
}, dbCreateError);
}
}
我写了一些测试代码,无非就是简单的增删查改。测试都顺利通过了。整个项目的代码我作为附件上传了,自己在下面下载吧。是在Android平台下,Eclipse开发工具的。要运行查看只需要到Android的开发官网下载ADT,打开项目就可以查看到运行结果了。
- YSSS.7z (1.5 MB)
- 描述: indexedDB跨平台框架
- 下载次数: 22
分享到:
相关推荐
1. **Android SDK集成**:开发者使用了Android Studio进行开发,集成Google的Android SDK,确保应用能在不同版本的Android系统上运行。 2. **即时通讯协议**:可能采用了XMPP(Extensible Messaging and Presence ...
PhoneGap的核心理念是利用Web技术实现与移动设备硬件的交互,而无需深入学习各种平台的原生开发语言,如Objective-C(iOS)、Java(Android)或C#(Windows Phone)。以下将详细介绍PhoneGap API中的各个功能模块...
PhoneGap是一个开源的开发框架,允许开发者使用HTML、CSS和JavaScript来编写应用,并将这些应用封装成可以在Android、iOS、Windows Phone等平台原生运行的移动应用。使用PhoneGap的优势在于,开发者不必分别学习各个...
在移动开发领域,手机网页制作是一项至关重要的技能,尤其在Android、iPhone和Windows Phone等主流移动平台上。这些平台上的用户通常通过浏览器访问网页,因此,为这些设备优化的网页设计和开发是提升用户体验的关键...
它们共同为ios , android , windows和browser平台启用IndexedDB支持。 安装 通过安装。 对于Cordova CLI 4.x ,请使用GIT URL语法: cordova plugin add ...
通过编写一次代码,可以在多个操作系统上运行,包括Android、iOS、Windows Phone等。 2. **Android环境配置** 开始PhoneGap开发前,需要先配置Android开发环境,包括安装Java Development Kit (JDK)、Android SDK...
PhoneGap的核心理念是“Write Once, Run Everywhere”(一次编写,到处运行),它将Web应用封装成原生的移动应用,可以在各大移动操作系统(如iOS、Android、Windows Phone等)上运行,极大地减少了开发成本和时间。...
1. **跨平台能力**:JavaScript与HTML5和CSS一起,构建了Web应用程序的基础,使得开发者能够创建可在多个移动操作系统(如iOS、Android、Windows Phone等)上运行的应用,无需为每个平台编写单独的代码。 2. **响应...
CoughDrop-应该听到每个声音 CoughDrop是一个基于Web的开放式AAC(增强和替代通信)应用程序。 基本上,如果人们由于某种... 它应该可以在Windows,Mac,ChromeOS,iOS和Android上运行,也可以打包为应用商店使用。
PhoneGap是一种开源框架,它允许开发者使用HTML5、CSS3和JavaScript来构建原生的移动应用程序,这些应用程序可以在iOS、Android、Windows Phone等平台上运行。这个"phoneGap实例"是针对初学者的一个资源集合,提供了...
Author Marc Rochkind takes you through a hands-on, objective tour of Chrome Apps, which run on any platform that supports the Chrome browser—including OS X, Windows, Linux, as well as Android and iOS....
它将立即在 iOS 和 Android 设备(手机和平板电脑)的主屏幕上运行,并且将来应该可以在 windows phone、firefoxOS 和其他智能手机操作系统上运行。 表单、页面和数据都将通过特定于设备的本地存储形式...
10. **跨平台兼容**:除了主流的Android和iOS,还应测试在其他操作系统上的表现,如Windows Phone或某些特定的浏览器环境。 以上就是关于“仿手机通讯录右侧导航”项目的关键知识点,这些技术和设计原则是构建一个...
10. **跨平台兼容**:浏览器需要在不同的操作系统和设备上运行,如Windows、macOS、Linux、iOS和Android,因此需要考虑多平台适配和性能优化。 案例九可能提供了关于实现这些功能的具体步骤、示例代码或常见问题的...
PouchDB 支持: 平台支持的版本安卓4+ IOS 7+ 视窗电话8+ 火狐操作系统全部黑莓10+ 不支持 Android 2.3 和 Windows Phone 7。SQLite 插件Cordova 提供了一个类似 WebSQL 的 API,可以直接访问本机应用程序使用的...
8. **跨平台兼容性**:如果计时器是作为应用程序开发,那么需要考虑它在不同操作系统(如Windows、macOS、iOS和Android)上的表现。这可能涉及到使用跨平台框架(如React Native、Flutter或Electron)。 9. **性能...
可以结合其他技术,如 AJAX 进行数据异步加载,使用 Web Storage 或 IndexedDB 存储用户数据,或者利用 Cordova/PhoneGap 将应用打包成原生应用。 ### 5. 性能优化 - **延迟绑定(Delegated Events)**: 由于 ...
9. 跨平台:HTML5小游戏的一大优势是跨平台性,它们可以在任何支持HTML5的浏览器上运行,包括iOS、Android、Windows等不同操作系统。 10. 分享与推广:微信朋友圈内的HTML5小游戏可以通过一键分享功能迅速扩散,...