概述
Cordova开发的相关源码可以从官网下载 http://cordova.apache.org/,内容为一个压缩包,包括cordova的各个模块。

PhoneGap & Cordova
PhoneGap 3.0 的变化
将cordova原先的官方核心插件剥离出来与自定义插件处于同一层次。新插件架构所带来的好处是可以让应用更小更快,只需要加载所需要的API。

Development Paths
- Cross-platform workflow Use this workflow if you want your app to run on as many different mobile operating systems as possible, with little need for platform-specific development. 一般采用这种方式开发。
- Platform-centered workflow Use this workflow if you want to focus on building an app for a single platform and need to be able to modify it at a lower level. 平台相关的工具包在这里下载。
Setup
- 下载和安装 Node.js
- 下载安装 git client
安装 cordova
$ sudo npm install -g cordova
Quick Start
Create the App
$ cordova create hello com.example.hello HelloWorld
其中:
- hello 目录名称
- com.example.hello 保存在
config.xml 中,应用的唯一标识。 - HelloWorld 应用名称,保存在
config.xml 中。
生成的目录结构如下:
| config.xml: contains important metadata needed to generate and distribute the application.
|
+
+
+
+
\
| index.html
|
+
| index.css
|
+
| logo.png
|
\
index.js
生成的工程是一个包含不然任何插件的目录,也不属于任何平台。
$ cd hello
在 Windows 上,可以添加以下平台:
$ cordova platform add wp7
$ cordova platform add wp8
$ cordova platform add windows8
$ cordova platform add amazon-fireos
$ cordova platform add android
$ cordova platform add blackberry10
$ cordova platform add firefoxos
检查允许安装的平台和已经安装的平台:
$ cordova platforms ls
删除平台:
$ cordova platform rm android
添加或删除平台会影响 platforms/ 下的内容。添加平台或者 build 时,www/ 的内容将拷贝到所有平台下,如platforms/ios/www 和 platforms/android/assets/www。开发时,只能修改与 platforms/ 平行的 www目录。
Build the App
// 编译 platforms 下的所有平台
$ cordova build
// 编译指定平台
$ cordova build ios
// 这条命令也等价于以下两个命令
$ cordova prepare ios
$ cordova compile ios
Run
$ cordova emulate android
$ cordova run android
Add Plugin Features
插件官网:plugins.cordova.io
搜索插件:
$ cordova plugin search bar code
-> com.phonegap.plugins.barcodescanner - Scans Barcodes
添加插件:
$ cordova plugin add 插件名
同时添加多个插件:
$ cordova plugin add org.apache.cordova.console org.apache.cordova.device
为插件指定版本:
$ cordova plugin add org.apache.cordova.console@latest
$ cordova plugin add org.apache.cordova.console@0.2.1
插件的默认下载地址为 registry.phonegap.com,我们可以指定插件的下载地址:
$ cordova plugin add https://github.com/apache/cordova-plugin-console.git
默认从指定地址的 master 分支下载插件,我们可以指定 git-ref 如分支或者 tag:
$ cordova plugin add https://github.com/apache/cordova-plugin-console.git#r0.2.0
如果插件存在 git repo 的子目录中,我们可以通过 : 来指定:
$ cordova plugin add https://github.com/someone/aplugin.git#:/my/sub/dir
同时指定 git-ref:
$ cordova plugin add https://github.com/someone/aplugin.git#r0.0.1:/my/sub/dir
添加本地路径的插件,该插件目录中需要包含 plugin.xml 文件:
$ cordova plugin add ../my_plugin_dir
查看插件:
$ cordova plugin ls
-> [ 'org.apache.cordova.console' ]
移除插件:
$ cordova plugin rm org.apache.cordova.console
$ cordova plugin remove org.apache.cordova.console # same
常用插件:
Basic device information (Device API)
$ cordova plugin add org.apache.cordova.device
Network Connection and Battery Events:
$ cordova plugin add org.apache.cordova.network-information
$ cordova plugin add org.apache.cordova.battery-status
Accelerometer, Compass, and Geolocation:
$ cordova plugin add org.apache.cordova.device-motion
$ cordova plugin add org.apache.cordova.device-orientation
$ cordova plugin add org.apache.cordova.geolocation
Camera, Media playback and Capture:
$ cordova plugin add org.apache.cordova.camera
$ cordova plugin add org.apache.cordova.media-capture
$ cordova plugin add org.apache.cordova.media
Access files on device or network (File API):
$ cordova plugin add org.apache.cordova.file
$ cordova plugin add org.apache.cordova.file-transfer
Notification via dialog box or vibration:
$ cordova plugin add org.apache.cordova.dialogs
$ cordova plugin add org.apache.cordova.vibration
Contacts:
$ cordova plugin add org.apache.cordova.contacts
Globalization:
$ cordova plugin add org.apache.cordova.globalization
Splashscreen:
$ cordova plugin add org.apache.cordova.splashscreen
Open new browser windows (InAppBrowser):
$ cordova plugin add org.apache.cordova.inappbrowser
Debug console:
$ cordova plugin add org.apache.cordova.console
参考:Which Core PhoneGap/Cordova Plugins Do I Need?
工程目录下的 merges/ 用于为平台指定特殊文件,build 时,merges/ 中的文件将覆盖 www/ 下对应目录结构的文件。
如:
www/index.html:
<link rel="stylesheet" type="text/css" href="css/overrides.css" />
www/css/overrides.css:
body { font-size:12px; }
merges/android/css/overrides.css
body { font-size:14px; }
build 后, Android 平台的页面 字体大小为 14px。
Help
cordova help
cordova
cordova info
Updating Cordova and Your Project
参考:PhoneGap API Documentation
升级到 cordova:
$ sudo npm update -g cordova
$ sudo npm install -g cordova@3.1.0-0.2.0
升级工程:
$ cordova platform update android
$ cordova platform update ios
Plugman
如果你使用的是以平台为中心(Platform-centered)的方法开发插件,你需要使用更底层的 Plugman 来管理插件。
安装
$ npm install -g plugman
添加插件
$ plugman --platform <ios|amazon-fireos|android|blackberry10|wp7|wp8>
--project <directory>
--plugin <name|url|path> [--plugins_dir <directory>]
[--www <directory>] [--variable <name>=<value> [--variable <name>=<value> ...]]
--platform 指定平台。--project cordova 项目的平台位置。--plugin 指定插件。允许的值有以下几种:- name: 插件所在的目录名。该目录必须是
--plugins_dir 目录下存在的目录或者是 Cordova registry 中的插件。 - url: 以
https:// or git:// 开头 git repo 地址,该库中必须包含 plugin.xml 文件。git 库中的内容将拷贝到 --plugins_dir 下。 - path: 包含
plugin.xml 文件的插件路径。内容也会被拷贝到 --plugins_dir 下。
--plugins_dir defaults to <project>/cordova/plugins。 插件路径。--www defaults to the <project>/www。 www 路径。--variable 安装插件时需要指定的变量。
如:
-- -- --
移除插件
-- -- <->
-- <> -- <> [-- <>] [-- <>]
Registry Actions
plugman search <plugin keywords>
plugman config set registry <url-to-registry>
plugman config get registry
plugman info <id>
config.xml
参考:
该文件位于 app/config.xml,当调用 build 时,该文件将会被拷贝到不同的地方:
app/platforms/ios/AppName/config.xml
app/platforms/blackberry10/www/config.xml
app/platforms/android/res/xml/config.xml
使用 CLI 生成的 config.xml 默认内容为:
<widget id="com.example.hello" version="0.0.1">
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@callback.apache.org" href="http://phonegap.com">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
</widget>
widget.id 为应用的标识,widget.version 为用用版本,命名格式为 major/minor/patch。name 应用名称。description 和 author 分别为应用描述和作者。content 为应用的启用页,默认为 index.html,相对 www/下的文件路径。access 可以访问的网络的白名单,参考 Whitelist Guide。preference 为对应到平台的特性,如 全屏 等。
Global Preferences
所有平台都支持的特性:
DisallowOverscroll(boolean,false):在用户滚动过程中,当你不想要显示任何反馈,可以将该值设置为true。适用于Android和IOS。
BackgroundColor:设置背景颜色,支持32位色彩,首字节代表alpha通道,其他代表RGB通道。
可用于Android和BlackBerry,通过重写CSS可以用于所有平台,如:body{background-color:blue;}
<preference name="BackgroundColor" value="0xff0000ff"/>
HideKeyboardFormAccessoryBar(boolean,false):在下面键盘出现是,需要隐藏工具栏,从而帮助用户从一个form转到另一个form的时候,可以将该值设置为true。应用于IOS和BlackBerry
The feature Element
TODO
TODO
Icons and Splash Screens
为所有平台或者为特殊平台指定图标和启动画面,参考 PhoneGap API Documentation。
Debug
Storage
PhoneGap API Documentation
Tutorial
相关资料
apache/cordova项目github库
其他平台的lib和相关插件,请参考 http://git.apache.org/。
阅读全文