目录

manifest文件

manifest.json文件中包含了应用描述、接口声明、页面路由信息。

属性

类型

默认值

是否必填

描述

package

string

-

是

应用包名,确认与原生应用的包名不一致,推荐采用com.company.module的格式,如:com.example.demo。

由数字、字母、"."、下划线组成,必须以字母开头,以数字、字母或者下划线结尾,同时必须包含".",长度不能超过255字节。

name

string

-

是

应用名称,与应用商店保存的名称一致,用于在桌面图标、弹窗等处显示应用名称。

支持设置为多语言字符串,但不支持以下场景:

  1. 固定字符串与变量字符串的组合

    例如不支持设置为:"name":"快应用示例${message.appname}"

  2. 多变量字符串的拼接

    例如不支持设置为:"name":"${message.appname1}${message.appname2}"

  3. 除"."之外的子节点访问

    例如不支持设置为:"name":"${message['appname']}",应该设置为"name":"${message.appname}"

icon

string

-

是

用于在应用市场或者桌面显示的应用图标,必须与提交上架审核的应用图标信息一致。

versionName

string

-

否

应用版本名称,如:"1.0"。

versionCode

integer

-

是

应用版本号,从1自增,务必每次重新上传包时versionCode+1,否则将影响上架版本的更新。例如原版本为11,更新版本的versionCode需要为12。

minPlatformVersion

integer

1000

是

支持的最小平台版本号,兼容性检查,避免上线后在低版本平台运行并导致不兼容。

说明:

当用户手机上的快应用引擎版本低于该值,打开快应用时将弹框提示用户更新到最新版本。用户可以选择不更新,退出快应用。

features

array

-

否

接口列表,绝大部分接口都需要在这里声明,否则不能调用,详见每个接口的文档说明。示例如下:

[
    {
      "name": "system.app"
    },
    {
      "name": "system.network"
    }
]

permissionDesc(1072+)

array

-

否

获取权限的理由描述,即当调用API需要用户授权时,在授权框显示的文字信息。理由描述需尽量清晰、合理。

详细定义格式参见“permissionDesc格式说明”。

config

object

-

是

系统配置信息,详细内容参见“config”。

router

object

-

是

路由信息,详细内容参见“router”。

display

object

-

否

UI显示相关配置,详细内容参见“display”。

subpackages

object

-

否

定义并启用分包加载,详细内容参见“subpackages”。

trustedSslDomains(1060+)

array

-

否

可信的 https 站点列表,如:"www.huawei.com"。

  • 在1060版本,当 web 组件访问这些站点出现证书过期或无效时,会提供继续访问的选项,供用户选择是否继续访问。
  • 从1065版本开始,始终提供继续访问的选项,供用户选择是否继续访问。

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}"
    }
]

config

用于定义系统配置和全局数据。

属性

类型

默认值

描述

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子字段中配置需要在后台运行的接口。可以配置的接口包括:

  • system.audio
  • system.geolocation
  • system.record
  • system.request

详细使用方法参见“后台运行”。

recreateOnFolding(1070+)

boolean

true

折叠屏折叠、展开过程中是否重新加载页面。

  • true:重新加载页面。效果和初次进入当前页面相同,会回调生命周期函数onInit、onReady、onShow,通过页面调整传递的参数依然可以获取。
  • false:不重新加载页面。

aboutPageConfig(1078+)

array

-

在统一菜单中“关于”页面的条目,最多可以展示20条。详细内容参见“aboutPageConfig说明”。

grayMode(1100+)

object

-

页面饱和度为零的显示模式(灰色模式),用以响应特殊事件,详细配置请参见“config.grayMode说明”,该配置项会被configuration.setGrayMode的相关配置覆盖。

permissionAdapted (1107+)

boolean

false

每48小时可以提出一次权限请求。该属性表示在48小时内请求许可时是否显示toast。

  • false: 显示toast消息。
  • true: 不显示toast消息。

exit(1110+)

object

-

快应用引擎支持退出应用时返回快应用首页。对于此功能,添加了退出配置,即在exit属性中定义所需的行为。它包含两个不同的关键值,如下:

  • desc:退出应用时显示的字符内容。
  • jumpEntry:表明直接退出应用还是返回快应用首页。

disableDynamicCode(1104+)

boolean

false

禁止动态代码执行

config.network说明:

属性

类型

默认值

单位

是否必填

描述

connectTimeout

number

30000

ms

否

网络连接超时时间。

readTimeout

number

30000

ms

否

网络流读取超时时间。

writeTimeout

number

30000

ms

否

写入超时时间。

aboutPageConfig说明

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"]
}

router

用于定义页面的组成和相关配置信息,如果页面没有配置路由信息,则在编译打包时跳过。

属性

类型

默认值

描述

entry

string

-

首页名称。

errorPage(1060+)

string

-

错误页面。

  1. 当跳转到一个不存在的页面时,会跳转到错误页面,错误页面与其他页面同样需要在router里去注册,此选项为可选配置。
  2. 如果没有设置错误页面或者错误页面没有在router中注册,则跳转到默认错误页面,默认错误页面的launchMode为singleTask。在使用默认错误页面的时候,如果在页面栈里仅有一个页面而且这个页面是错误页面的时候,点击返回键会回到快应用首页。返回首页的逻辑参见“errorpage.ux示例代码”。

