玩转HarmonyOS NEXT之配置文件篇

配置文件概述

本文以Stage模型为例,详细介绍了HarmonyOS NEXT应用的各种配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。

在基于Stage模型开发的应用项目代码下,都存在一个app.json5的配置文件、以及一个或者多个module.json5配置文件。

应用配置文件

app.json5配置文件

先通过一个示例,整体认识下app.json5配置文件。

{"app": {"bundleName": "com.application.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0","icon": "$media:app_icon","label": "$string:app_name","description": "$string:description_application","minAPIVersion": 9,"targetAPIVersion": 9,"apiReleaseType": "Release","debug": false,"car": {"minAPIVersion": 8},"targetBundleName": "com.application.test","targetPriority": 50,"appEnvironments": [{"name":"name1","value": "value1"}],"maxChildProcess": 5},
}

app.json5配置文件主要包含一下内容:

  • 应用的全局配置信息,包含应用的Bundle名称、开发厂商、版本号等基本信息。
  • 特定设备类型的配置信息。

具体属性如下表:

属性名称属性含义数据类型是否必填
bundleName标识应用的Bundle名称,用于标识应用的唯一性。命名规则如下 :
- 由字母、数字、下划线和符号“.”组成,且必须以字母开头。
- 字符串最小长度为7字节,最大长度为128字节。
- 推荐采用反域名形式命名(如com.example.demo,建议第一级为域名后缀com,第二级为厂商/个人名,第三级为应用名,也可以多级)。对于随系统源码编译的应用,建议命名为com.ohos.demo形式,其中的ohos标识系统应用。
string
bundleType标识应用的Bundle类型,用于区分应用或者元服务。支持的取值如下:
- app:当前Bundle为应用。
- atomicService:当前Bundle为元服务。
shared:当前Bundle为共享库应用,预留字段。
- appService:当前Bundle为系统级共享库应用,仅供系统应用使用。
string否,默认值为app
debug标识应用是否可调试。
- true:可以进行断点调试。
- false:不可以进行断点调试。
Boolean否,默认值为false
icon标识应用的图标,取值为图标资源文件的索引。string
label标识应用的名称,取值为字符串资源的索引,字符串长度不超过63字节。string
description标识应用的描述信息。取值为长度不超过255字节的字符串,内容为描述信息的字符串资源索引。string否,默认值为空
versionCode标识应用的版本号,取值为小于2^31的正整数。此数字仅用于确定某个版本是否比另一个版本更新,数值越大标识版本越高。
开发者可以将该值设置为任何正整数,但是必须确保应用的新版本都使用比旧版本更大的值。
number
versionName标识向用户展示的应用版本号。
取值为长度不超过127字节的字符串,仅由数字和点构成,推荐采用“A.B.C.D"四段式的形式。四段式推荐的含义如下所示。
第一段:主版本号/Major,范围0~99,重大修改的版本,如实现新的大功能或重大变化。
第二段:次版本号/Minor,范围0~99,表示实现较突出的特点,如新功能添加或大问题修复。
第三段:特性版本号/Feature,范围0~99,标识规划的新版本特性。
第四段:修订版本号/Parch,范围0~999,表示维护版本,如修复bug。
string
minCompatibleVersionCode标识应用能够兼容的最低历史版本号,用于应用跨设备兼容性判断,取值范围为0~2147483647。number否,默认值为versionCode标签的值。
minAPIVersion标识应用运行需要的SDK的API最小版本。取值范围为0~2147482647number应用编译构建时由build-profile.json5中的compatibleSdkVersion自动生成。
targetAPIVersion标识应用运行需要的API目标版本。取值范围为0~2147483647。number应用编译构建时由build-profile.json5中的compileSdkVersion自动生成。
apiReleaseType标识应用运行需要的API目标版本的类型,采用字符串类型表示。取值为”CaneryN"、“BetaN”或者“Release”,其中,N代表大于零的整数。
- Canary:受限发布的版本。
- Beta:公开发布的Beta版本。
- Release:公开发布的正式版本。
string应用编译构建时根据当前使用的SDK的Stage自动生成。即便手动配置了取值,编译构建时也会被覆盖。
accessible标识应用是否能访问应用的安装目录,仅针对Stage模型的系统应用和预置应用生效。boolean否,默认值为false
multiProjects标识当前工程是否支持多个工程的联合开发。
true:当前工程支持多个工程的联合开发。
- false:当前工程不支持多个工程的联合开发。
否,默认值为false
asanEnabled标识应用程序是否开启asan检测,用于辅助定位buffer越界造成的crash问题。
- true:当前工程开启asan检测。
- false:当前工程不开启asan检测。
boolean否,默认值为false
tablet标识对tablet设备做的特殊配置,可以配置的属性字段有minAPIVersion。如果使用该属性对tablet设备做了特殊配置,则应用在tablet设备中会采用此处配置的属性值,并忽略在app.json5公共区域配置的属性值。object否,默认值为app.json5公共区域配置的属性值。
tv标识对tv设备做的特殊配置,可以配置的属性字段有minAPIVersion。如果使用该属性对tv设备做了特殊配置,则应用在tv设备中会采用此处配置的属性值,并忽略在app.json5公共区域配置的属性值。object否,默认值为app.json5公共区域配置的属性值。
wearable标识对wearable设备做的特殊配置,可以配置的属性字段有minAPIVersion。如果使用该属性对wearable设备做了特殊配置,则应用在wearable设备中会采用此处配置的属性值,并忽略在app.json5公共区域配置的属性值。object否,默认值为app.json5公共区域配置的属性值。
car标识对car设备做的特殊配置,可以配置的属性字段有minAPIVersion。如果使用该属性对car设备做了特殊配置,则应用在car设备中会采用此处配置的属性值,并忽略在app.json5公共区域配置的属性值。object否,默认值为app.json5公共区域配置的属性值。
default标识对default设备做的特殊配置,可以配置的属性字段有minAPIVersion。如果使用该属性对default设备做了特殊配置,则应用在default设备中会采用此处配置的属性值,并忽略在app.json5公共区域配置的属性值。object否,默认值为app.json5公共区域配置的属性值。
targetBundleName标识当前包所指定的目标应用,标签值的取值规则和范围与bundleName标签一致。配置该字段的应用为具有overlay特征的应用string否,默认值为空。
targetPriority标识当前应用的优先级,取值范围为1~100。配置targetBundleName字段之后,才支持配置该字段。number否,默认值为1。
generateBuildHash标识当前应用的所有HAPHSP是否由打包工具生成哈希值。该字段配置为true时,该应用下的所有HAP和HSP都会由打包工具生成对应的哈希值。系统OTA升级时,若应用的versionCode保持不变,可根据哈希值判断应用是否需要升级。说明:该字段仅对预置应用生效。boolean否,默认值为false
GWPAsanEnabled标识应用程序是否开启GWP-asan堆内存检测工具,用于对内存越界、内存释放后使用等内存破坏问题进行分析。
- true:当前工程开启GWP-asan检测。
- false:当前工程不开启GWP-asan检测。
boolean否,默认值为false
appEnvironments标识当前模块配置的应用环境变量。Array否,默认值为空。
maxChildProcess标识当前应用自身可创建的子进程的最大个数,取值范围为0~512,0表示不限制,当应用有多个模块时,以entry模块的配置为准。number否,默认使用系统配置的默认值。

