Skip to main content
版本:v3

小程序配置

小程序根目录下的 app.json 文件对小程序进行全局配置。

配置项

属性类型必填描述最低版本
configVersionstring配置文件版本号,支持以下值: v3 当前使用值、 v1 已经废弃。凡是本文标注 v3 的特性,需要使用 v3 版本的 app.json 才能正常运行-
appobject小程序配置信息-
runtimeobject小程序运行时设置-
permissionsArray<string>小程序权限列表-
targetsobject构建小程序安装包设置-
i18nobject小程序国际化配置-
defaultLanguagestring小程序的默认语言设置。 当系统无法找到合适的语言设置程序时,会把这个值作为程序的语言。该值不建议为空。-
debugboolean小程序调试功能,支持以下值:true 开启调试功能 false 默认值。关闭调试功能-

configVersion

configVersion 是该 JSON 文件的版本,作用是解析区分。格式为小写字母 v + 数字,如:v3

示例如下:

{
"configVersion": "v3"
}

app

app 表示程序配置信息。

属性类型必填描述最低版本
appIdnumber小程序 id,该 id 是小程序唯一标识v2
appNamestring小程序名称v2
appTypestring小程序类型。支持以下值:app 小程序; watchface 表盘v2
versionobject小程序版本信息v2
iconstring小程序图标 icon 的路径。请参考设计规范 - 图标。如未传,使用默认的图标v2
venderstring开发者名v2
venderIdnumber开发者 id-
coverArray<string>小程序展示用的配图。一般情况下,表盘使用。-
descriptionstring小程序简短的描述v2

version: object

version 表示小程序的版本信息。

属性类型必填描述最低版本
codenumber小程序程序版本号。默认从 1 开始。 注意:每一个版本应该比上一个版本大。 如: 12132001-
namestring小程序语义化版本。建议以 x.x.x 为格式记录版本。 如:1.0.1-

示例如下:

{
"app": {
"appId": 1000089,
"appName": "······",
"appType": "app",
"version": {
"code": 5,
"name": "0.0.5"
},
"icon": "logo.png",
"vender": "······",
"description": "······"
}
}

runtime: object

runtime 表示小程序运行时配置。

属性类型必填描述最低版本
apiVersionobject运行时 API 版本v2
typenumber运行时加载小程序的加载器类型,支持以下值: 0 当前值是默认值。表示该小程序用 QuickJS-js 解释器的加载器加载小程序,后缀名.js ;1 表示该小程序用 C 解释器的加载器加载小程序,后缀名 .c ;2 表示该小程序用 QuickJS-bytecode 解释器的加载器加载小程序,后缀名 .binv2

apiVersion: object

apiVersion 表示 API 版本信息、最低版本、目标版本,已通过版本等。

APP 端小程序通过蓝牙给设备端小程序安装或者升级时,需要获取到设备端的 JS-SDK 版本号,然后进一步和该字段比较。

属性类型必填描述最低版本
minVersionstring运行时要求,这个字段是必须的,判断当前小程序的运行时要求; v <= minVersion, 不可升级或者安装v2
compatiblestring兼容版本,能够兼容的版本,可选v2
targetstring这是目标 SDK 的版本,运行时,可选v2

示例如下:

{
"runtime": {
"apiVersion": {
"compatible": "1.0.0",
"target": "1.0.1",
"minVersion": "1.0.0"
}
"type": "0"
}
}

permissions: Array

permissions 表示权限列表,如果用户申请使用的权限不在该列表,则申请无效,permissions 支持动态申请权限。

{
"permissions": []
}

targets: object

通过 targets 可以区分设备以传入不同的构建配置

警告

targets 对象的键名就是 /assets 目录下子目录的名称,需要保持一致,参考 目录结构

属性类型必填描述最低版本
moduleobject小程序功能模块配置v2
platformsArray<object>小程序运行平台设备选择v2
designWidthnumber当前视图的设计宽度,使用 px 运行时调整;该值取决于设计稿v2

