摘要前文已完成全套底层工具、通用 UI 组件、业务能力封装网络、数据库、存储、路由、弹窗、权限、图片、文件、日志、状态管理、主题、列表分页、空状态组件。本章整合所有模块输出一套可直接用于课程设计、毕业设计、商用 APP 的标准分层工程架构明确 entry、基础 HAR、业务 HAR、动态 HSP 分包依赖规则、目录划分、模块职责、编译约束、团队协作规范、打包发布流程解决多模块循环依赖、资源冲突、分包体积过大、代码复用混乱、多人开发合并冲突等核心工程问题。关键词OpenHarmonyAPI23工程分层HARHSP模块化架构规范多模块协作一、整体架构分层四层单向依赖禁止反向 / 循环依赖依赖流向规则强制单向页面 / HSP → 业务 HAR → 底层基础 har_base → 无依赖第一层entry主应用入口模块唯一可安装运行职责应用生命周期、全局初始化、首页 / 登录 / 设置常驻页面、路由拦截、全局状态初始化、HSP 加载调度、APP 退出逻辑禁止复杂业务逻辑、大量独立页面、数据库封装、网络工具第二层基础静态 HAR har_base全局公共底层库所有模块共享职责全部通用工具、全局类型、主题常量、通用 UI 基础组件、全局模型定义依赖无任何其他 HAR/HSP纯净底层包含前文所有工具HttpUtil、RdbUtil、PrefUtil、RouterUtil、DialogUtil、PermissionUtil、ImagePickerUtil、FileUtil、LogUtil、GlobalStore、ThemeUtil通用组件StateView、RefreshListView、基础弹窗、通用按钮 / 卡片 Builder第三层业务静态 HARhar_xxx独立业务静态复用模块示例har_user用户相关、har_note笔记业务、har_message消息职责独立业务数据库封装、业务实体、业务专用组件、业务 CRUD 逻辑仅允许依赖har_base业务 HAR 之间禁止互相依赖第四层动态分包 HSPhsp_xxx低频大业务按需加载示例hsp_album 相册、hsp_editor 笔记编辑器、hsp_mall 商城职责低频、体积大、非核心业务完整页面与业务逻辑仅允许依赖har_base 对应业务 HARHSP 之间禁止互相依赖、禁止静态 import 导入 HSP 内部代码完整工程目录树plaintextProjectRoot ├─ entry主应用层 │ └─ src/main/ets │ ├─ pages # 常驻页面首页、登录、设置、个人中心 │ ├─ entryability # 全局初始化入口 │ ├─ utils # entry专属工具Hsp加载封装、启动逻辑 │ └─ resources # 全局公共图片、字体、静态资源 ├─ har_base底层公共静态库核心基础层 │ └─ src/main/ets │ ├─ utils # 全套底层工具类 │ ├─ model # 全局类型、常量、路由key、主题定义 │ ├─ components # 全局通用UI组件 StateView/RefreshListView等 │ └─ resources # 通用图标、配色资源 ├─ har_note笔记业务静态HAR │ └─ src/main/ets │ ├─ model # 笔记业务实体 │ ├─ db # 笔记RDB数据库操作 │ ├─ components # 笔记专用卡片、条目组件 │ └─ logic # 笔记业务逻辑 ├─ har_user用户业务静态HAR │ └─ src/main/ets │ ├─ model │ ├─ logic # 登录、用户信息、头像上传逻辑 │ └─ components ├─ hsp_note_editor笔记编辑器动态分包 │ └─ src/main/ets │ ├─ pages # 编辑器完整页面 │ ├─ logic # 富文本编辑业务逻辑 │ └─ components # 编辑器专属UI └─ build-profile.json5 # 模块依赖配置、打包配置二、各模块详细职责边界规范2.1 entry 主模块规范允许存放EntryAbility 应用全局初始化工具上下文注入、日志等级、持久化状态绑定核心常驻页面首页、登录、设置、个人中心必须登录才能进入的基础页面HSP 动态加载调度工具、路由入口拦截逻辑APP 全局生命周期前后台切换、退出清理缓存、释放数据库 / 文件句柄应用全局资源启动页图片、应用 logo、全局字体严格禁止封装网络、数据库、文件等底层工具统一放入 har_base独立完整业务页面编辑器、相册、笔记详情拆分至 HSP / 业务 HAR业务数据库 CRUD、复杂业务逻辑下沉至对应 har_xxx 业务库自定义通用基础组件StateView、弹窗等统一 har_base/components2.2 har_base 基础公共库规范允许存放全部底层工具类前文所有 utils 工具集合全局通用 interface、类型定义、常量、路由地址、全局状态 key、主题色值无业务耦合的通用 UI 组件加载视图、空页面、下拉分页列表、通用弹窗、权限弹窗全局基础资源通用空白图标、失败图标、通用按钮样式严格禁止任何业务相关代码笔记、用户、商城等业务实体、业务数据库页面 pages 注册HAR 不支持页面路由业务专属组件笔记条目、用户头像卡片放入对应业务 HAR2.3 har_xxx 业务静态 HAR 规范允许存放单一业务域数据模型、数据表建表 SQL、RDB 封装该业务专属 UI 组件笔记列表项、用户信息卡片该业务独立接口请求封装、业务专属工具方法业务专用资源笔记图标、头像相关素材严格禁止页面 pages 页面页面统一放 entry 或 HSP跨业务逻辑用户 HAR 禁止操作笔记数据库依赖其他业务 HAR仅允许依赖 har_base2.4 hsp_xxx 动态分包规范允许存放低频大体积完整业务页面该分包专属复杂业务逻辑、重型组件富文本、图片编辑分包私有资源不与全局共用严格禁止全局底层工具、通用基础组件统一引用 har_base其他 HSP 模块导入、依赖核心高频页面首页、登录不允许拆 HSP直接 import 其他 HSP 内部 ets 代码必须使用 hspManager 动态加载跳转三、模块依赖配置标准模板 module.json53.1 har_base无任何依赖json{ module: { name: har_base, type: har, description: 全局底层公共工具与通用组件, deviceTypes: [phone], deliveryWithInstall: false }, dependencies: [] }3.2 业务 HAR har_note仅依赖 har_basejsondependencies: [ { name: har_base, version: 1.0.0, scope: shared } ]3.3 HSP 动态分包 hsp_note_editor依赖 har_basehar_notejsondependencies: [ { name: har_base, version: 1.0.0, scope: shared }, { name: har_note, version: 1.0.0, scope: shared } ]3.4 entry 主模块依赖所有 HAR、HSPjsondependencies: [ {name:har_base,version:1.0.0,scope:shared}, {name:har_note,version:1.0.0,scope:shared}, {name:har_user,version:1.0.0,scope:shared}, {name:hsp_note_editor,version:1.0.0,scope:shared} ]四、跨模块导入标准写法规范4.1 entry / HAR 导入 har_base 工具 / 组件ets// 导入工具 import HttpUtil from ohos:har_base/utils/http_util // 导入全局类型 import { PAGE_ROUTE } from ohos:har_base/model/Constant // 导入通用组件 import StateView, { PageState } from ohos:har_base/components/common/StateView4.2 HSP 导入业务 HAR 笔记数据库工具etsimport RdbUtil from ohos:har_note/db/rdb_util4.3 HSP 页面跳转entry 调用动态分包页面禁止直接 importets// 使用RouterUtil内置pushHsp方法 RouterUtil.pushHsp(hsp_note_editor,src/main/ets/pages/EditorPage,{id:1001})五、资源管理规范避免多模块资源覆盖冲突har_base 通用资源资源文件名统一前缀common_如common_empty.png业务 HAR 资源增加业务前缀笔记模块note_item.png用户模块user_avatar.pngHSP 私有资源仅分包内部使用不对外暴露无需全局统一前缀禁止不同模块同名无前缀资源打包会发生资源覆盖、图片显示错乱六、循环依赖检测与规避方案典型错误循环依赖示例har_note 依赖 har_user同时 har_user 依赖 har_note → 编译报错 cyclic dependency规避方案业务 HAR 只单向依赖底层 har_base业务之间互不引用跨业务数据传递通过 entry 页面中转不在 HAR 内部互相调用公共抽取至 har_base若用户、笔记都需要同一实体 / 工具下沉至底层公共库七、编译与打包性能优化规范稳定底层 har_base几乎不改动编译缓存永久生效修改业务模块仅增量编译对应 har/hsp大型低频业务拆分 HSP编辑器、相册、商城拆分为动态包减小主包体积、加快冷启动单个 HSP 体积控制在 10MB 以内超大业务继续拆分多个 HSP开发调试可临时注释未开发完成的 HSP 依赖大幅缩短编译时间上线打包开启分包分离deliveryWithInstall:trueHSP 默认配置八、多人团队协作开发规范分工按模块划分底层负责人维护 har_base 全套工具、通用组件、主题、全局类型业务开发 Ahar_note hsp_note_editor 笔记相关全模块业务开发 Bhar_user 用户模块入口负责人entry 首页、登录、全局初始化、路由、打包配置公共底层修改统一提交 har_base所有人同步更新工程依赖各业务模块代码隔离减少 git 合并冲突对外暴露 API 统一在模块根目录导出禁止跨模块引用内部私有文件九、完整工程启动初始化流程EntryAbility 执行顺序获取全局 UIAbility 上下文 context依次为所有底层工具注入上下文FileUtil、LogUtil、PermissionUtil 等生产环境设置日志等级 LogLevel.INFO屏蔽 DEBUG 调试日志GlobalStore.initPersistentBind () 初始化全局持久化状态绑定初始化网络请求基础域名、全局请求头配置监听 APP 前后台切换生命周期后台清理缓存、暂停定时器应用退出 onDestroy释放数据库、文件句柄、清空全部全局监听、销毁弹窗控制器十、全架构配套代码使用流程示例新建笔记完整链路entry 首页点击「新建笔记」按钮路由判断登录状态GlobalStore 读取 isLogin未登录弹窗跳转登录调用 HspLoadUtil 动态加载 hsp_note_editor 分包RouterUtil.pushHsp 跳转编辑器页面传递笔记 ID 参数HSP 编辑器页面自动导入 har_base 弹窗、状态组件、主题工具HSP 页面引入 har_note 的 Rdb 数据库工具完成新增笔记写入操作完成通过路由返回列表页面调用 hspManager.unloadPackage 释放动态分包内存列表页面 RefreshListView 下拉刷新RdbUtil 查询最新笔记数据渲染页面退出 aboutToDisappear 关闭数据库、弹窗、解绑全局状态监听十一、架构常见问题与解决方案问题 1修改通用组件后全工程重新编译速度很慢 解决底层 har_base 尽量少改动业务拆分独立 HAR仅修改对应业务模块只会增量编译自身。问题 2打包后主包体积巨大安装缓慢 解决低频重型页面拆分 HSP 动态分包运行时按需加载主包仅保留核心常驻页面与底层工具。问题 3编译提示循环依赖 cyclic dependency 解决调整分层业务 HAR 只依赖 har_base业务之间禁止互相导入。问题 4多模块同名图片渲染错乱、显示错误图标 解决所有资源文件增加模块专属前缀区分 base / 笔记 / 用户 / HSP 私有资源。问题 5HSP 页面跳转提示页面不存在 解决统一使用 RouterUtil.pushHsp 拼接标准 hsp 包名路径核对 module.json5 pages 注册路径。问题 6页面退出内存持续上涨APP 卡顿耗电 解决严格遵守生命周期规范页面销毁关闭 RDB、释放文件、关闭弹窗、解绑 GlobalStore 监听、卸载 HSP 分包。十二、架构总结本套四层单向分层架构整合前文全部工具、UI 组件、业务能力严格划分 entry、底层 HAR、业务 HAR、动态 HSP 四层职责强制单向依赖杜绝循环耦合统一跨模块导入、资源、打包、协作规范。 架构优势代码高度复用底层工具、通用组件全局一次开发全项目复用业务解耦新增功能仅新增对应 HAR/HSP不污染主入口代码分包优化安装包体积、冷启动速度、内存占用分层清晰分工明确适合单人毕设、多人团队协同开发完全适配 OpenHarmony API23 / HarmonyOS NEXT所有前文工具可直接集成进该工程架构形成一套完整可交付的标准化鸿蒙应用工程。