module.json5配置文件

先通过一个示例,整体认识下module.json5配置文件。

{"module": {"name": "entry","type": "entry","description": "$string:module_desc","mainElement": "EntryAbility","deviceTypes": ["tv","tablet"],"deliveryWithInstall": true,"installationFree": false,"pages": "$profile:main_pages","virtualMachine": "ark","metadata": [{"name": "string","value": "string","resource": "$profile:distributionFilter_config"}],"abilities": [{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ts","description": "$string:EntryAbility_desc","icon": "$media:icon","label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [{"entities": ["entity.system.home"],"actions": ["ohos.want.action.home"]}]}],"requestPermissions": [{"name": "ohos.abilitydemo.permission.PROVIDER","reason": "$string:reason","usedScene": {"abilities": ["FormAbility"],"when": "inuse"}}]},"targetModuleName": "feature","targetPriority": 50,"isolationMode": "nonisolationFirst"
}

module.json5配置文件主要包含以下内容:

  • Module的基本配置信息,包含Module名称、类型、描述、支持的设备类型等基本信息。
  • 应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。
  • 应用运行过程中所需的权限信息。

具体属性如下表:

属性名称属性含义数据类型是否必输
name标识当前Module的名称,确保该名称在整个应用中唯一。取值为长度不超过31字节的字符串,不支持中文。应用升级时允许修改该名称,但需要应用适配Module相关数据目录的迁移string
type标识当前Module的类型。支持的取值如下:
- entry:应用的主模块。
- feature:应用的动态特性模块。
*- har*:静态共享包模块。
- shared:动态共享包模块。
string
srcEntry标识当前Module所对应的代码路径,取值为长度不超过127字节的字符串。string否,默认值为空。
description标识当前Module的描述信息,取值为长度不超过255字节的字符串,可以采用字符串资源索引格式。string否,默认值为空。
process标识当前Module的进程名,取值为长度不超过31字节的字符串。如果在HAP标签下配置了process,则该应用的所有UIAbilityDataShareExtensionAbilityServiceExtensionAbility都运行在该进程中。说明:仅支持系统应用配置,第三方应用配置不生效。string否,默认值为app.json5文件下app标签下的bundleName
mainElement标识当前Module的入口UIAbility名称或者ExtensionAbility名称,取值为长度不超过255字节的字符串。string否,默认值为空。
deviceTypes标识当前Module可以运行在哪类设备上。Array
deliveryWithInstall标识当前Module是否在用户主动安装的时候安装,即该Module对应的HAP是否跟随应用一起安装。
- true:主动安装时安装。
- false:主动安装时不安装
boolean
installationFree标识当前Module是否支持免安装特性。
- true:表示支持免安装特性,且符合免安装约束。
- false:表示不支持免安装特性。
说明:当bundleType为元服务时,该字段需要配置为true。反之,该字段需要配置为false
boolean
virtualMachine标识当前Module运行的目标虚拟机类型,仅供云端分发使用,如应用市场和分发中心。如果目标虚拟机类型为ArkTS引擎,则其值为“ark+版本号”。string该标签由IDE构建HAP的时候自动插入。
pages标识当前Moduleprofile资源,用于列举每个页面信息,取值为长度不超过255字节的字符串。string在有UIAbility的场景下,该标签必输。
metadata标识当前Module的自定义元信息,可通过资源引用的方式配置distributionFiltershortcuts等信息。只对当前ModuleUIAbilityExtensionAbility生效。Array否,默认值为空。
abilities标识当前ModuleUIAbility的配置信息,只对当前UIAbility生效。Array否,默认值为空。
extensionAbilities标识当前ModuleExtensionAbility的配置信息,只对当前ExtensionAbility生效。Array否,默认值为空。
definePermissions标识系统资源hap定义的权限,不支持应用自定义权限。Array否,默认值为空。
requestPermissions标识当前应用运行时需向系统申请的权限集合。Array否,默认值为空。
testRunner标识用于测试当前Mobule的测试框架的配置。object否,默认值为空。
atomicService标识当前应用是元服务时,有关元服务的相关配置。object
dependencies标识当前模块运行时依赖的共享库列表。Array否,默认值为空。
targetModuleName标识当前包所指定的目标module,确保该名称在整个应用中唯一。取值为长度不超过31字节的字符串,不支持中文。配置该字段的Module具有overlay特性。仅在动态共享包(HSP)中适用。string否,默认值为空。
targetPriority标识当前Module的优先级,取值范围为1~100。配置targetModuleName字段之后才需要配置该字段。仅在动态共享包(HSP)中适用。Integer否,默认值为1。
proxyData标识当前Module提供的数据代理列表Array否,默认值为空。
isolationMode标识当前Module的多进程配置项。支持的取值如下:
- nonisolationFirst:优先在非独立进程中进行。
- isolationFirst:优先在独立进程中运行。
- isolationOnly:只在独立进程中运行。
- nonisolationOnly:只在非独立进程中运行。
string否,默认值为nonisolationFirst
generateBuildHash标识当前HAP/HSP是否由打包工具生成哈希值。当配置为trrue时,如果系统OTA升级时应用versionCode保持不变,可根据哈希值判断应用是否需要升级。该字段仅在app.json5文件中的generateBuildHash字段为false时生效。
说明:该字段仅对预置应用生效。
boolean否,默认值为false
compressNativeLibs标识libs库是否以压缩存储的方式打包到HAP。
- true:libs库以压缩方式存储。
- false:libs库以不压缩方式存储。
boolean否,默认值为false。
libIsolation用于区分同应用不同HAP下的.so文件,以防止.so冲突。
- true:当前HAP的.so文件会存储在libs目录中以Module命名的路径下。
- false:当前HAP的.so文件会直接存储在libs目录下。
string否,默认值为false。
fileContextMenu标识当前HAP的右键菜单配置项。取值为长度不超过255字节的字符串。string否,默认值为空。
querySchemes标识允许当前应用进行跳转查询的URL schemes,只允许entry类型模块配置,最多50个,每个字符串取值不超过128字节。Array否,默认值为空。
routerMap标识当前模块配置的路由表路径。取值为长度不超过255字节的字符串string否,默认值为空。
appEnvironments标识当前模块配置的应用环境变量,只允许entry和feature模块配置。Array否,默认值为空。
appStartup标识当前Module启动框架配置路径,仅在Entry中生效。string否,默认值为空。