pages

object

-

页面配置列表,key值为页面名称(对应页面目录名,例如Hello对应'Hello'目录),value为页面详细配置page,详细内容参见“router.page”。

[h2]router.pages

用于定义单个页面路由信息。

属性

类型

默认值

是否必填

描述

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"模式时每次打开目标页面都会打开已有的目标页面并回调onRefresh生命周期函数,清除该页面上打开的其他页面,没有打开过此页面时会创建新的目标页面实例。
  • 标识为"standard"模式时会每次打开新的目标页面(多次打开目标页面地址时会存在多个相同页面)

首页仅支持"singleTask"模式。

[h2]router.page.filter

声明页面可以处理某种请求,页面可以从$page获取打开页面的参数,参见“script脚本”。filter的结构如下:

"filter": {
  "<action>": {
    "uri": "<pattern>"
  }
}

属性

类型

默认值

是否必填

描述

action

string

-

是

请求的动作,目前仅支持view这一种。

uri

pattern

/

否

请求的数据的匹配规则。必须是正则表达式。如https?://.*可以匹配所有http和https类型的网址。

处理所有 http 和 https 请求的 filter 定义如下:

"filter": {
  "view": {
    "uri": "https?://.*"
  }
}

display

用于定义与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

软键盘弹出时,为保证输入框可见,页面的调整方式。

  • adjustPan:上移页面
  • adjustResize:压缩页面显示区域,当页面全屏时,此设置不生效

pages

object

-

各个页面的显示样式,key为页面名(与路由中的页面名保持一致),value为窗口显示样式,页面样式覆盖default样式。

orientation

string

portrait

页面显示横屏还是竖屏:

  • portrait:竖屏
  • landscape:横屏
  • auto(1070+):随系统横竖屏设置(受系统自动旋转开关的控制)

横竖屏切换后,屏幕宽度会发生变化,导致开发者即使设置相同的尺寸,实际展示会不一致。所以如果设置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个值:

  • -1:跟随系统主题模式
  • 0:固定浅色模式
  • 1:固定深色模式

menuBarData(1070+)

object

-

页面菜单描述对象。

fitCutout(1101+)

string

-

是否在异形区域绘制内容。

  • none:不会在异形区域绘制内容,异形区域加黑处理
  • portrait:竖屏下会在异形区域绘制内容
  • landscape:横屏下会在异形区域绘制内容
  • portrait | landscape:竖屏和横屏下都会在异形区域绘制内容
说明:

竖屏下,只有当 fullScreen 为 true 时,此属性才会生效。

fitWideScreenMode(1109+)

string

fitScreen

指定适用于宽屏设备上的显示模式。

  • original:原始模式,不做任何处理,主要适配工作由三方开发者根据设备进行适配。
  • fitScreen(默认):在屏幕中间选择合适大小的区域展示三方快应用,不需要三方开发者做任何处理。
  • fillScreen:兼容处理。
说明:

如果recreateOnFolding设置为false,则该属性的fitscreen值设置无效。

[h2]menuBarData

用于描述页面菜单。

属性

类型

描述

menuBar(1083+)

boolean

定义菜单栏是否可见。

  • 当 fullScreen 为 false 时,此属性不会生效,并且菜单栏将始终可见。
  • 当 fullScreen 为 true 时,
    • 如果 menuBar 属性为 true 或未定义,则菜单栏将可见。
    • 如果 menuBar 属性为 false ,则菜单栏将不可见。
注意:

请勿在应用首页及一级菜单隐藏胶囊菜单,其他页面只能出于用户体验目的,在沉浸式页面隐藏胶囊菜单。

menuBarStyle(1070+)

string

  • dark:(默认)图标深色样式
  • light:图标浅色样式

shareTitle(1090+)

string

menuBar中分享功能对应标题,默认为当前快应用名称。

shareDescription(1090+)

string

menuBar中分享功能对应描述,默认为当前快应用描述。

shareIcon(1090+)

string

menuBar中分享功能对应图片,默认为当前快应用icon。

shareCurrentPage(1090+)

boolean

menuBar中是否可以分享当前页面。

  • false:只能分享首页,不可以分享当前页面。
  • true(默认值):可以分享当前页面。
注意:

设置为true时,请不要在页面参数中添加敏感信息,如帐号、密码等涉及到安全类的信息字段内容。

shareParams(1090+)

object

menuBar中分享当前页面的透传参数,格式为:{"key":value} 。

shareUrl(1090+)

string

menuBar中备用分享链接。分享到不支持运行快应用的设备(比如ios设备)时,暂不支持跳转至此备用链接。

usePageParams(1090+)

boolean

menuBar中是否添加当前页面参数到分享参数中。

  • false:不添加
  • true:添加
  • 未配置:由shareCurrentPage决定(shareCurrentPage为false时,不添加;为true时,添加。)

对于使用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))
}

[h2]menuBar快速适配

使用menuBar,您无需再重复实现分享、添加到桌面、关联页等功能,可减少工作量。

您可以按照以下步骤,实现快应用项目对menuBar的适配:

subpackages

用于定义分包的相关配置。分包的详细使用方法请参见“分包加载”。

属性

类型

描述

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: "/"
    })
  }
}

相关链接

[h2]FAQ

[h2]案例