本地数据库html5
① 怎样使用HTML5中的Web sql DataBase本地数据库增删改查
首先来看看怎样创建数据库:
1、创建数据库
var db = window.openDatabase("mydata", "1.0","数据库描述",20000);
//window.openDatabase("数据库名字", "版本","数据库描述",数据库大小);
if(db)
alert("新建数据库成功!");
2、怎样连接数据库
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE test (id int UNIQUE, mytitle TEXT, timestamp REAL)");
});
上面是新建数据表!本地数据库是通过db.transaction()函数来实现的,再看下面的代码吧!
插入记录:
db.transaction(function(tx) {
tx.executeSql("INSERT INTO test (mytitle, timestamp) values(?, ?)", ["WEB Database", new Date().getTime()], null, null);
});
更新记录:
db.transaction(function(tx) {
tx.executeSql("update test set mytitle=? where mytitle = 'fsafdsaf'",['xp'],null,null);
});
查询记录:
db.transaction(function(tx) {
tx.executeSql("SELECT * FROM test", [],
function(tx, result) {
for(var i = 0; i < result.rows.length; i++){
document.write('<b>' + result.rows.item(i)['mytitle'] + '</b><br />');
}
}, function(){
alert("error");
});
});
删除表:
db.transaction(function(tx) {
tx.executeSql("DROP TABLE test");
})
② html5本地存储更新数据库sql 怎么写
HTML5本地存储——Web SQL Database
在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数据就无能为力了,灵活大不够强大。
Web SQL Database
我们经常在数据库中处理大量结构化数据,html5引入Web SQL Database概念,它使用 SQL 来操纵客户端数据库的 API,这些 API 是异步的,规范中使用的方言是SQLlite,悲剧正是产生于此,Web SQL Database规范页面有着这样的声明
This document was on the W3C Recommendation track but specification work has stopped. The specification reached an impasse: all interested implementors have used the same SQL backend (Sqlite), but we need multiple independent implementations to proceed along a standardisation path.
大概意思就是
这个文档曾经在W3C推荐规范上,但规范工作已经停止了。目前已经陷入了一个僵局:目前的所有实现都是基于同一个SQL后端(SQLite),但是我们需要更多的独立实现来完成标准化。
也就是说这是一个废弃的标准了,虽然部分浏览器已经实现,但。。。。。。。
三个核心方法
但是我们学一下也没什么坏处,而且能和现在W3C力推的IndexedDB做比较,看看为什么要废弃这种方案。Web SQL Database 规范中定义的三个核心方法:
openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象
transaction:这个方法允许我们根据情况控制事务提交或回滚
executeSql:这个方法用于执行SQL 查询
openDatabase
我们可以使用这样简单的一条语句,创建或打开一个本地的数据库对象
var db = openDatabase('testDB', '1.0', 'Test DB', 2 * 1024 * 1024);
openDatabase接收五个参数:
数据库名字
数据库版本号
显示名字
数据库保存数据的大小(以字节为单位 )
回调函数(非必须)
如果提供了回调函数,回调函数用以调用 changeVersion() 函数,不管给定什么样的版本号,回调函数将把数据库的版本号设置为空。如果没有提供回调函数,则以给定的版本号创建数据库。
transaction
transaction方法用以处理事务,当一条语句执行失败的时候,整个事务回滚。方法有三个参数
包含事务内容的一个方法
执行成功回调函数(可选)
执行失败回调函数(可选)
db.transaction(function (context) {
context.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)');
context.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")');
context.executeSql('INSERT INTO testTable (id, name) VALUES (1, "Casper")');
context.executeSql('INSERT INTO testTable (id, name) VALUES (2, "Frank")');
});
这个例子中我们创建了一个table,并在表中插入三条数据,四条执行语句任何一条出现错误,整个事务都会回滚
executeSql
executeSql方法用以执行SQL语句,返回结果,方法有四个参数
查询字符串
用以替换查询字符串中问号的参数
执行成功回调函数(可选)
执行失败回调函数(可选)
在上面的例子中我们使用了插入语句,看个查询的例子
db.transaction(function (context) {
context.executeSql('SELECT * FROM testTable', [], function (context, results) {
var len = results.rows.length, i;
console.log('Got '+len+' rows.');
for (i = 0; i < len; i++){
console.log('id: '+results.rows.item(i).id);
console.log('name: '+results.rows.item(i).name);
}
});
完整示例
<!DOCTYPE HTML>
<html>
<head>
<title>Web SQL Database</title>
</head>
<body>
<script type="text/javascript">
var db = openDatabase('testDB', '1.0', 'Test DB', 2 * 1024 * 1024);
var msg;
db.transaction(function (context) {
context.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)');
context.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")');
context.executeSql('INSERT INTO testTable (id, name) VALUES (1, "Casper")');
context.executeSql('INSERT INTO testTable (id, name) VALUES (2, "Frank")');
});
db.transaction(function (context) {
context.executeSql('SELECT * FROM testTable', [], function (context, results) {
var len = results.rows.length, i;
console.log('Got '+len+' rows.');
for (i = 0; i < len; i++){
console.log('id: '+results.rows.item(i).id);
console.log('name: '+results.rows.item(i).name);
}
});
});
</script>
</body>
</html>
最后
由于Web SQL Database规范已经被废弃,原因说的很清楚,当前的SQL规范采用SQLite的SQL方言,而作为一个标准,这是不可接受的,每个浏览器都有自己的实现这还搞毛的标准。这样浏览器兼容性就不重要了,估计慢慢会被遗忘。不过Chrome的控制台真心好用啊,神马cookie、Local Storage、Session Storage、Web SQL、IndexedDB、Application Cache等html5新增内容看的一清二楚,免去了很多调试代码工作。
③ html5 可以打开本地数据库吗
不可以
数据库一般装在服务端,需要服务端语言,如php,asp等进行操作
再说html连接本地数据库也没什么用啊
④ HTML5怎么连接数据库
HTML5连接数据库分为以下几步:
预备知识:Web SQL Database,Html5环境下可以用Js执行CRUD的Web数据库组件。
核心方法如下:
1、openDatabase:这个方法使用现有数据库或创建新数据库创建数据库对象。
2、transaction:这个方法允许我们根据情况控制事务提交或回滚。
3、executeSql:这个方法用于执行真实的SQL查询。
第一步:打开连接并创建数据库
var dataBase = openDatabase("student", "1.0", "student", 1024 * 1024, function () { });
if (!dataBase) {
alert("数据库创建失败!");
} else {
alert("数据库创建成功!");
}
第二步:创建数据表
this.createTable=function() {
dataBase.transaction( function(tx) {
tx.executeSql(
"create table if not exists stu (id REAL UNIQUE, name TEXT)",
[],
function(tx,result){ alert('创建stu表成功'); },
function(tx, error){ alert('创建stu表失败:' + error.message);
});
});
}
第三步:执行增删改查
添加数据:
this.insert = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"insert into stu (id, name) values(?, ?)",
[id, '徐明祥'],
function () { alert('添加数据成功'); },
function (tx, error) { alert('添加数据失败: ' + error.message);
} );
});
⑤ html5,什么是本地存储什么是websql数据库存储
HTML5 :
将成为HTML、XHTML以及HTMLDOM的新标准。
HTML的上一个版本诞生于1999年。自从那以后,Web世界已经经历了巨变。
HTML5仍处于完善之中。然而,大部分现代浏览器已经具备了某些HTML5支持。
本地存储:
储存在用户本地终端上的数据,多数使用cookie
Cookie技术诞生以来,它就成了广大网络用户和Web开发人员争论的一个焦点。有一些网络用户,甚至包括一些资深的Web专家也对它的产生和推广感到不满,这并不是因为Cookie技术的功能太弱或其他技术性能上的原因,而是因为Cookie的使用对网络用户的隐私构成了危害。因为Cookie是由Web服务器保存在用户浏览器上的小文本文件,它包含有关用户的信息[2]。
websql数据库存储:
使用数据库进行数据存储,现在流行的数据库有:
1、Access一般用在小网站上,类似企业站,功能比较简单,对数据要求不高;
2、Mssql是一个比较大的完善的数据库,在windows上常用,配NETASP等程序。
3、Mysql是一个小型的公开源代码的免费数据库,在windows,linux上都常用,和PHP程序组成一对完美搭档。
⑥ 微信html5页面支持存本地数据库吗
微信内置浏览器对于html5的支持一般,也存在以下系列问题:
一. 安卓版微信直接调用系统浏览器内核, iOS则是调用safari, 所以要使用新特性, 只能升级系统了, 对于很多老系统, 新的特性是没法用的, 就连基本的canvas, toDataURL 在4.4 以下是不能导出 image/jpeg 格式的, 直接导出的 png格式, 往往非常大, 好几百K,。
二. localStorage等, 是可以用, 但是据说有微信退出之后就被清空的问题.
三. 据 Sencha 项目的调研显示, 目前最适合 HTML5 项目的是 iOS 平台,我亲测, 确实如此, 比如一个基本的css3 transition转换做的图片轮播, iOS上和原生应用基本没啥区别, 安卓上则是卡的出奇, 而且安卓在进行一些复杂计算的时候,往往很慢, 比如涉及canvas计算的操作
四. 不好调试, 安卓上的调试, 是装chrome beta 32版 app, 然后结合桌面chrome通过 USB 开启远程调试, 但是由于两者的 webkit 版本不同, 调试的结果往往不能作为最终参考依据. 说实话有时候有问题只能靠猜了(看你基本功扎实与否, 对css盒模型理解的彻底与否, 对js 的开发理解的深入与否,都能很大程度上提升你"猜对"的几率, 当然, 别忘了 try catch 和 alert, 会发现你现在真的是爱上它们了... 安卓上的另一种调试方式是通过 ADB 过滤控制台日志的方式, 可以追踪程序错误, 这个有些复杂,我还没试过. iOS 也是可以通过 safari进行远程调试的, 前提是需要在MAC上进行操作, 我没有MAC, 没试过。
五. 对于开发, 优雅降级与渐进增强将会是个很好的理念, 可以 try { 先进API} catch(e) { 老旧的实现方式} 这种方式, 确保在别人刷机到新ROM之后就还能用旧版实现方式,(事实上我没有搞, 真是复杂,很累了每天, 埋了颗雷, 我的4.1 在4.4将会爆掉, 别告诉我老板...)
六. 用网络目前可能还得不到很多有用的信息, 国内目前HTML5还处于炒概念的阶段, 很少有人做一些实打实的事情, 别告诉我谁用了什么API做了什么花出来了, 那些API都明摆在那里, 稍微有点编程常识的都能拿来用, 关键是一个实现, 其实是 一个API ,外加要修复9个bug, 这种方式来完成的, 只懂那一个 API, 是不够的,现在。
七. 程序运行速度与你脚本和css3使用量成反比, 与网速成正比. 所以, 少用脚本, 简化逻辑, 慎用css3, 压缩图片, 代码, 等等, 这些仍然很重要.
八. 会渐渐发现, 进入了另一个 ie6 的世界, 移动开发基本是webkit 的天下, 比如我现在, 就没考虑过 wp, 当然, 这也是基于公司的要求来的。
九. 有的人把 HTML5 理解为几个 背景渐变的圆角阴影按钮, 如果真是这样认为的话, 那他现在就可以开始开发了, 这些基本的支持, 还是有了的。
⑦ HTML5本地数据库存储数据代码相关问题
一个网站如何能在客户的浏览器存储更多的数据呢?
在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cookie的限制也就逼迫网站存储数据尽量精简,想存储复杂的、关系型的用户数据就根本不可能了。但是进入Html5时代,这一切都不叫事...
一、本地存储由来的背景
众所周知Html4时代Cookie的大小、格式、存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie。但是Cookie的这些限制,也就导致了Cookie只能存储一些ID之类的标识符等简单的数据,复杂的数据就更别扯了。
下面是Cookie的限制:
1, 大多数浏览器支持最大为 4096 字节的 Cookie。
2, 浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量。大多数浏览器只允许每个站点存储 20 个 Cookie;如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。
3, 有些浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制,通常为 300 个。
4, Cookie默认情况都会随着Http请求发送到后台服务器,但并不是所有请求都需要Cookie的,比如:js、css、图片等请求则不需要cookie。
(1)setItem(key,value):添加本地存储数据。两个参数,非常简单就不说了。
(2)getItem(key):通过key获取相应的Value。
(3)removeItem(key):通过key删除本地数据。
(4)clear():清空数据。
- <script type="text/javascript">
- //添加key-value 数据到 sessionStorage
- sessionStorage.setItem("demokey", "hek.com");
- //通过key来获取value
- var dt = sessionStorage.getItem("demokey");
- alert(dt);
- //清空所有的key-value数据。
- //sessionStorage.clear();
- alert(sessionStorage.length);
- </script>
(1)setItem(key,value):添加本地存储数据。两个参数,非常简单就不说了。
(2)getItem(key):通过key获取相应的Value。
(3)removeItem(key):通过key删除本地数据。
(4)clear():清空数据。
- <script type="text/javascript">
- //添加key-value 数据到 sessionStorage
- localStorage.setItem("demokey", "httpcom");
- //通过key来获取value
- var dt = localStorage.getItem("demokey");
- alert(dt);
- //清空所有的key-value数据。
- //localStorage.clear();
- alert(localStorage.length);
- </script>
第一步:openDatabase方法:创建一个访问数据库的对象。
第二步:使用第一步创建的数据库访问对象来执行transaction方法,通过此方法可以设置一个开启事务成功的事件响应方法,在事件响应方法中可以执行SQL.
第三步:通过executeSql方法执行查询,当然查询可以是:CRUD。
- //Demo:获取或者创建一个数据库,如果数据库不存在那么创建之
- var dataBase = openDatabase("student", "1.0", "学生表", 1024 * 1024, function () { });
1,数据库名称。
2,数据库的版本号,目前来说传个1.0就可以了,当然可以不填;
3,对数据库的描述。
4,设置分配的数据库的大小(单位是kb)。
5,回调函数(可省略)。
初次调用时创建数据库,以后就是建立连接了。
- ts.executeSql(sqlQuery,[value1,value2..],dataHandler,errorHandler)
qlQuery:需要具体执行的sql语句,可以是create、select、update、delete;
value1,value2..]:sql语句中所有使用到的参数的数组,在executeSql方法中,将s>语句中所要使用的参数先用“?”代替,然后依次将这些参数组成数组放在第二个参数中
ataHandler:执行成功是调用的回调函数,通过该函数可以获得查询结果集;
4,errorHandler:执行失败时调用的回调函数;
Html5的设计者们,一开始就为Html5能成为富客户端做好了准备。为了破解Cookie的一系列限制,Html5通过JS的新的API就能直接存储大量的数据到客户端浏览器,而且支持复杂的本地数据库,让JS简直就是逆天了。Html5支持两种的WebStorage,一种是永久性的本地存储(localStorage),另外一种是会话级别的本地存储(sessionStorage)。
二、会话级别的本地存储:sessionStorage
在Html5中增加了一个Js对象:sessionStorage;通过此对象可以直接操作存储在浏览器中的会话级别的WebStorage。存储在sessionStorage中的数据首先是Key-Value形式的,另外就是它跟浏览器当前会话相关,当会话结束后,数据会自动清除,跟未设置过期时间的Cookie类似。
sessionStorage提供了四个方法来辅助我们进行对本地存储做相关操作。
对于JS的学习和调试必须得有Chrome的调试工具辅助才能事半功倍。当然Chrome也是我最喜爱的Web开发辅助工具,非常简单F12快捷键就立即打开工具了,包括IE也是这个快捷键。通过下图就可以查看当前浏览器中的sessionStorage数据。
参考在线演示demo
三、永久本地存储:localStorage
在最新的JS的API中增加了localStorage对象,以便于用户存储永久存储的Web端的数据。而且数据不会随着Http请求发送到后台服务器,而且存储数据的大小机会不用考虑,因为在HTML5的标准中要求浏览器至少要支持到4MB.所以,这完全是颠覆了Cookie的限制,为Web应用在本地存储复杂的用户痕迹数据提供非常方便的技术支持。那接下里分别介绍一下localStorage的常用的方法,当然基本上跟sessionStorage是一致的。
localStorage提供了四个方法来辅助我们进行对本地存储做相关操作。
四、逆天了本地数据库
虽然Html5已经提供了功能强大的localStorage和sessionStorage,但是他们两个都只能提供存储简单数据结构的数据,对于复杂的Web应用的数据却无能为力。逆天的是Html5提供了一个浏览器端的数据库支持,允许我们直接通JS的API在浏览器端创建一个本地的数据库,而且支持标准的SQL的CRUD操作,让离线的Web应用更加方便的存储结构化的数据。接下里介绍一下本地数据的相关API和用法。
操作本地数据库的最基本的步骤是:
接下来分别介绍一下相关的方法的参数和用法。
(1)openDatabase方法:
openDatabase方法打开一个已经存在的数据库,如果数据库不存在,它还可以创建数据库。几个参数意义分别是:
(2)db.transaction方法可以设置一个回调函数,此函数可以接受一个参数就是我们开启的事务的对象。然后通过此对象可以进行执行Sql脚本,跟下面的步骤可以结合起来。
(3)通过executeSql方法执行查询。
参数说明:
⑧ html5 本地数据库 有什么用
在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数据就无能为力了,灵活大不够强大。
Web SQL Database
我们经常在数据库中处理大量结构化数据,html5引入Web SQL Database概念,它使用 SQL 来操纵客户端数据库的 API,这些 API 是异步的,规范中使用的方言是SQLlite,你假如感兴趣,可以来我的裙,一起学习交流下,同时也欢迎每一位大神,前面是二五七,中间是014,后面是001,组合起来就是了,非常欢迎真心久留学习的。
⑨ HTML5存储类型有什么区别
1.本地存储localstorage
存储方式:
以键值对(Key-Value)的方式存储,永久存储,永不失效,除非手动删除。
2.本地存储sessionstorage
HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存。
3.离线缓存(application cache)
本地缓存应用所需的文件
使用方法:
①配置manifest文件
4.Web SQL
关系数据库,通过SQL语句访问
Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。
5.IndexedDB
索引数据库 (IndexedDB) API(作为 HTML5 的一部分)对创建具有丰富本地存储数据的数据密集型的离线 HTML5 Web 应用程序很有用。同时它还有助于本地缓存数据,使传统在线 Web 应用程序(比如移动 Web 应用程序)能够更快地运行和响应。
⑩ 如何在android中使用html5的本地数据库
解决方案1:
通过将Apache Cordova或嵌入的WebView指向一个托管于互联网的网页来构建的app只能提供可怜的用户体验、分辨率。
HTML5支持跨平台,诸如 Intel XDK new IDE,HTML5使得处理这庞大而多样的Android设备队伍变得快速而简单。更添其复杂性的是分辨率范围从240×320跨到2560×1600。这类布局能良好运行, run any where(只写一次。这无疑让开发人员置身于一个尴尬境地,现在在平板电脑领域享有多数市场份额(53%),诸如摄像机和加速计,你要用最新最好的SDK,就放弃它开始关注新硬件了。这将允许你的app在异步更新时。
有了HTML5。
庞大的Android设备队伍
在Android设备运行的不同不仅仅是表面上的。它即时响应的能力很适合现在数不胜数的安卓设备屏幕尺寸,你的app将不能在2、Intel等制造。
好在HTML5提供一个更好的途径来处理尺寸大小的问题——用响应设计。让Android有如此热度的一部分因素是其多样性。你可以用强大的它来构建你的app。为了保持你的app以最快的速度响应,无视Android操作系统版本,原生Android SDK可能不会兼容什么特别设备。
大多数移动app从互联网服务器上加载和保存数据。你第一次用HTML5取代、CPU架构和操作系统版本等。
“服务员,根据OpenSignal对超过五十万台Android设备中,当然,小至三星的新齿轮智能手表,名为Gingerbread(姜饼2,从而使它能够在用户点击后就运行、Windows Phone等移动操作系统上,是它支持着大多数智能手机,没有标准的HTL5界面,这包括定义你的app图标,立即渲染其UI.1%).3 x)的版本依然占据着最大市场份额(34。一些交互编译器可以允许创建针对Android和iOS的app、iOS,HTML5应用通常托管于Apache Cordova (aka PhoneGap)内;值存储,是出了名地衰,还要你的app在没有服务器端生成HTML的情况下工作、加载屏幕和提供JavaScript来访问原生操作系统硬件。制造商发布设备。为获得接近于原生的速度、CSS和JavaScript上提供一种美妙的体验。
要访问原生操作系统功能,在更小的屏幕上缩小或消除那些并不重要的元素。一方面.0 SDK(冰淇淋三明治)开发app。如果你的app每次都需要用户通过点击一些东西来下载用户界面;而依据Canalys的调研。
HTML5应用绝对需要被安装到设备上,深度嵌套的HTML表格。因此,你不用再纠结于选择。
Android SDK是操作系统特定的!
结论
HTML5允许你写一次应用程序并快速部署它到几乎现有的每个操作系统。几乎每个用户都有一个的Android设备的尺寸和形状,另一方面。
当如此多样的设备让用户欢喜时,即便是重新调整屏幕.ASPX或PHP来开启一个新项目将需要十足的信仰之外。不幸,如果你想要依据用户需求滚动到视图中查看app?Android同样满足你。
移植到其它平台
Java的愿景是“write once,哪儿都能跑)”,还支持网页。也就是说、MediaTek,带有尽可能少的嵌套级别标签。
在诸如Android,想要一个13英寸带可拆卸键盘的平板电脑、文件系统IO甚至通过地理定位访问GPS的强大APIs。
HTML5提供APIs来做很多通常被认为是原生操作系统功能的事情,任何Android设备的心脏部分都是CPU由Qualcomm。HTML5包含对于键/。
HTML的复杂性使得关于渲染你的用户界面需要多少CPU cycles有了很大不同,大至13英寸或更大的平板电脑,出于种种原因,最好是保持你的HTML尽可能地结构简单化。
当响应设计正确完成时,这是在任何操作系统上解决屏幕尺寸/,用户就对跨平台的app有了流畅的体验、PowerVR、NVidia,它也为开发人员带来了不少头疼的麻烦。幸运的是。响应设计是由CSS Media Queries所增强的简单结构的HTML在更大的屏幕利用更多的空间。屏幕尺寸.3(姜饼)上运行,你可能得用线形布局或网格视图,如果它们是被精心无误地制作处理的。
各种形状和大小
Android设备有着各种尺寸,你将要在本地存储一个缓存数据并异步刷新你的数据,但只有HTML5能在移动操作系统和互联网浏览器上运行,你所有的HTML5,如果你用4,我的冻酸奶里面有果冻豆”
Android初次广泛登台是在2009年,这为Android开发人员营造了挑战、JavaScript和CSS都必须安装在本地设备上,你要app得到尽可能多的下载,都会为开发人员创建原生Android app带来挑战,你可以在Android使用HTML开放式架构。举个例子说,一般只对操作系统更新一两次,Apache Cordova充当将你的HTML5联系到原生操作系统的角色。
要解决这个问题;分辨率问题的最好办法。凭借大量可用的工具。取决于你的app需要用到哪个操作系统的特性,这是不可能满足他们“即时响应”的期望的。
开启你的浏览器
HTML5应用的性能可以无限接近于原生性能。 Apache Cordova framework提供一个界面让你的app在任何设备上访问原生操作系统资源,Android是全球最受欢迎的移动操作系统