资源配置文件

资源分类

应用开发中使用的各类资源文件,需要放入特定子目录中存储管理。资源目录的示例如下所示,base目录、限定词目录、rawfile目录、resfile目录称为资源目录,elementmediaprofile称之为资源组目录。

resources
|---base
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---en_US  // 默认存在的目录,设备语言环境是美式英文时,优先匹配此目录下资源
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---zh_CN  // 默认存在的目录,设备语言环境是简体中文时,优先匹配此目录下资源
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---en_GB-vertical-car-mdpi // 自定义限定词目录示例,由开发者创建
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---rawfile // 其他类型文件,原始文件形式保存,不会被集成到resources.index文件中。文件名可自定义。
|---resfile // 其他类型文件,原始文件形式保存,不会被集成到resources.index文件中。文件名可自定义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始实现大语言模型(一):概述

1. 前言 大家好,我是何睿智。我现在在做大语言模型相关工作,我用业余时间写一个专栏,给大家讲讲如何从零开始实现大语言模型。 从零开始实现大语言模型是了解其原理及领域大语言模型实现路径的最好方法,没有之一。已有研究证明&…

《昇思25天学习打卡营第07天|函数式自动微分》

函数式自动微分 环境配置 # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2.14 import numpy as np imp…

Windows10录屏,教你3个方法,简单快速录屏

