5、config.xml的作用(基础知识)

时间:2021-02-24 07:25:30

翻译自cordova官方文档(如果需要链接,请自行对照原文链接进行查看):
https://cordova.apache.org/docs/en/latest/config_ref/index.html

config.xml的作用

Config.xml用于控制一些app的行为,这个平台无关的xml文件是基于W3C的Packaged Web Apps(Widgets)描述标准,扩充特定的核心Cordova API功能,插件和特定平台设置

当通过Cordova命令行创建一个工程以后,在其根目录会有一个config.xml文件,当使用platform add命令添加指定的移动平台以后,会在platforms目录各自平台的子目录有一个config.xml的拷贝

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

config.xml核心配置元素

<widgetid="com.example.hello"version="0.0.1"><name>HelloWorld</name><description>
A sample Apache Cordova application that responds to the deviceready event.
</description><authoremail="dev@callback.apache.org"href="http://cordova.io">
Apache Cordova Team
</author><contentsrc="index.html" /><accessorigin="*" /></widget>

中的id用来标记app的标识符,同时我们也可以在这里设置versionCode,CFBundleVersion和packageVersion这类版本信息
用于指定app的正式名称,在手机主页和app-store里面显示的名字。
和用于配置程序的说明文字,作者。这些信息会出现在app-store的信息里面。
用于设置app的启示页,该页默认为index.html,在工程根目录。
此配置用来设置app可以访问哪些外部域下server的资源,具体参考Whitelist
用于设置各个可选设置,每一个preference不区分大小写,有一些preference只针对特殊平台有效。下面是一些针对多平台有效的常见preference。

共通参数

该参数用于设置app是否隐藏状态栏,在ios下是不隐藏状态栏的,但是会影响获取状态栏高度的准确值,默认为false。

<preferencename="Fullscreen"value="true" />

支持多平台的参数设置

设置是否禁止滑动超出范围,此时会在超出部分显示黑色背景。在ios下如果设置为true,会引起拖拽页面的时候会触发放大显示功能。

<preferencename="DisallowOverscroll"value="true"/>     #仅支持IOS&Android

主背景色。

<preferencename="BackgroundColor"value="0xff0000ff"/> #仅支持BlackBerry&Android

隐藏键盘显示时上面附带的status bar。

<preferencename="HideKeyboardFormAccessoryBar"value="true"/> #仅支持BlackBerry

锁定显示朝向landscape or portrait。

<preferencename="Orientation"value="landscape" /> 
#<platformname="android">
# <preferencename="Orientation"value="sensorLandscape" />
#</platform>
#<platformname="ios">
# <preferencename="Orientation"value="all" />
#</platform>

为特定平台添加plugin。在使用cordova plugin add指令的时候会自动添加。

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

为指定平台单独设置属性。

<platformname="android"><preferencename="Fullscreen"value="true" /></platform>

设置hook,具体参见Hook

<hooktype="after_plugin_install"src="scripts/afterPluginInstall.js" />

iOS的config.xml设置

EnableViewportScale (boolean, defaults to false) 如果设置成true,用于在viewport的meta标签是否生效。

