phonegap运行原理
用phonegap(现在名为cordova)来开发手机应用,给人的感觉,就是写了一些HTML5的网页,加上javascript,打包安装在手机上,然后就可以运行了,并且还能访问手机的各种功能和硬件,太神奇了吧,javascript有这么强大的魔力?我之前搞过许久的WEB开发,按我的认知,网页,以及里面的脚本,功能很弱,处处受到安全限制,比如javascript就有跨域访问的问题,甚至在有些浏览器里面,想用脚本来实现复制、粘贴都有困难。
那么,phonegap是如何做到用脚本就能访问手机硬件的呢?
这段时间,我在用phonegap来搞一个for android的小项目,以android为例来谈谈我的认识:
1、phonegap for android的工程,实质上是一个 android工程
用phonegap开发的网页、脚本,要放在android工程的\assets文件夹下,也就是说,它要依附在安卓工程上,打包、发布,就是一个完整的安卓APK。所以说,phonegap for android程序,本质上,也是一个安卓程序,充其量,是有点特殊的安卓程序而已。
对其他手机平台而言,phonegap也一样。比如用phonegap开发IOS应用,也要搭建IOS开发环境,将这些网页、脚本放到IOS工程里面去。所谓的跨平台,就是理论上,网页、脚本只写一份,然后复制、粘贴到各个平台的工程里面去而已。
2、android、IOS内置了一个浏览器(WebView),phonegap程序运行于此,phonegap针对不同的手机平台的WebView,做了封装和扩展,因此使得脚本和HTML5能访问手机硬件。
正如HTML只不过是一些简单的标记,但浏览器的解释、支持下,呈现出多姿多彩的炫丽效果一样,JS、HTML本身并没有多强大的能力,只是因为有WebView、手机平台支持,所以才能发挥出强大的效力。
3、phonegap只是一个接口,访问手机硬件,由手机平台负责,因此可以跨平台
phonegap就是一个中介。对开发人员,它提供了统一的API,以供调用,然后另一端,针对不同手机平台,开发了不同的包。我们开发时建立的phonegap,是要分不同手机平台,引用相应的jar包的。当然,这些包里面,我猜测是调用手机平台的各种API,以对各种手机进行各种访问,phonegap本身并不直接访问手机的。所以它能够跨平台。
也因此,理论上,我认为在访问手机硬件能力上,以phonegap这种混合模式,跟原生模式应该没有什么区别。
phonegap运行原理的更多相关文章
- (转)PhoneGap工作原理及需改进的地方
原文:http://mobile.51cto.com/web-330900.htm PhoneGap工作原理及需改进的地方 2012-04-18 16:42 佚名 网络整理 字号:T | T 目前开发 ...
- Nodejs的运行原理-科普篇
前言 Nodejs目前处境稍显尴尬,很多语言都已经拥有异步非阻塞的能力.阿里的思路是比较合适的,但是必须要注意,绝对不能让node做太多的业务逻辑,他只适合接收生成好的数据,然后或渲染后,或直接发送到 ...
- 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制
[原创]分布式之数据库和缓存双写一致性方案解析(三) 正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...
- iis6.0与asp.net的运行原理
这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...
- ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...
- ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framew ...
- 场景9 深入RAC运行原理
场景9 深入RAC运行原理 OPS(Oracle Parallel Server)通过磁盘的节点判定数据是否最新 —> Data Guard —> RAC(Real Ap ...
- Camel运行原理分析
Camel运行原理分析 以一个简单的例子说明一下camel的运行原理,例子本身很简单,目的就是将一个目录下的文件搬运到另一个文件夹,处理器只是将文件(限于文本文件)的内容打印到控制台,首先代码如下: ...
- Web程序的运行原理及流程(一)
自己做Web程序的开发也有两年多了 从最开始跟风学框架 到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来 我当时第一次做WEB项目看 ...
随机推荐
- C++为什么抓不到除0错“异常”?
http://blog.csdn.net/nanyu/article/details/6475555 有人问这个问题: try { std::cout << 10/0 << s ...
- 扩增子分析解读5物种注释 OTU表操作
本节课程,需要先完成<扩增子分析解读>系列之前的操作 1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 4去嵌合体 非细菌序列 ...
- python利用requests统计1个接口的响应时间
参照 https://www.cnblogs.com/yoyoketang/p/8035428.html requests统计接口的响应时间有2种方式 r.elapsed.total_seconds( ...
- [转]Js获取当前日期时间及其它操作
转载自:http://www.cnblogs.com/carekee/articles/1678041.html Js获取当前日期时间及其它操作 var myDate = new Date();myD ...
- 【转载】Java下利用Jackson进行JSON解析和序列化
参考资料: https://blog.csdn.net/sdut406/article/details/85647982 Java下常见的Json类库有Gson.JSON-lib和Jackson等,J ...
- git学习(2)----入门
一.git.github和gitlab的区别 Git诞生于2005年,大神Linus的作品,Github诞生于2008年,没有Git就没有GitHub,Github已成为全球最大的代(tong)码(x ...
- Linux学习笔记记录(六)
- nginx4win10 文件下载服务器
默认root是Nginx下目录html. 我们在其目录下新建download目录,然后在该目录下copy几个供下载的文件. 在浏览器输入http://localhost:9001/download/y ...
- String类的转换功能
/* * String类的转换功能 * char[] toCharArray():把字符串转换为字符数组 * String toLowerCase():把字符串转换为小写字符串 * String to ...
- 【Codeforces 442B】Andrey and Problem
[链接] 我是链接,点我呀:) [题意] n个朋友 第i个朋友帮你的概率是pi 现在问你恰好有一个朋友帮你的概率最大是多少 前提是你可以选择只问其中的某些朋友不用全问. [题解] 主要思路是逆向思维, ...