第三篇:接入第三方库,使用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
举个例子,啥都工程级,啥是模块级
各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的版本、构建依赖以及构建行为的配置参数 官方文档链接