<preferencename="EnableViewportScale"value="true"/>
#Example:<metaname='viewport'content='width=device-width, initial-scale=1, user-scalable=no' />
#绝大多数情况下,我们是应该使用false,我们应该让我们的程序launch起来像一个app而不是一个浏览器
#ViewPort <meta>标记用于指定用户是否可以缩放Web页面,如果可以,那么缩放到的最大和最小缩放比例是什么。
#使用 ViewPort <meta>标记还表示文档针对移动设备进行了优化。ViewPort <meta>标记的content值 是由指令及其值组成的以逗号分隔的列表。
#<metaname=”viewport”content=”width=240,height=320,user-scalable=yes,initial-scale=2.5,maximum-scale=5.0,minimun-scale=1.0”>
#width 和height指令分别指定视区的逻辑宽度和高度。他们的值要么是以像素为单位的数字,要么是一个特殊的标记符号。
#width指令使用device- width标记可以指示视区宽度应为设备的屏幕宽度。类似地height指令使用device-height标记指示视区高度为设备的屏幕高度。
#user-scalable指令指定用户是否可以缩放视区,即缩放Web页面的视图。值为yes时允许用户进行缩放,值为no时不允许缩放。
#initial-scale指令用于设置Web页面的初始缩放比例。默认的初始缩放比例值因智能手机浏览器的不同而有所差异。
#通常情况下设备会在浏览器中呈现出整个Web页面,设为1.0则将显示未经缩放的Web文档。
#maximum-scale和minimum-scale指令用于设置用户对Web页面缩放比例的限制。值的范围为0.25至10.0之间。
#与initial-scale相同,这些指令的值是应用于视区内容的缩放比例。
#所有智能手机浏览器都支持ViewPort <meta>标记的width和user-scalabel指令。
#但是Opera Mobile不使用user-scalable指令,而是主张用户应始终保留在移动浏览器中缩放Web页面的能力。

MediaPlaybackAllowsAirPlay (boolean, defaults to true): 是否阻止使用airplay功能。

<preferencename="MediaPlaybackAllowsAirPlay"value="false"/>

MediaPlaybackRequiresUserAction (boolean, defaults to false) 是否阻止自动播放媒体文件。

<preferencename="MediaPlaybackRequiresUserAction"value="true"/>

AllowInlineMediaPlayback (boolean, defaults to false) 是否允许重放,需要在浏览器提供的标签内添加webkit-playsinline。

<preferencename="AllowInlineMediaPlayback"value="true"/>

BackupWebStorage (string, either none, local, or the default cloud) 选择程序备份的地点。

<preferencename="BackupWebStorage"value="local"/>
#none不进行备份
#local 备份到本地iTurn
#cloud 备份到via iCloud

TopActivityIndicator (string, defaults to gray) 用于设置顶部状态栏风格,可选参数whiteLarge, white, and gray。

<preferencename="TopActivityIndicator"value="white"/>

KeyboardDisplayRequiresUserAction (boolean, defaults to true) 是否禁止当输入框使用focus()获得焦点的时候显示键盘。

<preferencename="KeyboardDisplayRequiresUserAction"value="false"/>
#绝大多数情况下我们应该设置成false,除非你不想让用户输入任何信息

SuppressesIncrementalRendering (boolean, defaults to false) 是否支持数据全部渲染完成后再显示到界面上。

<preferencename="SuppressesIncrementalRendering"value="true"/>

GapBetweenPages (float, defaults to 0) 界面间隙(ios UIWebView的配置参数)。

<preferencename="GapBetweenPages"value="0"/>

PageLength (float, defaults to 0) 每个界面的size(ios UIWebView的配置参数)。

<preferencename="PageLength"value="0"/>

PaginationBreakingMode (string, defaults to page) ios UIWebView相关的参数。

 #可选值 page and column
#<preferencename="PaginationBreakingMode"value="page"/>

PaginationMode (string, defaults to unpaginated) 用于设置分页相关的,是ios UIWebView相关的设置。

    # 可选值 unpaginated, leftToRight, topToBottom, bottomToTop, and rightToLeft.
<preferencename="PaginationMode"value="unpaginated"/>

UIWebViewDecelerationSpeed (string, defaults to normal) 用于设置滚动条滑动速度。

    #可选值 normal, fast
<preferencename="UIWebViewDecelerationSpeed"value="fast" />

ErrorUrl (string, not set by default) 设置错误信息页。

<preferencename="ErrorUrl"value="myErrorPage.html"/>

OverrideUserAgent (string, not set by default) 用于重新设置UserAgent信息。

<preferencename="OverrideUserAgent"value="Mozilla/5.0 My Browser" />

AppendUserAgent (string, not set by default) 在UserAgent末尾添加新内容。

<preferencename="AppendUserAgent"value="My Browser" />
#当OverrideUserAgent被设置时无效

target-device (string, defaults to universal) 设置支持设备类型,手机,平板,无限制。

  #可选值 handset, tablet, universal
