manifest.json文件中包含了应用描述、接口声明、页面路由信息。
属性 | 类型 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|---|
package | string | - | 是 | 应用包名,确认与原生应用的包名不一致,推荐采用com.company.module的格式,如:com.example.demo。 由数字、字母、"."、下划线组成,必须以字母开头,以数字、字母或者下划线结尾,同时必须包含".",长度不能超过255字节。 |
name | string | - | 是 | 应用名称,与应用商店保存的名称一致,用于在桌面图标、弹窗等处显示应用名称。 支持设置为多语言字符串,但不支持以下场景: |
icon | string | - | 是 | 用于在应用市场或者桌面显示的应用图标,必须与提交上架审核的应用图标信息一致。 |
versionName | string | - | 否 | 应用版本名称,如:"1.0"。 |
integer | - | 是 | 应用版本号,从1自增,务必每次重新上传包时versionCode+1,否则将影响上架版本的更新。例如原版本为11,更新版本的versionCode需要为12。 | |
minPlatformVersion | integer | 1000 | 是 | 支持的最小平台版本号,兼容性检查,避免上线后在低版本平台运行并导致不兼容。 说明: 当用户手机上的快应用引擎版本低于该值,打开快应用时将弹框提示用户更新到最新版本。用户可以选择不更新,退出快应用。 |
features | array | - | 否 | 接口列表,绝大部分接口都需要在这里声明,否则不能调用,详见每个接口的文档说明。示例如下: [
{
"name": "system.app"
},
{
"name": "system.network"
}
] |
array | - | 否 | 获取权限的理由描述,即当调用API需要用户授权时,在授权框显示的文字信息。理由描述需尽量清晰、合理。 详细定义格式参见“permissionDesc格式说明”。 | |
config | object | - | 是 | 系统配置信息,详细内容参见“config”。 |
router | object | - | 是 | 路由信息,详细内容参见“router”。 |
display | object | - | 否 | UI显示相关配置,详细内容参见“display”。 |
subpackages | object | - | 否 | 定义并启用分包加载,详细内容参见“subpackages”。 |
trustedSslDomains(1060+) | array | - | 否 | 可信的 https 站点列表,如:"www.huawei.com"。
|
exitDesc(1107+) | string | - | 否 | 退出页面提示信息。如果该页面是唯一页面,在该页面上第一次按下后退按钮时,会显示一条toast消息,该消息是exitDesc的值。 |
permissionDesc可以配置name和desc两个属性信息。name目前支持的权限配置包括:WRITE_CALENDAR、ACCESS_FINE_LOCATION、CAMERA、RECORD_AUDIO、WRITE_EXTERNAL_STORAGE(1075+)、STORAGE_READ(1078+)、READ_PHONE_STATE(1078+)、NOTIFYCATION(1078+)、SILENT_NOTIFYCATION(1078+)、READ_CONTACT(1078+)、CAR_INFO。desc支持配置多语言字符串,但不支持以下配置:
permissionDesc配置示例如下:
"permissionDesc":[
{
"name": "ACCESS_FINE_LOCATION",
"desc": "此示例用来演示获取地理位置的能力,需要您授予获取地理位置的权限。"
},
{
"name": "RECORD_AUDIO",
"desc": "${message.permissionDesc}"
}
] 
用于定义系统配置和全局数据。
属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
logLevel | string | log | 打印日志等级,分为off(表示不写)、error、warn、info、log、debug。 |
designWidth | integer/string | 750 | 页面设计基准宽度,根据实际设备宽度来缩放元素大小。当为String类型时值只能是“device-width”("designWidth":"device-width"),表示视觉viewport的宽度。 |
data | object | - | 全局数据对象,属性名不能以$或_开头,在页面中可通过this进行访问;如果全局数据属性与页面中data属性重名,则页面初始化时,全局数据会覆盖页面中对应的属性值。 |
network(1060+) | object | - | 网络超时时间配置选项,详细配置请参见“config.network说明”。该配置仅适用如下接口或方法:system.fetch,system.request.upload(),system.websocketfactory。 |
background(1070+) | object | - | 在features子字段中配置需要在后台运行的接口。可以配置的接口包括:
详细使用方法参见“后台运行”。 |
boolean | true | 折叠屏折叠、展开过程中是否重新加载页面。
| |
aboutPageConfig(1078+) | array | - | 在统一菜单中“关于”页面的条目,最多可以展示20条。详细内容参见“aboutPageConfig说明”。 |
object | - | 页面饱和度为零的显示模式(灰色模式),用以响应特殊事件,详细配置请参见“config.grayMode说明”,该配置项会被configuration.setGrayMode的相关配置覆盖。 | |
permissionAdapted (1107+) | boolean | false | 每48小时可以提出一次权限请求。该属性表示在48小时内请求许可时是否显示toast。
|
exit(1110+) | object | - | 快应用引擎支持退出应用时返回快应用首页。对于此功能,添加了退出配置,即在exit属性中定义所需的行为。它包含两个不同的关键值,如下:
|
disableDynamicCode(1104+) | boolean | false | 禁止动态代码执行 |
属性 | 类型 | 默认值 | 单位 | 是否必填 | 描述 |
|---|---|---|---|---|---|
connectTimeout | number | 30000 | ms | 否 | 网络连接超时时间。 |
readTimeout | number | 30000 | ms | 否 | 网络流读取超时时间。 |
writeTimeout | number | 30000 | ms | 否 | 写入超时时间。 |
aboutPageConfig可以配置name和url两个属性信息,name支持多语言的字符串。示例如下:
"aboutPageConfig":[
{
"name": "华为开发者联盟",
"url": "https://developer.huawei.com/consumer/cn/"
},
{
"name": "快应用开发文档",
"url": "https://developer.huawei.com/consumer/cn/doc/overview/quickApp"
}
] 实现效果如下图所示。