“我的电脑系统是Windows10的系统,今晚要进行线上开会,但我实在有事没办法参加会议,想把会议的内容录制下来方便我后续观看。但却找不到电脑录屏功能在哪里打开?求助一下,谁能帮帮我?” 在数字化时代&…

mysql 命令 —— 查看表信息(show table status)

查询表信息,如整个表的数据量大小、表的索引占用空间大小等 1、查询某个库下面的所有表信息: SHOW TABLE STATUS FROM your_database_name;2、查询指定的表信息: SHOW TABLE STATUS LIKE your_table_name;如:Data_length 显示表…

闲聊 .NET Standard

前言 有时候,我们从 Nuget 下载第三方包时,会看到这些包的依赖除了要求 .NET FrameWork、.NET Core 等的版本之外,还会要求 .NET Standard 的版本,比如这样: 这个神秘的 .NET Standard 是什么呢? .NET St…

【算法】字母异位词分组

题目:字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] …

从零开始搭建spring boot多模块项目

一、搭建父级模块 1、打开idea,选择file–new–project 2、选择Spring Initializr,选择相关java版本,点击“Next” 3、填写父级模块信息 选择/填写group、artifact、type、language、packaging(后面需要修改)、java version(后面需要修改成和第2步中版本一致)。点击“…

