目录
概述
Config.xml是全局配置文件,在很多方面控制着cordova应用的行为。Config.xml是平台无关的,基于W3C网络应用标准的xml格式文件,扩展了cordova核心api、插件和特定平台的设置。
用命令行(CLI:Command-Line Interface)创建的cordova工程,会在app/下创建config.xml。
需要注意的是,在3.3.1-0.2.0版本之前,config.xml文件存在于app/www/目录下,现在新版的cordova依然支持这样的写法。
用命令行创建cordova工程的时候,config.xml会自动在各个平台下创建。目录结构如下:<
app/platforms/ios/AppName/config.xml
app/platforms/blackberry10/www/config.xml
app/platforms/android/res/xml/config.xml
config.xml的参数及用法说明:
config.xml的重要参数:
id(string,必填项):填写app所有人的域名,在Wex5平台,该参数是“配置应用信息页面”的版本号和应用包名。如下图所示:Specifies the app’s reverse-domain identifier, and the version its full version number expressed in major/minor/patch notation.
version(string,必填项):填写app的版本号
android-versionCode(string) :安卓应用版本号。
ios-CFBundleVersion(string) :ISO应用版本号。
举例:
<!-- Android --> <widget id="io.cordova.hellocordova" version="0.0.1" android-versionCode="0.1.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> </widget> <!-- iOS --> <widget id="io.cordova.hellocordova" version="0.0.1" ios-CFBundleVersion="0.1.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> </widget>
name
应用的名字,用户设备桌面的应用图标显示和应用商店显示。
举例:
<widget> <name>HelloCordova</name> </widget>
description
应用说明,可用于应用商店对应用的描述。
举例:
<widget > <description>A sample Apache Cordova application</description> </widget>
author
应用作者的联系方式,可用于应用商店对应用的描述。
email(string,必填):应用作者的email。
href(string,必填):应用作者的网站地址。
举例:
<widget> <author email="dev@cordova.apache.org" href="http://cordova.io"></author> </widget>
content
定义应用的首页地址,一般为“index.html”,在工程目录的最外层,www文件夹内。
举例:
<widget > <content src="startPage.html"></content> </widget>
access
origin(string):定义了应用可以数据交互的域名。
定义了应用可以访问的域名,默认允许访问任何服务器。更多内容可查看“域名白名单”。
举例:
<widget > <access origin="*"></content> </widget> <widget > <access origin="http://google.com"></content> </widget>
allow-navigation
href(string):定义webview可以跳转的域名。
举例:
<!-- Allow links to example.com --> <allow-navigation href="http://example.com/*" /> <!-- Wildcards are allowed for the protocol, as a prefix to the host, or as a suffix to the path --> <allow-navigation href="*://*.example.com/*" />
allow-intent
控制哪些URLs是应用允许打开的,默认是全部禁止。
举例:
<allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" />
engine
如何恢复平台的详细说明
name(string):需要被恢复的平台名。
spec(string):需要会恢复的平台源码的详细描述。可以是major.minor.patch的版本号,包含平台源码的地址链接或者指向git仓库的url地址。这些信息可以被用作从NPM、本地地址链接或者git仓库恢复平台的代码。
举例:
<engine name="android" spec="https://github.com/apache/cordova-android.git#5.1.1" /> <engine name="ios" spec="^4.0.0" />
plugin
关于如何恢复插件的详细说明,在config.xml使用–save时,插件会自动的加载到工程中。
name(string):需要恢复的插件名。
spec(string):关于如何恢复插件源码的详细描述。可以是major.minor.patch的版本号,包含插件源码的地址链接或者指向git仓库的url地址。这些信息可以被用作从NPM、本地地址链接或者git仓库恢复平台的代码。
举例:
<plugin name="cordova-plugin-device" spec="^1.1.0" /> <plugin name="cordova-plugin-device" spec="https://github.com/apache/cordova-plugin-device.git#1.0.0" />
variable
定义了命令行恢复插件时的变量默认值,当插件执行命令行使用–save标签添加变量的时候,该元素会被加入config.xml。
需要注意的是此值只有在插件被恢复的时候才会有效,改变它的值并不会改变当前工程中的值。如果要恢复此值,可以先从工程中卸载插件并执行“cordova prepare”恢复插件。
name(string):命令行的变量名。只能包含大写字母,数字和下划线。
value(string):命令行变量的值,在恢复插件的时候有效。
举例:
<plugin name="cordova-plugin-device" spec="^1.1.0"> <variable name="MY_VARIABLE" value="my_variable_value" /> </plugin>
feature
如果使用命令行创建应用,可以用插件命令开放设备APIs的。这样做并不会修改config.xml文件的顶层,所以此元素不支持你的工作流。如果使用SDK和指定平台的config.xml。使用“feature”可以开放设备层级的APIs和外部的插件。“feature”是config.xml比较常用的元素。
name(string):需要被开放的插件的名字。
param
用于说明插件的必要参数,如:插件源码的包名,插件是否会在webview初始化的时候被初始化。
name(string):android-package, ios-package, osx-package, onload. ‘ios-package’, ‘osx-package’ 和’android-package’ 用于描述初始化插件代码的包名,使用onload可以描述该插件在controller初始化的时候是否被实例化。
value(string or boolean) :描述初始化插件代码的包名(当名字为android-package, ios-package or osx-package),指定的插件名会在controller初始化的时候加载。
举例:
<!-- Here is how to specify the Device API for Android projects --> <feature name="Device"> <param name="android-package" value="org.apache.cordova.device.Device" /> </feature> <!-- Here's how the element appears for iOS projects --> <feature name="Device"> <param name="ios-package" value="CDVDevice" /> <param name="onload" value="true" /> </feature> <!-- Here's how the element appears for OS X projects --> <feature name="Device"> <param name="osx-package" value="CDVDevice" /> <param name="onload" value="true" /> </feature>
platform
使用命令行创建应用的时候,有时候需要向指定的平台添加一些参数和偏好设置,使用platform做指定的配置,该配置只会出现在指定的平台。
name(string):该平台的设置都在此标签内。
举例:
<platform name="android"> <preference name="Fullscreen" value="true" /> </platform>
hook
代表出现指定的action的时候会执行用户的脚本。(比如插件被加载或者平台已经加准备好)。当你需要依赖默认的cordova功能时,hook会非常实用。
type(string):描述用户的脚本执行时执行什么动作。
src(string):描述脚本的位置
举例:
<hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />
Sample config.xml
以下是config.xml的范例
<?xml version='1.0' encoding='utf-8'?> <widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>HelloCordova</name> <description> A sample Apache Cordova application that responds to the deviceready event. </description> <author email="dev@cordova.apache.org" href="http://cordova.io"> Apache Cordova Team </author> <content src="index.html" /> <plugin name="cordova-plugin-whitelist" spec="1" /> <access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" /> <allow-intent href="mailto:*" /> <allow-intent href="geo:*" /> <platform name="android"> <allow-intent href="market:*" /> </platform> <platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> </platform> </widget>
评一波