捋一捋鸿蒙配置文件JSON5文件

665 阅读4分钟

第一篇:创建一个应用,使用Tabs和导航栏结构

第二篇:使用网格Grid与列表list

第三篇:接入第三方库,使用Axios网络请求,PullToRefresh上拉刷新下拉加载

第四篇:整理工程 - 模块化

第五篇:探索打包提审上架

模块级与工程级

作为一个新手,一一上来就接入一个三方库,在修改配置文件时候云里雾里,module.json5, build-profile.json5, oh-package.json5, app.json5, hvigor-config.json5,还有工程级,模块级。不知道干嘛的,能配些啥,记录一下。

天生模块化 :可以看到模块级是具有build-profile.json5, oh-package.json5,这就会让项目有很多个同名的配置文件,但这也就意味着每个模块都是完整配置,可单独打成HAR包,可发布到OpenHarmony三方库中心仓。比起iOS想做个模块化,真是方便太多了!

模块级工程级
module.json5没有
build-profile.json5
oh-package.json5
app.json5没有
hvigor-config.json5没有

我理解的app跟配置相关的(ps:忽略流程图的下箭头,不知道怎么去掉),在工程级的build-profile.json5(项目结构中最外层的那个)中添加多个模块依赖。

graph TD
App <--> 主工程的包\napp.json5\nhvigor-config.json5
主工程的配置\nbuild-profile.json5\noh-package.json5 <--> 模块B的包
主工程的包\napp.json5\nhvigor-config.json5 <--> 主工程的配置\nbuild-profile.json5\noh-package.json5
主工程的配置\nbuild-profile.json5\noh-package.json5 <--> 模块A的包
模块A的包 <--> 模块A的配置\nmodule.json5\nbuild-profile.json5\noh-package.json5
模块B的包 <--> 模块B的配置\nmodule.json5\nbuild-profile.json5\noh-package.json5

举个例子,啥都工程级,啥是模块级

image.png

各JSON文件的常用配置

module.json5 模块(Module)中才有,

  • Module模块的基本配置信息,包含Module名称、类型、描述、支持的设备类型等基本信息。
  • 应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。
  • 应用运行过程中所需的权限信息。
  • 官方文档链接
-   name: 模块的名称,应用内唯一,不支持中文
-   type: 模块的类型:
-     - entry:应用的主模块。
      - feature:应用的动态特性模块。
      - har:静态共享包模块。
      - shared:动态共享包模块。
-   srcEntry:代码路径,非必填。可以设置个文件路径,用来初始化一些必要的东西
-   description:描述
-   mainElement:入口能力名称,干嘛的,不懂,可为空
-   deviceTypes:支持哪些设备的,
-      - phone:手机
       - tablet:平板
       - 2in1:二合一设备
       - tv:智慧屏
       - wearable: 穿戴,智能手表
       - car: 车机
-   deliveryWithInstall:该Module对应的HAP是否跟随应用一起安装。
-   installationFree:标识当前Module是否支持免安装特性,**需要配合元服务使用true**-   pages: 标识当前Module的profile资源地址,类似于头文件 或者叫路由。一般配置在main_pages.json中。 可以这样设置”pages": "$profile:main_pages",
-   abilities: 标识当前Module中UIAbility的配置信息,只对当前UIAbility生效,说实话我没看懂,里面能配的有点像app.json5
-   requestPermissions: 系统申请的权限集合,有点像iOS的权限info.plist。可以配置网络,蓝牙,等等权限,[文档地址](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/permissions-for-all-V5)
-   还有好多其他,具体参考文档

build-profile.json5 分为工程级与模块级。

其中buildOption在工程级文件和模块级文件均可配置,其中相同字段以模块级的字段为准,不同字段模块级的buildOption配置会继承工程级配置

官方文档链接

工程级

- app: 里面可以配置依赖版本,签名,编译设置等。
    - signingConfigs: 签名方案,可多个
    - products:产品:可多个。 其中产品的名称必须存在一个name为"default”的。
    - buildModeSet: 构建模式合集,可配置多个。比如可以配置,debug,release,test
    - 其中有一个buildOption: 能配置的东西很多,比如本机的编译环境,x86还是arm64,看文档吧
    
- modules: 工程中所包含模块的信息,数组长度至少为1。 配置引入了那几个模块,模块名,模块路径,为哪个target配置,等。

模块级

-   apiType: Stage模型stageMode
-   targets: 至少有一个,比如”name": "default"
-   buildOption:优先模块级配置,没有配置的会应用工程级build-profile.json5中的buildOption设置。
-   buildOptionSet: 可以为不同模式下,配置。 比如为Release模式下,配置混淆文件规则路径。

oh-package.json5 分为工程级与模块级

官方文档链接

工程级:应该是整个app的配置

-   modelVersion: 开发态版本号,类似于ios14这样吧
-   description: 简介
-   dependencies : release依赖
-   devDependencies: 开发依赖
-   dynamicDependencies: 动态依赖
-   还有其他诸如overrides,overrideDependencyMap,scripts,hooks,parameterFile等,具体可看文档

模块级:有点像第三方库,为自己制作的第三方库配置相关信息

-   name: 库名称
-   version:库版本
-   main:入口,指定加载的入口文件。
-   description:库描述
-   license:开源协议
-   dependencies : release依赖
-   devDependencies: 开发依赖
-   还有其他诸如author,keywords,homepage,repository等,具体可看文档

app.json5:

应用的全局配置信息,包含应用的Bundle名称、开发厂商、版本号等基本信息。 官方文档链接

-   bundleName:相当于iOS的bundleID,
-   versionName:版本号 “1.0.0”
-   versionCode:版本号,数字。可能相当于iOS的build号
-   vendor:对开发者的介绍吧。比如公选王。
-   icon:应用图标
-   label:应用名称
-   bundleType:元服务,或者应用、
-     - app:当前Bundle为应用。
      - atomicService:当前Bundle为元服务。
      - shared:当前Bundle为共享库应用,预留字段。
      - appService:当前Bundle为系统级共享库应用,仅供系统应用使用。
-   还有诸如tv,穿戴,车载,最小版本限制等等等,minCompatibleVersionCode,minAPIVersion

hvigor-config.json5:

以指定hvigor的版本、构建依赖以及构建行为的配置参数 官方文档链接

Pasted Graphic.png