config.xml是平台无关的XML全局设置文件,基于[W3C's Packaged Web Apps (Widgets)][1]规范,并指定Cordova的Core API、插件和平台特定的设置等。

全局设置的config.xml位于APP项目的根目录处(备注:3.3版本以前在www/config.xml),编译后,在platforms/目录下的子目录也会编译相应平台的config.xml:

app/platforms/ios/AppName/config.xml
app/platforms/blackberry10/www/config.xml
app/platforms/android/res/xml/config.xml

config.xml文件结构

新建Cordova项目后,根目录下的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>

1. widget元素

widget元素的id属性提供该APP的反向解释的标识符(Android的话就是应用的package名,iOS是AppID),version属性指app的版本号。

version还可以分别设置不同平台的版本号,例如:

 <widget id="io.cordova.hellocordova"
      version="0.0.1"
      android-versionCode="7"
      ios-CFBundleVersion="3.3.3"
      windows-packageVersion="1.0.1.2">

3. name元素

app名称,会显示在设备的主屏幕和应用商店的接口内。

4. description

app描述,会在应用商店里显示。

5. author

app作者相关信息,会在应用商店里显示。

6. content

应用的入口文件。默认是www/index.html。

4. preference元素

preference元素中可以设置各种的键值对属性,每个preference的name属性都是大小写不敏感的。

preference属性:

属性名 描述 示例
Fullscreen 全屏设置。所有平台支持的Preferences设置app全屏,默认值为false。 // 全屏:
<preference name="Fullscreen" value="true" />
DisallowOverscroll 隐藏滚动条。默认值为false。 隐藏滚动条:
<preference name="DisallowOverscroll" value="true"/>
BackgroundColor 背景颜色设置。值为四个字节数的十六进制数,这四个字节中的第一个字节表示alpha通道,剩余三个字节表示标准的RGB色值。 设置背景色为蓝色:
<preference name="BackgroundColor" value="0xff0000ff"/>
HideKeyboardFormAccessoryBar 隐藏键盘上的工具栏。默认值为false。 隐藏键盘上的工具栏:
<preference name="HideKeyboardFormAccessoryBar" value="true"/>
Orientation 横屏竖屏锁定,值可为default、landscape(横向)、portrait(竖向)或sensorLandscape(自感应横屏),默认为default。 横屏:
<preference name="Orientation" value="landscape" />

针对指定平台设定preference元素值,可以将preference元素放在platform元素中。

例如给Android平台设置横纵屏自适应,可以如下:

<platform name="android">
     <preference name="Orientation" value="sensorLandscape" />
</platform>

feature元素

feature不适用于通过cmd添加插件的方式,适用于通过SDK特定平台进行开发可通过编辑config.xml feature标签的内容添加API。

例如:

<feature name="Device">
     <param name="android-package" value="org.apache.cordova.device.Device" />
</feature>
<feature name="Device">
      <param name="ios-package" value="CDVDevice" />
</feature>

5. access元素

指定app可进行通信的域名。使用方式如下:

可以设置多个:

<access origin="http://example.com" /> 
<access origin="http://foobar.example.com" />

也可以使用通配符:

<access origin="http://*.example.com" />

默认可以访问任何域:

<access origin="*" />

7. platform元素

platform元素用于指定特定的平台元素的属性设置。

譬如:

<platform name="android">
    <preference name="Fullscreen" value="true" />
</platform>

8. hook元素

当特定事件发生时可触发客户端脚本。这对于扩展Cordova默认的函数声明很有用。

譬如:

<hook type="before_build" src="scripts/appBeforeBuild.bat" />
<hook type="before_build" src="scripts/appBeforeBuild.js" />
<hook type="before_plugin_install" src="scripts/appBeforePluginInstall.js" />

Hook事件主要有:

after_build
after_compile
after_clean
after_docs
after_emulate
after_platform_add
after_platform_rm
after_platform_ls
after_plugin_add
after_plugin_ls
after_plugin_rm
after_plugin_search
after_plugin_install // Plugin hooks in plugin.xml are executed for a plugin being installed only
after_prepare
after_run
after_serve
before_build
before_clean
before_compile
before_docs
before_emulate
before_platform_add
before_platform_rm/
before_platform_ls
before_plugin_add
before_plugin_ls
before_plugin_rm
before_plugin_search/
before_plugin_install // Plugin hooks in plugin.xml are executed for a plugin being installed only
before_plugin_uninstall // Plugin hooks in plugin.xml are executed for a plugin being >- uninstalled only
before_prepare
before_run
before_serve
pre_package // Windows and Windows Phone only

参考官方网站:[http://cordova.apache.org/docs/en/5.4.0/guide/appdev/hooks/index.html][2]

本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/others/mobile/android/669