<preferencename="target-device"value="universal" />

deployment-target (string, not set by default) 设置支持的最低版本。

<preferencename="deployment-target"value="7.0" />

CordovaWebViewEngine (string, defaults to ‘CDVUIWebViewEngine’) 设置cordova引擎,一般没人会设置这个。

<preferencename="CordovaWebViewEngine"value="CDVUIWebViewEngine" />

SuppressesLongPressGesture (boolean, defaults to false) 是否绕过3Dtouch长按弹出一个放大窗口显示内容的功能。

<preferencename="SuppressesLongPressGesture"value="true" />

Suppresses3DTouchGesture (boolean, defaults to false) 是否绕过3Dtouch功能。

<preferencename="Suppresses3DTouchGesture"value="true" />
#如果Suppresses3DTouchGesture为true,SuppressesLongPressGesture最好也要设置为true

CDVSystemSchemesOverride (string, defaults to maps,tel,telprompt) 设置允许被传送给系统的协。

<preferencename="CDVSystemSchemesOverride"value="maps,tel,telprompt" />

Android的config.xml设置

KeepRunning (boolean, defaults to true): 决定是否允许app在pause后依然运行,设置成false在app接受pause的时候就不会被杀死了,只是暂停执行代码

<preferencename="KeepRunning"value="false"/>

LoadUrlTimeoutValue (number in milliseconds, default to 20000, 20 seconds): 用来设置加载一个页面的timeout时间。默认20秒。

<preferencename="LoadUrlTimeoutValue"value="10000"/>

SplashScreen (string, defaults to splash): 用于设定splash screen的启动图片的名字,这个名字在res/drawable目录。 在各自子目录里面设置同样名字的资源。

<preferencename="SplashScreen"value="mySplash"/>

SplashScreenDelay (number in milliseconds, defaults to 3000): splash screen的显示时长。

<preferencename="SplashScreenDelay"value="10000"/>

InAppBrowserStorageEnabled (boolean, defaults to true): 控制是否允许在InAppBrowser打开的web页面允许访问相同的localStorage和webSQL资源。

<preferencename="InAppBrowserStorageEnabled"value="true"/>

LoadingDialog (string, defaults to null): 用于设置在第一次加载页面的时候显示一个窗口,该窗口显示指定的title和message。

<preferencename="LoadingDialog"value="My Title,My Message"/>

LoadingPageDialog (string, defaults to null): 和LoadingDialog一样,但是在第一次加载每一个页面的时候都会显示。

<preferencename="LoadingPageDialog"value="My Title,My Message"/>

ErrorUrl (URL, defaults to null): 如果发生问题的话显示一个以Application Error为title的页面。

<preferencename="ErrorUrl"value="myErrorPage.html"/>

ShowTitle (boolean, defaults to false): 在屏幕顶端显示title。

<preferencename="ShowTitle"value="true"/>

LogLevel (string, defaults to ERROR): 设置log的等级,取值范围[ERROR, WARN, INFO, DEBUG, and VERBOSE]。

<preferencename="LogLevel"value="VERBOSE"/>

SetFullscreen (boolean, defaults to false): 此属性已经不赞成使用,会在将来删除
AndroidLaunchMode (string, defaults to singleTop): 设置Activity的launchMode,和AndroidManifest.xml相同,具体参考android开发指南。可选值[standard, singleTop, singleTask, singleInstance]。

<preferencename="AndroidLaunchMode"value="singleTop"/>

DefaultVolumeStream (string, defaults to default, added in cordova-android 3.7.0): 设备的音量按钮相关设置,可以被设置成call或者media。

OverrideUserAgent (string, not set by default) 用于重新设置UserAgent信息。该设置会引起服务器issue,所以要谨慎使用。

<preferencename="OverrideUserAgent"value="Mozilla/5.0 My Browser" />

AppendUserAgent (string, not set by default) 在UserAgent末尾添加新内容。

<preferencename="AppendUserAgent"value="My Browser" />
#当OverrideUserAgent被设置时无效