targets 对象的键名可以自由命名,建议使用设备名进行命名,比如这样三款设备都会有独立的构建参数。

{
"targets": {
"gtr-3-pro": {
"module": {
// ···
}
},
"gtr-3": {
"module": {
// ···
}
},
"gts-3": {
"module": {
// ···
}
},
}
}

module: object

属性类型必填描述最低版本
shortcutobject否。仅当 appTypeapp 时该值生效跳转小程序的描述v2
pageobject是。当 appTypeapp 时必填设备端页面模块配置v2
app-widgetobject快捷卡片配置v2
secondary-widgetobject副屏应用配置v2
watch-widgetobject表盘组件模块配置v2
watchfaceobject是。当 appTypewatchface 时必填表盘模块配置v2
app-sideobject伴生服务配置v2
settingobject设置应用配置v2
app-serviceobject后台服务配置v3
app-eventobject系统事件监听配置v3

示例如下

{
"module": {
"page": {
"pages": ["page/gtr-3-pro/loading"]
},
"app-side": {
"path": "app-side/index"
},
"setting": {
"path": "setting/index"
},
"app-widget": {
"widgets": [
{
"path": "app-widget/index",
"icon": "icon.png",
"name": "app-widget-demo",
"runtime": {
"type": "js"
}
}
]
},
"secondary-widget": {
"widgets": [
{
"path": "secondary-widget/index",
"icon": "icon.png",
"preview": "preview.png",
"name": "secondary-widget-demo",
"runtime": {
"type": "js"
}
}
]
}
}
}

shortcut: object

shortcut 表示跳转小程序的描述。该属性与 page 属性互斥,一个包中不会同时存在。

属性类型必填描述最低版本
schemestring协议类型:支持类型为 dappv2
appLangTypenumber跳转目标小程序类型: 0:js 小程序; 1:native 应用v2
appIdnumberappLangType 为 js 时,必填小程序 appidv2
pathstring文件路径/native 应用名v2
paramsstring跳转参数v2

page: object

page 表示设备端页面模块配置。该属性与 shortcut 属性互斥,一个包中不会同时存在。

属性类型必填描述最低版本
pagesArray<string>页面路径,至少一个;默认第一个为小程序入口v2

app-widget: object

app-widget 表示三方小程序组件。

属性类型必填描述最低版本
widgetsArray<string>组件路径,可无v2

watch-widget: object

watch-widget 表示表盘组件。

属性类型必填描述最低版本
widgetsArray<string>组件路径,可无v2

watchface: object

watchface 表示表盘。

属性类型必填描述最低版本
pathstring表盘路径v2
mainnumber否(不添加默认 1)首页显示表盘(0:无)v2
editablenumber否(不添加默认 0)可编辑表盘(0:不支持)v2
lockscreennumber否(不添加默认 0)息屏显示(0:无)v2
photoscreennumber否(不添加默认 0)照片表盘(0:不支持)v2

app-side: object

app-side 表示伴生应用。

属性类型必填描述最低版本
pathstring伴生应用路径v2

setting: object

setting 表示设置页面。

属性类型必填描述最低版本
pathstring设置页面路径v2

platforms: object

platforms 表示目标平台选择。需要跟着开发者选择类型:target.platforms 规范取值规范。

deviceSource 的取值参考 搭载 Zepp OS 设备列表

属性类型必填描述最低版本
namestring设备描述,开发者自行命名v2
deviceSourcenumber是,v3 为否设备的编号v2
ststring屏幕的类型,支持 srb 详情参考 屏幕适配v3
srstring屏幕的分辨率,格式为 w + 数字,如 w480 表示屏幕宽度 480 px,详情参考 屏幕适配v3

示例如下:

{
"platforms": [{
"name": "gts-3",
"deviceSource": 229
}, {
"name": "gts-3",
"deviceSource": 230
}]
}

designWidth

designWidth 表示设计宽度,提供给全局的 px 函数作为尺寸计算基准,参考 屏幕适配

