> 文档中心 > 梅科尔工作室-任采薇-鸿蒙笔记1

梅科尔工作室-任采薇-鸿蒙笔记1


主要目录配置文件作用(stage模型和FA模型下)

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标签内的配置适用于所有通用设备,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。

表1  deviceConfig对象内部结构说明

属性名称

含义

数据类型

是否可缺省

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的配置信息。

表1  module对象内部结构说明

属性名称

含义

数据类型

是否可缺省

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组件的字体大小属性:

    1. Text('test')
    2. .fontSize(12)
  • 使用"."运算符进行链式调用并同时配置组件的多个属性,如下所示:

    1. Image('test.jpg')
    2. .alt('error.jpg')
    3. .width(100)
    4. .height(100)
  • 除了直接传递常量参数外,还可以传递变量或表达式,如下所示:

    1. Text('hello')
    2. .fontSize(this.fontSize)
    3. Image('test.jpg')
    4. .width(this.count % 2 === 0 ? 100 : 200)
    5. .height(this.offsetTest + 100)
  • 对于系统内置组件,框架还为其属性预定义了一些枚举类型供开发人员调用,枚举类型可以作为参数传递,且必须满足参数类型要求。例如,可以按以下方式配置Text组件的颜色和字体属性:

  • Text('hello')
  • .fontSize(20)
  • .fontColor(Color.Red)
  • .fontWeight(FontWeight.Bold)
  • 使用lambda表达式配置组件的事件方法:

    
    
    1. Button('add counter')
    2. .onClick(() => {
    3. this.counter += 2
    4. })
  • 使用匿名函数表达式配置组件的事件方法,要求使用bind,以确保函数体中的this引用包含的组件:

    
    
    1. Button('add counter')
    2. .onClick(function () {
    3. this.counter += 2
    4. }.bind(this))
  • 使用组件的成员函数配置组件的事件方法:

    
    
    1. myClickHandler(): void {
    2. this.counter += 2
    3. }
    4. ...
    5. Button('add counter')
    6. .onClick(this.myClickHandler.bind(this))
  • 容器组件之间也可以互相嵌套,实现相对复杂的多级嵌套效果:

更换应用图标和名字方法(FA模型下)

更改base   en_US   zh_CN 下的element文件下的string.josn中的value内容。 

项目远程模拟方法

选择 菜单栏 / Tools / HVD Manager , 首次点击 , 会提示下载模拟器相关资源 , 下载完成后可以通过浏览器连接远程模拟器 ;

点击 HVD Manager 后 , 弹出如下对话框 和 浏览器 ;

在弹出的浏览器界面中 , 登录华为开发者账号 ;

再验证下手机号 ;

信任浏览器 ;

关联开发环境 ;

此时会显示如下内容 ;

在 HUAWEI DevEco Studio 开发和环境中弹出如下对话框 , 点击 Agree 同意 ;

此时会弹出如下模拟器对话框 :

选择 P40 手机设备 , 双击该条目 ;

此时开发环境中 Remote Device ( 远程设备 ) 中会显示手机模拟器 ; 有个 1 小时倒计时 , 过期后需要重新申请 ;

这是一个远程的模拟器 , 编译程序的时候 , 先将本地的程序编译打包 , 将安装文件发送到远程设备中安装 , 然后再将画面反馈回来