目前对于移动端、桌面端的原生开发各平台都有各自的开发语言、开发工具等。如果要开发出一个适配多个终端的系统,我们需要用各自的平台工具分别开发出各自的应用,这对于一个团队或者一个开发人员来说要求非常高,并且非常耗时。前一篇学习了Bootstrap框架,对于多终端的界面适配有了解决方案。但一个系统除了与用户之间的交互外,其内部还可能需要与硬件进行交互来实现某些特殊需求,比如摄像头的调用,相册的获取等等。对于这些硬件的调用我们可以选择Phonegap。
介绍
Phonegap是一个适配多个终端进行硬件交互的框架,我所使用的版本是phonegap-2.9.0,支持的平台有Android,Blackberry,IOS,Tizen,WinPhone7 and 8,win8.。当然某个特殊功能所支持的平台可能会有出入,具体的可参考官方文档。phonegap的官网是
http://phonegap.com/。
对于不同平台的支持,都需要搭建不同的初始环境,比如android需要导入相关的jar包,配置初始的XML,一旦这些环境配置好了,多个平台可通过访问同一个Html或者动态网页来实现与各平台的硬件交互。
环境搭建
官网下载phonegap-2.9.0,我是通过手动下载ZIP的方式下载的,解压。本篇所用例子的平台为android,其它平台的搭建类似。
将官网提供的例子..\phonegap-2.9.0\lib\android\example导入到eclipse即可。可看到其项目结构如下:
其中assets存放了实际调用硬件的JS代码,config.xml是配置文件。可通过config.xml来配置引入硬件调用的类库,程序的初始访问路径。
实例
..\phonegap-2.9.0\doc存放了phonegap的各种API的实例,具体可参考此文档。
比如你需要通过js调用android的摄像头,步骤需要如下:
1.AndroidManifest.xml 配置访问权限
<uses-permission android:name="android.permission.CAMERA" />
2.config.xml引入类库
<feature name="Camera">
<param name="android-package" value="org.apache.cordova.CameraLauncher"/>
</feature>
3.实际的js调用
总结
如果需要应用phonegap来开发系统,前提必须是各目标平台需要配置好基础环境。一旦基础环境有了之后就可进行统一的代码开发。
由于是跨平台的框架,并且通过了跨语言的调用,phonegap开发的应用程序的性能比起原生应用还是存在差距的,但对于普通的应用,正常的硬件基本可以忽略此差距。