PhoneGap是主流的跨平台移动应用程序开发平台之一。
利用PhoneGap可以快速开发覆盖所有主流智能手机的应用程序。写一次,多个平台运行。
其基本策略是使用WEB编程技术(HTML5/CSS/JS),把应用程序构建在html控件中,
利用额外的javascript封装包屏蔽底层平台的接口差别,对开发者提供统一的JS接口,从而实现跨平台的特性。
当然要实现跨平台,也会牺牲一些本地应用的功能以及性能。
技术取舍最终取决于手机平台和浏览器技术的发展和具体的业务应用场景。
本文以Android平台为例,简单介绍这个平台是如何工作的。
1、代码结构
- src
- assets
- www
- index.html
- main.js
- pg*.css
- phonegap-*.js
- bin
- libs
a)src目录包含了工程的java源代码,用户自定义的程序YourAppActivity主活动派生自DroidGap,其代表了PhoneGap Android应用程序。
DroidGap最重要的成员变量是WebView控件,可以理解为PhoneGap的应用程序的宿主。HTML代码就依赖于WebView来解析和呈现。
b)www目录包含了程序的主页面index.html,该页面在程序启动时被加载。phonegap*.js就是PhoneGap的JS对设备本地功能如Contacts、Campass、Camera等的封装包。main.js是处理主页面用户请求的js脚本。*.css用来控制样式。
c)bin目录包含了应用程序经PhoneGap编译后的输出
d)libs包含了PhoneGap java实现库。
2、处理流程
程序开始的时候触发loadUrl服务,加载应用程序主页面index.html;
当用户在页面中操作时,比如下面的代码片断是想获取本地通讯录:
<div data-role="button" onclick="get_contacts();">Get Phone's Contacts</div>
将触发main.js中的get_contacts函数,该函数将执行PhoneGap.exec(...)命令主入口,该命令以gap:的格式开头:
PhoneGap.exec(successCB, errorCB, "Contacts", "search", [fields, options]);
其中Contacts是Plugin,search是作用于该Plugin上面的动作。
exec函数将调用javascript的prompt函数,最终触发DroidGap包中(WebView)的onJsPrompt侦听器,
在侦听函数中派发给Contacts插件处理该动作。
最终返回处理结果,并呈现。
regards,
iefreer