config.grayMode说明(1100+):
属性 | 类型 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|---|
enable | boolean | false | 否 | 是否开启灰色模式。 |
duration | object | - | 否 | 灰色模式需要启动的日期,详细内容参见“duration说明”。 |
excludedPages | array | - | 否 | 需要禁用灰色模式的页面列表。 |
duration说明:
属性 | 类型 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|---|
regular | array | - | 否 | 每年固定的日期,日期格式为MM/dd。 |
temporary | array | - | 否 | 一次性的临时日期,日期格式为yyyy/MM/dd。 |
示例代码:
"grayMode": {
"enable": true,
"duration": {
"regular": ["12/13", "09/18"],
"temporary": ["2020/04/04", "2018/05/12"]
},
"excludedPages": ["/WelcomePage"]
} 用于定义页面的组成和相关配置信息,如果页面没有配置路由信息,则在编译打包时跳过。
属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
entry | string | - | 首页名称。 |
errorPage(1060+) | string | - | 错误页面。
|
pages | object | - | 页面配置列表,key值为页面名称(对应页面目录名,例如Hello对应'Hello'目录),value为页面详细配置page,详细内容参见“router.page”。 |
用于定义单个页面路由信息。
属性 | 类型 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|---|
component | string | - | 是 | 页面对应的组件名,与ux文件名保持一致,例如hello对应hello.ux。 |
path | string | / | 否 | 页面路径,例如“/user”,不填则默认为/<页面名称>。path必须唯一,不能和其他page的path相同。下面page的path因为缺失,会被设置为“/Index”:"Index": {"component": "index"}。 |
filter | object | - | 否 | 声明页面可以处理某种请求。 |
launchMode(1050+) | string | standard | 否 | 声明页面的启动模式,支持"singleTask","standard"两种页面启动模式。
首页仅支持"singleTask"模式。 |
声明页面可以处理某种请求,页面可以从$page获取打开页面的参数,参见“script脚本”。filter的结构如下:
"filter": {
"<action>": {
"uri": "<pattern>"
}
} 属性 | 类型 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|---|
action | string | - | 是 | 请求的动作,目前仅支持view这一种。 |
uri | pattern | / | 否 | 请求的数据的匹配规则。必须是正则表达式。如https?://.*可以匹配所有http和https类型的网址。 |
处理所有 http 和 https 请求的 filter 定义如下:
"filter": {
"view": {
"uri": "https?://.*"
}
} 用于定义与UI显示相关的配置。
大屏设备只支持全屏和横屏,即只支持fullScreen为true,orientation为landscape。不支持titleBar相关属性。
属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
backgroundColor | string | #ffffff 车机默认为:#121212 | 窗口背景颜色。 |
fullScreen | boolean | false | 是否是全屏模式,全屏模式下状态栏也会被覆盖,默认不会同时作用于titleBar,titleBar需要继续通过titleBar控制。 |
titleBar | boolean | true | 是否显示titleBar。 |
titleBarBackgroundColor | string | 深色主题:#000000 非深色主题:#ffffff | 标题栏背景色。 |
titleBarTextColor | string | - | 标题栏文字颜色。 |
titleBarText | string | - | 标题栏文字(也可通过页面跳转传递参数(titleBarText)设置)。 |
titleBarBackgroundOpacity(1050+) | float(0 ~ 1.0) | 1.0 | 标题栏不透明度。 |
menu | boolean | false | 是否显示右上角菜单按钮。 在非中国大陆地区: 【1070版本之前】 menu设置为true时,如果没有自定义onMenuPress回调函数,用户点击菜单按钮时,弹出系统自带的菜单列表。 注意: 没有特殊情况,请开发者不要自定义onMenuPress回调函数。如果一定要自定义,请勿将创建桌面快捷方式的文案描述为“保存桌面”,建议描述为“添加到桌面”。 menu设置为true时,如果有titleBar则菜单按钮显示在titleBar的右侧,否则作为浮层显示出来。 【1070版本开始】 此配置将被废弃,即使配置也不会生效。将固定显示菜单,不支持开发者自定义菜单内容。 (1076+)在中国大陆地区:将固定显示菜单,不支持开发者自定义菜单内容。 |
windowSoftInputMode(1030+) | adjustPan | adjustResize | adjustPan | 软键盘弹出时,为保证输入框可见,页面的调整方式。
|
pages | object | - | 各个页面的显示样式,key为页面名(与路由中的页面名保持一致),value为窗口显示样式,页面样式覆盖default样式。 |
orientation | string | portrait | 页面显示横屏还是竖屏:
横竖屏切换后,屏幕宽度会发生变化,导致开发者即使设置相同的尺寸,实际展示会不一致。所以如果设置auto,建议使用“响应式布局”进行开发。 |
statusBarImmersive(1050+) | boolean | false | 是否显示沉浸式状态栏。 |
statusBarTextStyle(1050+) | auto | auto | 状态栏文字样式。设置为auto时会根据状态栏背景颜色调整。 说明: 当前华为暂不支持设置为light和dark。 |
statusBarBackgroundColor(1050+) | string | - | 状态栏背景色,默认值与标题栏背景色相同。 |
statusBarBackgroundOpacity(1050+) | float(0 ~ 1.0) | - | 状态栏不透明度,默认值同标题栏不透明度。 |
textSizeAdjust(1060+) | auto | none | - | 文本类型组件字体大小是否随系统字体大小变化。 |
themeMode(1083+) | number | -1 | 主题模式配置值,如果未设置,则使用默认值-1。 目前支持3个值:
|
menuBarData(1070+) | object | - | 页面菜单描述对象。 |
fitCutout(1101+) | string | - | 是否在异形区域绘制内容。
说明: 竖屏下,只有当 fullScreen 为 true 时,此属性才会生效。 |
fitWideScreenMode(1109+) | string | fitScreen | 指定适用于宽屏设备上的显示模式。
说明: 如果recreateOnFolding设置为false,则该属性的fitscreen值设置无效。 |
用于描述页面菜单。
属性 | 类型 | 描述 |
|---|---|---|
menuBar(1083+) | boolean | 定义菜单栏是否可见。
注意: 请勿在应用首页及一级菜单隐藏胶囊菜单,其他页面只能出于用户体验目的,在沉浸式页面隐藏胶囊菜单。 |
menuBarStyle(1070+) | string |
|
shareTitle(1090+) | string | menuBar中分享功能对应标题,默认为当前快应用名称。 |
shareDescription(1090+) | string | menuBar中分享功能对应描述,默认为当前快应用描述。 |
shareIcon(1090+) | string | menuBar中分享功能对应图片,默认为当前快应用icon。 |
shareCurrentPage(1090+) | boolean | menuBar中是否可以分享当前页面。
注意: 设置为true时,请不要在页面参数中添加敏感信息,如帐号、密码等涉及到安全类的信息字段内容。 |
shareParams(1090+) | object | menuBar中分享当前页面的透传参数,格式为:{"key":value} 。 |
shareUrl(1090+) | string | menuBar中备用分享链接。分享到不支持运行快应用的设备(比如ios设备)时,暂不支持跳转至此备用链接。 |
usePageParams(1090+) | boolean | menuBar中是否添加当前页面参数到分享参数中。
|
对于使用shareParams或者页面参数的情况,必须在相应页面对字符串内容中的key值 {"key": value} 显式声明public时,才可以接收到页面参数。
示例代码如下:
// 页面中需要声明参数变量名称,注意参数名称需要和shareParams中key-value的key值名称对应,对于usePageParams或者shareCurrentPage为true情况,也要对应页面参数声明对应的key值接收参数
public: {
key: null
},
// 如果快应用当前页面和打开的分享页面不同,在打开快应用,跳转到分享页时,分享参数可以在onInit中接收到
onInit() {
console.log('onInit share param page : ' + JSON.stringify(this.key))
}
// 如果快应用当前页面和打开的分享页面相同,在打开快应用,跳转到分享页时,分享参数可以在onRefresh接收到
onRefresh(data){
console.log('onRefresh share param page : ' + JSON.stringify(data.key))
} 使用menuBar,您无需再重复实现分享、添加到桌面、关联页等功能,可减少工作量。
您可以按照以下步骤,实现快应用项目对menuBar的适配:
实际代码中JSON文件不能包含注释行,此处注释仅用于说明。
{
"display": {
"menuBarData": {
// 全局配置
"menuBar":true,
"menuBarStyle":"dark",
"shareTitle":"分享标题",
"shareDescription":"分享描述",
"shareIcon":"分享url"
},
"pages": {
"Hello": {
// 页面配置,默认使用页面menuBarData配置,页面无配置时使用全局menuBarData配置
"menuBarData": {
"menuBar":true,
"menuBarStyle":"dark",
"shareTitle":"子页面分享标题",
"shareDescription":"分享页面描述",
"shareIcon":"页面分享url",
"shareCurrentPage":true,
"shareUrl":"https://developer.huawei.com",
"shareParams":"{key:1,id:2})"
}
}
}
} 用于定义分包的相关配置。分包的详细使用方法请参见“分包加载”。
属性 | 类型 | 描述 |
|---|---|---|
name | string | 分包的名称,用于区分不同分包。只能是字母数字和下划线,不允许包含其他符号,"base"作为基础包的保留名称(无需为基础包定义分包配置)。 |
resource | string | 分包资源根目录,相对于源码目录"src"的相对路径。只能是字母数字以及"_"、"-"、"/"组成,第一个字符不允许为"-"和"/",不允许包含其他符号。编译时会把该目录下的所有资源都打包到这个分包中去。 |
{
"package": "com.company.unit",
"name": "appName",
"icon": "/Common/icon.png",
"versionName": "1.0",
"versionCode": 1,
"minPlatformVersion": 1000,
"features": [
{ "name": "system.network" }
],
"config": {
"logLevel": "off"
},
"router": {
"entry": "Hello",
"pages": {
"Hello": {
"component": "hello",
"path": "/",
"filter": {
"view": {
"uri": "https?://.*"
}
}
}
}
},
"display": {
"backgroundColor": "#ffffff",
"fullScreen": false,
"titleBar": true,
"titleBarBackgroundColor": "#000000",
"statusBarImmersive": true,
"statusBarTextStyle": "auto",
"statusBarBackgroundColor": "#ffffff",
"pages": {
"Hello": {
"backgroundColor": "#eeeeee",
"fullScreen": true,
"titleBarBackgroundColor": "#0000ff",
"titleBarText": "Hello"
}
}
},
"subpackages": [
{
"name": "pkgA",
"resource": "PackageA"
},
{
"name": "pkgB",
"resource": "PackageB"
}
],
"trustedSslDomains": ["https://developer.huawei.com", "www.quickapp.cn"]
} errorPage.ux示例代码如下:
onBackPress() {
if (router.getLength() === "1") {
router.replace({
uri: "/"
})
}
}