{
"designWidth": 390
}

i18n: object

i18n 作用是配置多语言处理。

各个国家区域对应的代码缩写,参考 多语言映射

示例如下:

{
"i18n": {
"en-US": {
"appName": "······"
},
"en-ES": {
"appName": "······"
}
}
}

defaultLanguage: string

示例如下:

{
"defaultLanguage": "zh-cn"
}

完整的 app.json 示例

以示例应用 Calories 的 app.json 为例

警告

此示例只配置了 Amazfit GTR 3 Pro、Amazfit GTR 3、Amazfit GTS 3 三款设备的 deviceSource,如需支持其余设备,请参考 targets 字段的配置自行添加

{
"configVersion": "v2",
"app": {
"appId": 1000000,
"appName": "Calories",
"appType": "app",
"version": {
"code": 1,
"name": "1.0.0"
},
"icon": "icon.png",
"vender": "huami",
"description": ""
},
"permissions": [],
"runtime": {
"apiVersion": {
"compatible": "1.0.0",
"target": "1.0.1",
"minVersion": "1.0.0"
}
},
"targets": {
"gtr-3-pro": {
"module": {
"page": {
"pages": [
"page/gtr-3/index",
"page/gtr-3/foodList"
]
}
},
"platforms": [{
"name": "gtr3pro",
"deviceSource": 229
}, {
"name": "gtr3pro",
"deviceSource": 230
}],
"designWidth": 480
},
"gtr-3": {
"module": {
"page": {
"pages": [
"page/gtr-3/index",
"page/gtr-3/foodList"
]
}
},
"platforms": [{
"name": "gtr3",
"deviceSource": 226
}, {
"name": "gtr3",
"deviceSource": 227
}],
"designWidth": 480
},
"gts-3": {
"module": {
"page": {
"pages": [
"page/gts-3/index",
"page/gts-3/foodList"
]
}
},
"platforms": [{
"name": "gts3",
"deviceSource": 224
}, {
"name": "gts3",
"deviceSource": 225
}],
"designWidth": 390
}
},
"i18n": {
"zh-CN": {
"appName": "卡路里"
},
"ar-EG": {
"appName": "السعرات الحرارية"
},
"ca-ES": {
"appName": "Calories"
},
"cs": {
"appName": "Kalorie"
},
"da-DK": {
"appName": "Kalorier"
},
"de-DE": {
"appName": "Kalorien"
},
"el": {
"appName": "Θερμίδες"
},
"en-US": {
"appName": "Calories"
},
"es-ES": {
"appName": "Calorías"
},
"fi": {
"appName": "Kalorit"
},
"fr-FR": {
"appName": "Calories"
},
"he": {
"appName": "קלוריות"
},
"hi": {
"appName": "कैलोरी"
},
"hu-HU": {
"appName": "Kalória"
},
"id-ID": {
"appName": "Kalori"
},
"it-IT": {
"appName": "Calorie"
},
"ja-JP": {
"appName": "カロリー"
},
"ko-KR": {
"appName": "칼로리"
},
"mr": {
"appName": "कॅलरीज"
},
"nb-NO": {
"appName": "Kalorier"
},
"nl": {
"appName": "Calorieën"
},
"pl-PL": {
"appName": "Kalorie"
},
"pt": {
"appName": "Calorias"
},
"pt-BR": {
"appName": "Calorias"
},
"ro": {
"appName": "Calorii"
},
"ru-RU": {
"appName": "Калории"
},
"sk": {
"appName": "Kalórie"
},
"sr": {
"appName": "Калорије"
},
"sv-SE": {
"appName": "Kalorier"
},
"th-TH": {
"appName": "แคลอรี"
},
"tr-TR": {
"appName": "Kalori"
},
"uk": {
"appName": "Калорії"
},
"vi": {
"appName": "Calo"
},
"zh-TW": {
"appName": "卡路里"
}
},
"defaultLanguage": "en-US"
}