适合谁看
-
刚开始读鸿蒙配置文件的人
-
总觉得三个 json5 文件长得很像的人
-
想建立"配置层级感"的开发者
问题背景
很多人第一次进 app/ohos/,会先遇到三个很像的文件:
-
build-profile.json5 -
module.json5 -
oh-package.json5
如果只是看文件名,很容易把它们都理解成"工程配置"。
但真正一到排错阶段,问题就来了:
-
权限为什么不生效
-
签名为什么装不上
-
依赖为什么找不到
这些问题虽然都像配置问题,但它们根本不在同一层。
所以这篇最重要的目标,不是记字段,而是先建立层级感。
项目中的真实场景
食界探味当前的鸿蒙壳工程正好把这三层都用得比较典型。
在 app/ohos/build-profile.json5 里,可以直接看到:
-
signingConfigs -
products -
modules -
buildModeSet
在 app/ohos/entry/src/main/module.json5 里,可以直接看到:
-
mainElement -
abilities -
extensionAbilities -
requestPermissions
在 app/ohos/oh-package.json5 里,则可以看到:
-
工程名
-
版本
-
Ohos 依赖和开发依赖
所以这三个文件虽然都重要,但重要的方向完全不一样。
核心实现
先给一个最容易记住的判断:
build-profile.json5 = 这个工程怎么被构建
module.json5 = 这个模块是什么、能做什么
oh-package.json5 = 这个鸿蒙工程依赖什么
只要先记住这一句,后面很多阅读和排错都会轻松很多。
一、build-profile.json5 更像构建与签名总控层
在食界探味里,这个文件最值得先看的区域是:
-
signingConfigs -
products -
modules -
buildModeSet
它解决的问题主要是:
-
用哪套签名构建
-
当前产品面向哪个 HarmonyOS 版本
-
模块怎么挂到产品上
-
debug / profile / release 怎么区分
比如在当前工程里,你能直接看到:
-
targetSdkVersion: "6.1.0(23)" -
compatibleSdkVersion: "6.1.0(23)" -
modules里挂着entry
这说明 build-profile.json5 更关心的是:
-
构建产物
-
签名材料
-
产品维度配置
而不是页面入口或权限语义。
什么时候应该先看它
如果你遇到的是下面这类问题,通常先查 build-profile.json5:
-
构建模式不对
-
签名或 profile 相关问题
-
SDK 版本相关问题
-
模块没有被正确挂入构建产品
二、module.json5 更像应用模块说明书
这是初学者最应该优先读懂的配置文件之一。
在食界探味当前的 module.json5 里,最关键的字段包括:
-
mainElement: "EntryAbility" -
abilities -
extensionAbilities -
requestPermissions -
pages
它真正回答的是:
-
这个模块的主入口是谁
-
系统看到这个模块时会认出哪些能力
-
这个模块声明了哪些扩展能力
-
运行时需要哪些权限
比如在当前工程里,你能非常明确地看到:
-
主入口是
EntryAbility -
扩展能力里已经接了
DailyRecommendFormAbility -
权限里声明了
ohos.permission.MICROPHONE -
还声明了
ohos.permission.DLP_GET_HIDE_STATUS
这说明 module.json5 管的是"模块身份"和"模块能力",不是构建过程本身。
什么时候应该先看它
如果你遇到的是下面这类问题,通常先查 module.json5:
-
入口 Ability 为什么没生效
-
权限为什么没声明到位
-
卡片扩展能力为什么系统认不到
-
模块级元数据和页面配置为什么不对
三、oh-package.json5 更像鸿蒙依赖管理层
这个文件在当前工程里内容不算复杂,但角色非常明确。
它主要负责的是:
-
Ohos 侧包管理信息
-
依赖和开发依赖声明
在食界探味里,你能直接看到:
-
name: "food_voyage" -
version: "1.0.0" -
devDependencies
当前它更像一个依赖层基础文件。
虽然看上去没有 module.json5 那么"入口感强",但一旦涉及:
-
Ohos 侧依赖
-
包版本
-
开发依赖工具
它就会变得很关键。
什么时候应该先看它
如果你遇到的是下面这类问题,通常先查 oh-package.json5:
-
Ohos 侧依赖为什么找不到
-
包管理相关配置为什么不对
-
某些开发依赖为什么没有进来
关键代码位置
-
app/ohos/build-profile.json5 -
app/ohos/entry/src/main/module.json5 -
app/ohos/oh-package.json5
鸿蒙侧实现
从鸿蒙侧看,这三个文件正好分成三层:
-
构建层:
build-profile.json5 -
模块层:
module.json5 -
依赖层:
oh-package.json5
它们共同组成了壳工程的基础配置骨架。
Flutter 侧实现
Flutter 代码虽然不会直接写这些配置,但会持续依赖它们正确工作:
-
flutter run -d ohos依赖构建层 -
页面和插件能力依赖模块层
-
Ohos 插件和包管理依赖依赖层
换句话说,Flutter 侧不改这三者的职责,但 Flutter 体验会直接受它们影响。
常见坑
-
把权限问题跑去
build-profile.json5里找 -
把签名问题误当成
module.json5问题 -
把依赖问题误当成模块入口问题
-
只记字段,不建立层级感,结果排错总是方向不对
可复用模板
三文件速记
build-profile.json5 = 怎么构建
module.json5 = 模块是什么、能做什么
oh-package.json5 = 依赖从哪里来
排错分流
1. 签名 / SDK / product → 先看 build-profile.json5
2. 入口 / 权限 / 卡片声明 → 先看 module.json5
3. Ohos 依赖 / 包管理 → 先看 oh-package.json5
本篇总结
build-profile.json5、module.json5、oh-package.json5 都很重要,但重要的方式完全不同。
真正有用的理解不是"记住三个文件名",而是先分清:
-
哪个管构建
-
哪个管模块身份
-
哪个管依赖
只要这个层级感先建立起来,后面读配置和排问题时就不会总是跑错方向。
