在移动应用开发领域,Apache Cordova是一个强大的开源框架,它允许开发者使用HTML5、CSS3和JavaScript等核心技术来创建可在多个平台上运行的移动应用。本文将探讨Apache Cordova的历史、混合应用与原生应用的区别,并指导如何使用Apache Cordova创建跨平台的混合移动应用。
Apache Cordova的前身名为PhoneGap,最初由Nitobi公司发起的开源项目。随着该项目吸引了IBM、Salesforce等大公司的众多贡献者,Adobe公司收购了Nitobi,并将PhoneGap代码捐赠给了Apache软件基金会进行孵化。在Apache软件基金会的孵化下,PhoneGap被重新命名为Apache Cordova,成为当前开发者贡献代码和参与开发的核心开源项目。
混合应用通常结合了HTML5、CSS3和JavaScript等核心Web技术构建。它们被嵌入在原生应用中,利用移动平台的WebView(可以理解为一个无边框的浏览器窗口,配置为全屏显示)。混合应用将HTML5应用嵌入到一个轻薄的原生容器中,结合了原生应用和HTML5应用的最佳(和最差)元素。Apache Cordova帮助Web和移动开发者为多个平台构建世界级的混合移动应用。
原生应用是专为目标移动操作系统开发的智能手机应用。例如,iOS平台使用Objective-C或Swift,Android平台使用Java,Windows平台使用.NET。一些知名的原生应用包括Facebook和Angry Birds。
根据以下标准特性,可以比较混合应用和原生应用。这个比较表将帮助Web/移动开发者快速决定是为他们的客户端选择原生应用还是混合应用。
根据Gartner的预测,到2016年,超过50%的部署移动应用将是混合应用。到2017年,25%的企业将拥有企业应用商店,用于管理PC和移动设备上的企业授权应用。Gartner的2013年移动应用开发平台魔力象限显示,Adobe的PhoneGap API或Apache Cordova是该领域的市场领导者。
Apache Cordova可以通过以下工作流程图来概念化。Apache Cordova应用使用与原生操作系统相同的WebView。以下是WebView类与相应平台的映射关系:
Apache Cordova项目的基本目录结构如下:
+ HelloWorld
+-- HelloWorld (包含Cordova项目的目录)
| +-- ... (Cordova目录和文件)
| +-- www (应用程序的目录。它是一个经典的Web目录。)
+-- node_modules (Nodejs模块目录)
+-- src (源代码目录)
| +-- html (HTML文件)
| +-- js (JavaScript程序)
+-- Gruntfile.js (Grunt的构建文件)
+-- packages.json (NodeJS安装所需文件)
以下是创建第一个混合移动应用的步骤,适用于Android和iOS平台。
$ cordova create myApp com.test.app.myApp HelloWorld
$ cd myApp
$ cordova platform add ios (添加iOS平台)
$ cordova platform add android (添加Android平台)
$ cordova build (默认选项,将构建所有可用平台)
$ cordova build ios/android (选择特定平台构建)
$ cordova prepare ios/android (选择特定平台准备)
$ cordova compile ios/android (选择特定平台编译)
$ cordova emulate android (在Android默认模拟器上模拟)
$ cordova emulate ios (在iOS默认模拟器上模拟)
$ cordova run android (在默认连接的Android设备上运行)
$ cordova run ios (在默认连接的iOS设备上运行)
Apache Cordova的工作流程如下:
assets/www/js/, css/, images/, 等等。
Extend a CordovaWebViewClient
super.loadUrl("file:///android_asset/www/LoginPage.html");
navigator.device.capture.captureImage(captureSuccess(), captureError(), [options]);