这是’白菜‘在学习cordova过程中,学习的备份,希望对正在看这篇文章的你来说有用。(PS:所谓 ‘白菜’,就是笔者了_)并且这篇文章来自cordova 官网讲解Config.xml的文章,如若觉得看不明白,且英语过关的同学请移步config.xml,好了,废话不多说,进入主题。
config.xml
config.xml的是控制cordova应用程序的行为的许多方面的全局配置文件。这个平台无关的XML文件是基于W3C的打包Web应用程序(窗口小部件)规范的安排,并扩展到指定的核心cordovaAPI功能,插件和特定于平台的设置。
在cordovaCLI(在命令行界面中所述)创建的项目,这个文件可以在顶级目录中找到:
app/config.xml
需要注意的是3.3.1-0.2.0版本之前,该文件存在于app/www/ config.xml中,而且这里有它仍然支持。
当使用CLI来建一个项目,该文件版本进行被动复制到不同的平台子目录。 例如:
app/platforms/ios/AppName/config.xml
app/platforms/blackberry10/www/config.xml
app/platforms/android/res/xml/config.xml
除了下文详述的各种配置选项,还可以配置一个应用程序的核心组用于每个目标平台的图像。更多信息请参见自定义图标的主题。
widget
config.xml文件文档的根元素。
属性(类型) | 描述 |
---|---|
id(string) | 需要 指定应用程序的反向域标识符和版本的主/次/补丁符号表示其完整版本号。 |
version(string) | 需要 在主要/次要/补丁符号表示的完整版本号。 |
versionCode(string) | 需要 另一版本为Android。有关详细信息,请参阅的Android版本 |
ios-CFBundleVersion(string) | 替代的iOS版。有关详细信息,请查看iOS版本。 |
osx-CFBundleVersion(string) | OS X 另一版本的OS X.有关详细信息,请参阅OS X版本。 |
packageVersion(string) | Windows 另一版本的Windows。有关详细信息,请参阅Windows版本 |
packageName(string) | 默认值:Cordova.Example Windows 包名称为Windows。 |
xmlns(string) | 需要 命名空间中的config.xml文件。 |
xmlns:cdv(string) | 需要 命名空间前缀。 |
例子:
<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"></widget>
<!-- Android -->
<widget versionCode="0.1.3"></widget>
<!-- iOS -->
<widget ios-CFBundleVersion="0.1.3"></widget>
<!-- Windows -->
<widget packageVersion="0.1.3"></widget>
<!-- OS X -->
<widget osx-CFBundleVersion="0.1.3"></widget>
name
指定应用程序的正式名称,因为它出现在设备的主屏幕上的app-store界面内。
例子:
<widget ...>
<name>HelloCordova</name>
</widget>
description
指定可在应用商店上市出现的元数据。
例子:
<widget ...>
<description>A sample Apache Cordova application</description>
</widget>
author
指定可在应用商店上市出现的联系人信息。
属性(类型) | 描述 |
---|---|
email(string) | Required 笔者的电子邮件 |
href(string) | Required 笔者的网站. |
例子:
<widget ...>
<author email="dev@cordova.apache.org" href="http://cordova.io"></author>
</widget>
content
定义了顶级的app目录中的应用程序的起始页面。默认值是index.html的,这习惯出现在项目的顶级www目录
属性(类型) | 描述 |
---|---|
src(string) | Required 定义了顶的app目录中的应用程序的起始页面。默认值是的index.html |
出现在项目的顶级www目录。
例子:
<widget ...>
<content src="startPage.html"></content>
</widget>
access
定义外部域的应用程序允许与沟通的集中。上面显示的默认值允许它访问任何服务器。看到域白名单指南。
属性(类型) | 描述 |
---|---|
origin(string | Required Defines the set of external domains the app is allowed to communicate with |
上面显示的默认值允许它访问任何服务器。看到域白名单指南。
Examples:
<widget ...>
<access origin="*"></content>
</widget>
<widget ...>
<access origin="http://google.com"></content>
</widget>
allow-navigation
该URL的webView控件本身可以浏览到。仅适用于顶级导航。
属性(类型) | 描述 |
---|---|
href(string) | Required 定义组的WebView允许导航到外部域的 |
例子:
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
engine
指定什么平台在准备还原。有关详细信息,请参阅平台和插件的版本管理。
属性(类型) | 描述 |
---|---|
name(string) | Required 要恢复的平台的名称 |
spec(string) | Required 要恢复的平台版本 |
<engine name="android" spec="^4.0.0" />
preference
这个标记的详细属性我就不再赘述了,详情移步文章首段的链接。
例子
<!-- iOS only preferences -->
<preference name="EnableViewportScale" value="true"/>
<preference name="MediaPlaybackAllowsAirPlay" value="false"/>
<preference name="MediaPlaybackRequiresUserAction" value="true"/>
<preference name="AllowInlineMediaPlayback" value="true"/>
<preference name="BackupWebStorage" value="local"/>
<preference name="TopActivityIndicator" value="white"/>
<preference name="SuppressesIncrementalRendering" value="true"/>
.
.
.
param
用来指定什么某些插件参数,如:什么包检索来自插件代码,并确定是否插件代码是网页视图的初始化期间进行初始化。
属性(类型) | 描述 |
---|---|
name(string) | Required Allowed values: android-package, ios-package, osx-package, onload. iOS OS X Android 'ios-package', 'osx-package' and 'android-package' are used to specify the name of the package (as specified by the 'value' attribute) to be used to initialize the plugin code, while 'onload' is used to specify whether the corresponding plugin (as specified in the 'value' attribute) is to be instantiated when the controller is initialized. |
value(string or boolean) | Required iOS OS X Android Specifies the name of the package to be used to initialize the plugin code (when the 'name' attribute is android-package, ios-package or osx-package), specifies the name of the plugin to be loaded during controller initialization (when 'name' attribute is set to 'onload'). |
Examples:
<!-- 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
当使用CLI来构建应用程序,有时需要以指定特定于特定的平台的偏好或其他元素。使用元素来指定应该只出现在一个 platform-specific -config.xml文件中的配置。
属性(类型) | 描述 |
---|---|
name(string) | Required The platform whose preferences are being defined. |
Examples:
<platform name="android">
<preference name="Fullscreen" value="true" />
</platform>
hook
表示将由cordova当某些行为发生时被调用自定义脚本(例如,插件添加或平台准备逻辑后调用)。当你需要扩展默认科尔多瓦的功能,这非常有用。见 Hooks Guide获取更多信息。
属性(类型) | 描述 |
---|---|
type(string) | Required 指定在此期间,自定义脚本被调用的动作. |
src(string) | Required 指定脚本的位置时,一个特定的动作发生时被调用。 |
Examples:
<hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />
Sample 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" version="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>
PS:码字确实幸苦啊T_T! 2016-3-16 01:30