1.stage模型
在基于Stage模型开发的应用项目代码下,都存在一个app.json5及一个或多个module.json5这两种配置文件。
app.json5主要包含以下内容:
应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。
特定设备类型的配置信息。
module.json5主要包含以下内容:
Module的基本配置信息,例如Module名称、类型、描述、支持的设备类型等基本信息。
应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。
应用运行过程中所需的权限信息。
app.json5配置文件
app.json5配置文件包含以下标签。
module.json5配置文件
deviceTypes标签pages标签metadata标签abilities标签skills标签extensionAbilities标签requestPermissions标签shortcuts标签distroFilter标签
testRunner标签
2.FA模型
config.json由app、deviceConfig和module三个部分组成,缺一不可。
app对象内部结构
app对象包含应用全局配置信息
表1 app对象内部结构说明
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
bundleName |
标识应用的包名,用于标识应用的唯一性。包名是由字母、数字、下划线(_)和点号(.)组成的字符串,必须以字母开头。支持的字符串长度为7~127字节。包名通常采用反向域名形式表示(例如,"com.example.myapplication")。建议第一级为域名后缀"com",第二级为厂商/个人名,也可以采用多级。 |
字符串 |
不可缺省。 |
vendor |
标识对应用开发厂商的描述。字符串长度不超过255字节。 |
字符串 |
可缺省,缺省值为空。 |
version |
标识应用的版本信息。 |
对象 |
不可缺省。 |
apiVersion |
标识应用程序所依赖的HarmonyOS API版本。 |
对象 |
可缺省,缺省值为空。 |
smartWindowSize |
标识应用在模拟器中运行时使用的屏幕尺寸。 |
字符串 |
可缺省,缺省值为空。 |
smartWindowDeviceType |
标识应用在模拟器中运行时可以模拟的设备。 |
字符串数组 |
可缺省,缺省值为空。 |
表2 version对象内部结构说明
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
name |
标识应用的版本号,用于向应用的终端用户呈现。取值可以自定义,长度不超过127字节。自定义规则如下:API5及更早的版本:推荐使用三段数字版本号(也兼容两段式版本号),如A.B.C(也兼容A.B),其中A、B、C取值为0-999范围内的整数。除此之外不支持其他格式。 A段,一般表示主版本号(Major)。 B段,一般表示次版本号(Minor)。 C段,一般表示修订版本号(Patch)。API6版本起:推荐采用四段式数字版本号,如A.B.C.D,其中A、B、C取值为0-99范围内的整数,D的取值为0-999范围内的整数。 A段,一般表示主版本号(Major)。 B段,一般表示次版本号(Minor)。 C段,一般表示特性版本号(Feature)。 D段,一般表示修订版本号(Patch)。 |
数值 |
不可缺省。 |
code |
标识应用的版本号,仅用于HarmonyOS管理该应用,不对应用的终端用户呈现。取值规则如下:API5及更早版本:二进制32位以内的非负整数,需要从version.name的值转换得到。转换规则为:code值=A * 1,000,000 + B * 1,000 + C例如,version.name字段取值为2.2.1,则code值为2002001。API6版本起:code的取值不与version.name字段的取值关联,开发者可自定义code取值,取值范围为2^31以内的非负整数,但是每次应用版本的更新,均需要更新code字段的值,新版本code取值必须大于旧版本code的值。 |
数值 |
不可缺省。 |
minCompatibleVersionCode |
标识应用可兼容的最低版本号,用于跨设备场景下,判断其他设备上该应用的版本是否兼容。格式与version.code字段的格式要求相同。 说明 当前版本暂不支持跨设备能力。 |
数值 |
可缺省,缺省值为code标签值。 |
表3 apiVersion内部结构
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
compatible |
运行应用所需要的最低API版本,取值范围为0~2147483647。 |
数值 |
配置在build.profile中,打包时由IDE填充到config.json中。 |
target |
用于标识应用运行时使用的API版本,取值范围为0~2147483647。 |
数值 |
配置在build.profile中,打包时由IDE填充到config.json中。 |
releaseType |
用于标识应用运行时SDK的状态。 canary:面向特定开发者早期预览版本,不承诺质量,不承诺API稳定。 beta:公开发布的Beta版本,早期Beta版本不承诺API稳定,经历若干次发布后,通过Release Notes对开发者声明该Beta版本为API稳定里程碑,后续版本的API冻结。 release:正式发布版本,承诺质量,API不可变更。当版本处于此状态时版本号中不呈现Stage字段。 |
字符串 |
配置在build.profile中,打包时由IDE填充到config.json中。 |
deviceConfig对象内部结构
deviceConfig包含设备上的应用配置信息,可以包含default,phone,tv,car,wearable等属性。default标签内的配置适用于所有通用设备,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
default |
能够使用全部系统能力的HarmonyOS设备。 |
对象 |
可缺省,缺省值为空。 |
phone |
标识手机的应用配置信息。 |
对象 |
可缺省,缺省值为空。 |
tablet |
标识平板的应用配置信息。 |
对象 |
可缺省,缺省值为空。 |
tv |
标识智慧屏特有的应用配置信息。 |
对象 |
可缺省,缺省值为空。 |
car |
标识车机特有的应用配置信息。 |
对象 |
可缺省,缺省值为空。 |
wearable |
标识智能穿戴特有的应用配置信息。 |
对象 |
可缺省,缺省值为空。 |
上表中各类设备对象的内部结构说明请见表2。
表2 deviceConfig设备对象内部结构说明
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
process |
标识应用或者Ability的进程名。如果在deviceConfig标签下配置了process标签,则该应用的所有Ability都运行在这个进程中。如果在abilities标签下也为某个Ability配置了process标签,则该Ability就运行在这个进程中。该标签最大长度为31。 |
字符串 |
可缺省,缺省值为空。 |
keepAlive |
标识应用是否始终保持运行状态,仅支持系统应用配置,三方应用配置不生效。该标签为布尔类型,可缺省,缺省值为false,如果配置为true,应用将始终保持为运行状态,并在系统启动的时候被系统驱动起来,应用进程退出后,系统也会重新启动应用进程。 |
布尔值 |
可缺省,缺省值为false。 |
supportBackup |
标识应用是否支持备份和恢复。如果配置为"false",则不支持为该应用执行备份或恢复操作。 |
布尔值 |
可缺省,缺省值为false。 |
compressNativeLibs |
标识libs库是否以压缩存储的方式打包到HAP。如果配置为"false",则libs库以不压缩的方式存储,HAP在安装时无需解压libs,运行时会直接从HAP内加载libs库。 |
布尔值 |
可缺省,缺省值为false。 |
network |
标识网络安全性配置。该标签允许应用通过配置文件的安全声明来自定义其网络安全,无需修改应用代码。 |
对象 |
可缺省,缺省值为空。 |
表3 network对象的内部结构说明
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
cleartextTraffic |
标识是否允许应用使用明文网络流量(例如,明文HTTP)。 true:允许应用使用明文流量的请求。false:拒绝应用使用明文流量的请求。 |
布尔值 |
可缺省,缺省值为false。 |
securityConfig |
标识应用的网络安全配置信息。 |
对象 |
可缺省,缺省为空。 |
表4 securityConfig对象的内部结构说明
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
domainSettings |
标识自定义的网域范围的安全配置,支持多层嵌套,即一个domainSettings对象中允许嵌套更小网域范围的domainSettings对象。 |
对象类型 |
可缺省,缺省为空。 |
表5 domainSettings对象内部结构说明
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
cleartextPermitted |
标识自定义的网域范围内是否允许明文流量传输。当cleartextTraffic和security同时存在时,自定义网域是否允许明文流量传输以cleartextPermitted的取值为准。true:允许明文流量传输。false:拒绝明文流量传输。 |
布尔类型 |
可缺省,缺省值为空。 |
domains |
标识域名配置信息,包含两个参数:subdomains和name。subdomains(布尔类型):表示是否包含子域名。如果为"true",此网域规则将与相应网域及所有子网域(包括子网域的子网域)匹配。否则,该规则仅适用于精确匹配项。name(字符串):表示域名名称。 |
对象数组 |
可缺省,缺省值为空。 |
module对象内部结构
module对象包含HAP的配置信息。
属性名称 |
含义 |
数据类型 |
是否可缺省 |
---|---|---|---|
mainAbility |
服务中心图标露出的Ability,常驻进程拉起时会启动mainAbility。 |
字符串 |
可缺省,缺省值为空。 |
package |
标识HAP的包结构名称,在应用内保证唯一性。采用反向域名格式(建议与HAP的工程目录保持一致)。字符串长度为1-127个字节。 |
字符串 |
不可缺省。 |
name |
标识HAP的类名。采用反向域名方式标识,前缀要与同级的package标签指定的包名一致,也可采用"."开头的命名方式。字符串长度不超过255字节。 |
字符串 |
可缺省,缺省值为空。 |
description |
标识HAP的描述信息。字符串长度不超过255字节。如果字符串超出长度或者需要支持多语言,可以采用资源索引的方式添加描述内容。 |
字符串 |
可缺省,缺省值为空。 |
supportedModes |
标识应用支持的运行模式,当前只定义了驾驶模式(drive)。该标签只适用于车机。 |
字符串数组 |
可缺省,缺省值为空。 |
deviceType |
标识允许Ability运行的设备类型。系统预定义的设备类型包括:phone(手机)、tablet(平板)、tv(智慧屏)、car(车机)、wearable(智能穿戴)等。 |
字符串数组 |
不可缺省。 |
distro |
标识HAP发布的具体描述。 |
对象 |
不可缺省。 |
metaData |
标识HAP的元信息。 |
对象 |
可缺省,缺省值为空。 |
abilities |
标识当前模块内的所有Ability。采用对象数据格式。 |
对象数组 |
可缺省,缺省值为空。 |
js |
标识基于ArkUI框架开发的JS模块集合,其中的每个元素代表一个JS模块的信息。 |
对象数组 |
可缺省,缺省值为空。 |
shortcuts |
标识应用的快捷方式信息。采用对象数组格式,其中的每个元素表示一个快捷方式对象。 |
对象数组 |
可缺省,缺省值为空。 |
reqPermissions |
标识应用运行时向系统申请的权限。 |
对象数组 |
可缺省,缺省值为空。 |
colorMode |
标识应用自身的颜色模式,目前支持如下三种模式: - dark:表示按照深色模式选取资源。 - light:表示按照浅色模式选取资源。 - auto:表示跟随系统的颜色模式值选取资源。 |
字符串 |
可缺省,缺省值为"auto"。 |
distroFilter |
标识应用的分发规则。该标签用于定义HAP对应的细分设备规格的分发策略,以便在应用市场进行云端分发应用包时做精准匹配。该标签可配置的分发策略维度包括API Version、屏幕形状、屏幕分辨率。在进行分发时,通过deviceType与这三个属性的匹配关系,唯一确定一个用于分发到设备的HAP。 |
对象 |
可缺省,缺省值为空。但当应用中包含多个entry模块时,必须配置该标签。 |
commonEvents |
定义了公共事件静态订阅者的信息,该字段中需要声明静态订阅者的名称、权限要求及订阅事件列表信息,当订阅的公共事件发送时,该公共事件静态订阅者将被拉起。这里的静态订阅者区分于常用的动态订阅者,前者无需在业务代码中主动调用订阅事件的接口,在公共事件发布时可能未被拉起,而动态订阅者则在业务代码中主动调用公共事件订阅的相关API,因此需要应用处于活动状态。 |
对象数组 |
可缺省,缺省为空。 |
entryTheme |
此标签标识HarmonyOS内部主题的关键字。将标记值设置为名称的资源索引。 |
字符串 |
可缺省,缺省值为空。 |
testRunner |
此标签用于支持对测试框架的配置。 |
对象 |
可缺省,缺省值为空。 |
通过事件方法以配置组件支的事件,事件方法紧随组件,并用"."运算符连接。
对于支持子组件配置的组件,例如容器组件,在"{ ... }"里为组件添加子组件的UI描述。Column、Row、Stack、Grid、List等组件都是容器组件。
struct:自定义组件可以基于struct实现,不能有继承关系,对于struct的实例化,可以省略new。
装饰器:装饰器给被装饰的对象赋予某一种能力,其不仅可以装饰类或结构体,还可以装饰类的属性。多个装饰器可以叠加到目标元素上,定义在同一行中或者分开多行,推荐分开多行定义
build函数:自定义组件必须定义build函数,并且禁止自定义构造函数。build函数满足Builder构造器接口定义,用于定义组件的声明式UI描述。
@Component:装饰struct,结构体在装饰后具有基于组件的能力,需要实现build方法来创建UI。
@Entry: 装饰struct,组件被装饰后作为页面的入口,页面加载时将被渲染显示。
@Preview:装饰struct, 用@Preview装饰的自定义组件可以在DevEco Studio的预览器上进行实时预览,加载页面时,将创建并显示@Preview装饰的自定义组件。
链式调用:以 "." 链式调用的方式配置UI组件的属性方法、事件方法等。
如果组件的接口定义中不包含必选构造参数,组件后面的“()”中不需要配置任何内容。
如果组件的接口定义中包含构造参数,则在组件后面的“()”中可配置相应参数,参数可以使用常量进行赋值。
变量或表达式也可以用于参数赋值,其中表达式返回的结果类型必须满足参数类型要求,变量的定义详见页面级变量的状态管理与应用级变量的状态管理。
使用属性方法配置组件的属性,属性方法紧随组件,并用"."运算符连接。
配置Text组件的字体大小属性:
使用"."运算符进行链式调用并同时配置组件的多个属性,如下所示:
除了直接传递常量参数外,还可以传递变量或表达式,如下所示:
对于系统内置组件,框架还为其属性预定义了一些枚举类型供开发人员调用,枚举类型可以作为参数传递,且必须满足参数类型要求。例如,可以按以下方式配置Text组件的颜色和字体属性:
使用lambda表达式配置组件的事件方法:
使用匿名函数表达式配置组件的事件方法,要求使用bind,以确保函数体中的this引用包含的组件:
使用组件的成员函数配置组件的事件方法:
容器组件之间也可以互相嵌套,实现相对复杂的多级嵌套效果:
更改base en_US zh_CN 下的element文件下的string.josn中的value内容。
选择 菜单栏 / Tools / HVD Manager , 首次点击 , 会提示下载模拟器相关资源 , 下载完成后可以通过浏览器连接远程模拟器 ;
点击 HVD Manager 后 , 弹出如下对话框 和 浏览器 ;
在弹出的浏览器界面中 , 登录华为开发者账号 ;
再验证下手机号 ;
信任浏览器 ;
关联开发环境 ;
此时会显示如下内容 ;
在 HUAWEI DevEco Studio 开发和环境中弹出如下对话框 , 点击 Agree 同意 ;
此时会弹出如下模拟器对话框 :
选择 P40 手机设备 , 双击该条目 ;
此时开发环境中 Remote Device ( 远程设备 ) 中会显示手机模拟器 ; 有个 1 小时倒计时 , 过期后需要重新申请 ;
这是一个远程的模拟器 , 编译程序的时候 , 先将本地的程序编译打包 , 将安装文件发送到远程设备中安装 , 然后再将画面反馈回来