OpenHarmony实战开发:FA模型切换Stage模型 (配置文件切换)

往期鸿蒙全套实战精彩文章必看内容:


配置文件的差异

FA模型应用在config.json文件中描述应用的基本信息,一个应用工程中可以创建多个Module,每个Module中都有一份config.json文件。config.json由app、deviceConfig和module三部分组成,app标签用于配置应用级别的属性,如果一个应用有多个Module,需要由开发者保证各个config.json文件中app标签配置的一致性。

Stage模型应用在app.json5module.json文件中描述应用的基本信息,和FA模型应用类似,一个Stage模型应用工程中同样可以创建多个Module,但是一个应用工程中仅存在一份app.json5,用于配置应用级别的属性,对每个Module都生效;每个Module中都有一份module.json5配置文件,用于配置Module级别的属性,仅对当前Module生效。

图1 配置文件差异

app和deviceConfig的切换

为了便于开发者维护应用级别的属性配置,Stage模型将config.json中的app和deviceConfig标签提取到了app.json5中进行配置,并对部分标签名称进行了修改,具体差异见下表。

表1 配置文件app标签差异对比

配置项FA模型配置文件config.json中app标签Stage模型配置文件app.json5中app标签
应用的版本号“version”: {
“code”: 1,
}
“versionCode”: 1 ,
标识版本号的文字描述,用于向用户展示“version”: {
“name”: “1.0.0”,
}
“versionName” : “1.0.0” ,
标识应用可兼容的最低版本号“version”: {
“minCompatibleVersionCode”: 1,
}
“minCompatibleVersionCode” : 1 ,
运行应用所需要的最低API版本“apiVersion”: {
“compatible”: 7,
}
“minAPIVersion” : 7 ,
应用运行所需的目标API版本“apiVersion”: {
“target”: 8,
}
“targetApiVersion” : 8 ,
应用运行所需的目标API版本的类型“apiVersion”: {
“releaseType”: Release,
}
“apiReleaseType”: “Release” ,

app.json5中对原先config.json中的deviceConfig标签进行了重构,将deviceConfig下的标签的设备信息整合到了app.json5的app标签下,具体差异见下表。

表2 配置文件deviceConfig标签差异对比

FA中deviceConfig标签描述stage模型中差异比对
deviceConfig标签deviceConfig标签配置了设备信息。/Stage模型中没有该标签,直接在app标签下配置设备信息。
process标识应用或者UIAbility的进程名。如果在deviceConfig标签下配置了process标签,则该应用的所有UIAbility都运行在这个进程中。如果在abilities标签下也为某个UIAbility配置了process标签,则该UIAbility就运行在这个进程中。/Stage模型不支持配置进程名称。
keepAlive标识应用是否始终保持运行状态,仅支持系统应用配置,三方应用配置不生效。/Stage模型不支持系统应用模型管控方式变更。
supportBackup标识应用是否支持备份和恢复。/Stage模型不支持。
compressNativeLibs标识libs库是否以压缩存储的方式打包到HAP。/Stage模型不支持。
network标识网络安全性配置。/Stage模型不支持。

module的切换

从FA模型切换到Stage模型时,开发者需要将config.json文件module标签下的配置迁移到module.json5配置文件module标签下,具体差异见下列表格。

表1 FA模型module标签与Stage模型module标签差异对比