【0300】Postgres内核动态哈希表实现机制(1)

相关文章: 【0299】Postgres内核之哈希表(Hash Tables) 0 概述 在【0299】Postgres内核之哈希表(Hash Tables)一文中,讲解了哈希表的作用、实现、优缺点等特性。本文开始,将详细分析Postgres内…

MySQL之应用层优化(三)

应用层优化 应用层缓存 2.本地共享内存缓存 这种缓存一般是中等大小(几个GB),快速,难以在多台机器间同步。它们对小型的半静态位数据比较合适。例如每个州的城市列表,分片数据存储的分区函数(映射表),或者使用存活时间(TTL)策略…

记录一次Chrome浏览器自动排序ajax请求的JSON数据问题

文章目录 1.前言2. 为什么会这样?3.如何解决? 1.前言 作者作为新人入职的第一天,mentor给了一个维护公司运营平台的小需求,具体需求是根据运营平台的某个管理模块所展示记录的某些字段对展示记录做排序。 第一步: myb…

工业触摸一体机优化MES应用开发流程

工业触摸一体机在现代工业生产中扮演着至关重要的角色,它集成了智能触摸屏和工业计算机的功能,广泛应用于各种生产场景中。而制造执行系统(MES)作为工业生产管理的重要工具,对于提高生产效率、降低成本、优化资源利用具…

力扣hot100-普通数组

文章目录 题目:最大子数组和方法1 动态规划方法2 题目:合并区间题解 题目:最大子数组和 原题链接:最大子数组和 方法1 动态规划 public class T53 {//动态规划public static int maxSubArray(int[] nums) {if (nums.length 0…

C++基础知识-编译相关

记录C语言相关的基础知识 1 C源码到可执行文件的四个阶段 预处理(.i)、编译(.s)、汇编(.obj)、链接。 1.1 预处理 预处理阶段,主要完成宏替换、文件展开、注释删除、条件编译展开、添加行号和文件名标识,输出.i/.ii预处理文件。 宏替换,…

【UML用户指南】-26-对高级行为建模-状态图

目录 1、概念 2、组成结构 3、一般用法 4、常用建模技术 4.1、对反应型对象建模 一个状态图显示了一个状态机。在为对象的生命期建模中 活动图展示的是跨过不同的对象从活动到活动的控制流 状态图展示的是单个对象内从状态到状态的控制流。 在UML中,用状态图…

tcpdump命令详解及使用实例

1、抓所有网卡数据包,保存到指定路径 tcpdump -i any -w /oemdata/123.pcap&一、tcpdump简介 tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来去掉无用的信…

【Python】已解决:SyntaxError: positional argument follows keyword argument

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:SyntaxError: positional argument follows keyword argument 一、分析问题背景 在Python编程中,当我们在调用函数时混合使用位置参数(p…

RabbitMQ进阶篇

文章目录 发送者的可靠性生产者重试机制实现生产者确认 MQ的可靠性数据持久化交换机持久化队列持久化消息持久化 Lazy Queue(可配置~)控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 消费者的可靠性消费者确认机制失败重试机制失败处理策略 业务幂等性唯一消息ID业…

西部智慧健身小程序+华为运动健康服务

1、 应用介绍 西部智慧健身小程序为用户提供一站式全流程科学健身综合服务。用户通过登录微信小程序,可享用健康筛查、运动风险评估、体质检测评估、运动处方推送、个人运动数据监控与评估等公益服务。 2、 体验介绍西部智慧健身小程序华为运动健康服务核心体验如…

idea xml ctrl+/ 注释格式不对齐

处理前 处理后 解决办法 取消这两个勾选

核方法总结(三)———核主成分(kernel PCA)学习笔记

一、核主成分 1.1 和PCA的区别 PCA (主成分分析)对应一个线性高斯模型(参考书的第二章),其基本假设是数据由一个符合正态分布的隐变量通过一个线性映射得到,因此可很好描述符合高斯分布的数据。然而在很多实…