鸿蒙工程里build-profile-module-oh-package分别负责什么
2026/6/6 12:22:44 网站建设 项目流程

适合谁看

  • 刚开始读鸿蒙配置文件的人

  • 总觉得三个 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.json5module.json5oh-package.json5都很重要,但重要的方式完全不同。
真正有用的理解不是“记住三个文件名”,而是先分清:

  • 哪个管构建

  • 哪个管模块身份

  • 哪个管依赖

只要这个层级感先建立起来,后面读配置和排问题时就不会总是跑错方向。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询