FA标签标签说明对应的Stage标签差异说明
mainAbility服务中心图标露出的ability,常驻进程拉起时会启动mainAbility。mainElement标签名称变更,Stage模型不在使用“.”符号。
package标识HAP的包结构名称,在应用内保证唯一性。/Stage模型使用name来保证应用唯一性。FA模型升级到Stage模型时,Stage模型的name需要和FA模型的package保持一致,否则会导致升级失败。
name标识HAP的类名。/FA模型中实际未使能,Stage模型没有与之对应的标签。
supportedModes标识应用支持的运行模式,当前只定义了驾驶模式(drive)。/Stage模型已废弃。
distro对象中的moduleName标识当前HAP的名称。
distro对象中的moduleName。
name标签变更。
distro对象中的moduleType标识当前HAP的类型,包括两种类型:entry和feature。另外,如果表示HAR包类型,请设置为har。type标签变更。
distro对象中的installationFree标识当前HAP是否支持免安装特性。installationFree标签变更。
distro对象中的deliveryWithInstall标识当前HAP是否支持随应用安装。deliveryWithInstall标签变更。
metaData标识HAP的元信息。metadata具体差异见表2。
abilities标识当前模块内的所有Ability。abilities具体差异见表5。
js标识基于ArkUI框架开发的JS模块集合,其中的每个元素代表一个JS模块的信息。pagesStage模型在module标签下保留该对象中的pages,window配置与pages的下一级。
shortcuts标识应用的快捷方式信息。shortcut_config.json文件在开发视图的resources/base/profile下面定义配置文件shortcut_config.json。
reqPermissions标识应用运行时向系统申请的权限。requestPermissions标签名称变更。
colorMode标识应用自身的颜色模式。/Stage模型不支持。
distroFilter标识应用的分发规则。distributionFilter_config.json文件Stage模型在开发视图的resources/base/profile下面定义配置文件distributionFilter_config.json。
reqCapabilities标识运行应用程序所需的设备能力。/Stage模型不支持。
commonEvents公共事件。common_event_config.json文件Stage模型在开发视图的resources/base/profile下面定义配置文件common_event_config.json。
entryTheme此标签标识系统内部主题的关键字。/Stage模型不支持。

表2 FA模型metaData和Stage中metadata对比

FA标签标签说明对应的Stage模型标签差异对比
parameters标识调用Ability时所有调用参数的元信息。/Stage模型不支持。
results标识Ability返回值的元信息。/Stage模型不支持。
customizeData该标签标识父级组件的自定义元信息,Parameters和results在application不可配。metadata具体差异见表3。

表3 FA模型metaData的customizeData和Stage中metadata对比

FA标签标签说明对应的Stage模型标签差异对比
name标识数据项的键名称。字符串最大长度为255字节。name无。
value标识数据项的值。字符串最大长度为255字节。value无。
extra标识当前custom数据的格式,取值为表示extra的资源值。resource标签变更。具体实例见表4。

表4 FA模型metaData和Stage中metadata示例

FA模型示例Stage模型示例
“meteData”: {
“customizeDate”: [{
“name”: “label”,
“value”: “string”,
“extra”: “$string:label”,
}]
}
“meteData”: [{
“name”: “label”,
“value”: “string”,
“resource”: “$string:label”,
}]

表5 FA模型和Stage中abilities差异对比

FA模型的abilities对象标签描述Stage模型中abilities对象标签差异对比
process运行应用程序或Ability的进程名称。/Stage模型不支持abilities中配置,在module标签下配置process。
uri标识Ability的统一资源标识符。/Stage模型不支持。
deviceCapability标识Ability运行时要求设备具有的能力,采用字符串数组的格式表示。/Stage模型不支持。
metaData该标签标识ability的元信息。metadata具体差异见表2。
type标识Ability的类型。/Stage模型不支持。
grantPermission指定是否可以向Ability内任何数据授予权限。/abilities内不支持。
readPermission标识读取Ability的数据所需的权限。该标签仅适用于data类型的Ability。/abilities内不支持,在extensionAbilities标签中支持。
writePermission标识向Ability写数据所需的权限。/abilities内不支持,在extensionAbilities标签中支持。
configChanges标识Ability关注的系统配置集合。/Stage模型不支持。
mission标识Ability指定的任务栈。/Stage模型不支持。
targetAbility标识当前Ability重用的目标Ability。/Stage模型不支持。
multiUserShared标识Ability是否支持多用户状态进行共享,该标签仅适用于data类型的Ability。/Stage模型不支持。
supportPipMode标识Ability是否支持用户进入PIP模式(用于在页面最上层悬浮小窗口,俗称"画中画",常见于视频播放等场景)。/Stage模型不支持。
formsEnabled标识Ability是否支持卡片(forms)功能。/Stage模型不支持。
forms标识服务卡片的属性。该标签仅当formsEnabled为"true"时,才能生效。form_config.json文件Stage模型在开发视图的resources/base/profile下面定义配置文件form_config.json。
srcLanguageAbility开发语言的类型。/Stage模型不支持。
srcPath该标签标识Ability对应的JS组件代码路径。srcEntry该标签标识ability所对应的js代码路径。
uriPermission标识该Ability有权访问的应用程序数据。/Stage模型不支持。

看完三件事❤️

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注作者 ,不定期分享原创知识。
  • 同时可以期待后续文章ing🚀。   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值