模块配置与路由注册:module.json5 与 main_pages.json
前言在 HarmonyOS 应用开发中配置文件是连接代码与系统的重要桥梁。module.json5定义了模块的基本信息、Ability 注册、权限声明等而main_pages.json则管理着所有页面的路由注册。“海风日记“共包含28 个页面所有页面都需要在main_pages.json中注册同时module.json5中配置了 EntryAbility 的启动信息、图标、标签等。本文将从源码出发深入讲解这两个配置文件的完整结构和最佳实践。一、module.json5 概述1.1 文件位置module.json5位于每个模块的src/main/目录下entry/ src/ main/ module.json5 ← 模块配置文件 ets/ ← ArkTS 源码 resources/ ← 资源文件1.2 海风日记的 module.json5{ module: { name: entry, type: entry, description: $string:module_desc, mainElement: EntryAbility, deviceTypes: [phone], deliveryWithInstall: true, installationFree: false, pages: $profile:main_pages, abilities: [ { name: EntryAbility, srcEntry: ./ets/entryability/EntryAbility.ets, description: $string:EntryAbility_desc, icon: $media:app_icon, label: $string:EntryAbility_label, startWindowIcon: $media:app_icon, startWindowBackground: $color:start_window_background, exported: true, skills: [ { entities: [entity.system.home], actions: [action.system.home] } ] } ] } }1.3 顶层配置项配置项类型说明海风日记的值namestring模块名称entrytypestring模块类型entry入口模块descriptionstring模块描述$string:module_descmainElementstring入口 AbilityEntryAbilitydeviceTypesstring[]支持的设备类型[phone]deliveryWithInstallboolean是否随安装包交付trueinstallationFreeboolean是否免安装falsepagesstring页面配置文件$profile:main_pages二、模块类型详解2.1 模块类型HarmonyOS 支持三种模块类型类型说明用途entry应用入口模块包含主 Ability每个应用只有一个feature功能模块可独立安装或按需加载shared共享模块HSP共享代码和资源HAR 的替代方案2.2 entry 模块的特点{ module: { type: entry, // 入口模块 deliveryWithInstall: true, // 随安装包交付 installationFree: false // 非免安装 } }entry 模块的特点每个应用有且只有一个 entry 模块必须包含mainElement指定的入口 AbilitydeliveryWithInstall通常为trueinstallationFree通常为false2.3 feature 模块的特点{ module: { type: feature, // 功能模块 deliveryWithInstall: false, // 按需安装 installationFree: true // 支持免安装 } }feature 模块的特点一个应用可以有多个 feature 模块支持按需下载和安装支持免安装运行需installationFree: true三、Ability 配置详解3.1 基本配置{ abilities: [ { name: EntryAbility, // Ability 名称 srcEntry: ./ets/entryability/EntryAbility.ets, // 源码入口 description: $string:EntryAbility_desc, // 描述 icon: $media:app_icon, // 图标 label: $string:EntryAbility_label, // 标签 startWindowIcon: $media:app_icon, // 启动窗口图标 startWindowBackground: $color:start_window_background, // 启动窗口背景 exported: true, // 是否允许其他应用调用 skills: [...] // 意图过滤器 } ] }3.2 配置项详细说明配置项必填说明name是Ability 类名需与代码中的类名一致srcEntry是源码文件路径相对于ets/目录description否能力描述可引用资源icon是应用图标建议使用$media:xxx引用label是应用名称显示在桌面startWindowIcon否冷启动时显示的图标startWindowBackground否冷启动时的背景色exported否是否允许其他应用启动该 Abilityskills否意图过滤器数组3.3 启动窗口配置startWindowIcon和startWindowBackground控制冷启动时的启动窗口{ startWindowIcon: $media:app_icon, startWindowBackground: $color:start_window_background }启动窗口的配置策略策略说明效果统一背景使用应用主色启动时显示品牌色减少白屏透明背景使用透明色启动时显示桌面壁纸模拟首屏使用首屏页面的颜色启动到首屏无缝过渡3.4 skills 意图过滤器{ skills: [ { entities: [entity.system.home], // 桌面入口 actions: [action.system.home] // 主页动作 } ] }skills配置了 Ability 能够响应的意图entitiesactions说明entity.system.homeaction.system.home应用桌面图标入口entity.system.browsableaction.system.view浏览器打开链接entity.system.shareaction.system.share接收分享数据四、main_pages.json 页面路由配置4.1 文件位置main_pages.json位于resources/base/profile/目录下entry/ src/ main/ resources/ base/ profile/ main_pages.json ← 页面路由配置文件4.2 海风日记的 main_pages.json“海风日记“共注册了 26 个页面路径{ src: [ pages/SplashPage, pages/Index, pages/onboarding/OnboardingPage, pages/login/LoginPhonePage, pages/login/LoginNamePage, pages/diary/WriteDiaryPage, pages/diary/EditDiaryPage, pages/diary/DiaryDetailPage, pages/diary/DiaryDetail2Page, pages/calendar/CalendarYearPage, pages/search/SearchPage, pages/tag/TagDetailPage, pages/premium/PremiumPage, pages/privacy/PrivacyPasswordPage, pages/image/ImageViewerPage, pages/mine/ProfileInfoPage, pages/mine/PersonalSettingsPage, pages/mine/AccountSettingsPage, pages/mine/PhoneBindPage, pages/mine/TagManagePage, pages/mine/SpaceManagePage, pages/mine/DataManagePage, pages/mine/FaqPage, pages/mine/AboutPage, pages/mine/EmailFeedbackPage, pages/mine/DarkModePage ] }4.3 页面路径的规则页面路径的规则如下规则说明示例相对路径相对于ets/目录pages/SplashPage不带扩展名不需要.ets后缀正确pages/SplashPage区分大小写路径大小写敏感pages/SplashPagevspages/splashpage目录结构按功能目录组织pages/mine/AboutPage4.4 页面路径的组织方式“海风日记“的页面按功能模块组织目录pages/ ├── SplashPage # 闪屏页 ├── Index # 首页Tabs 导航框架 ├── onboarding/ # 引导页 │ └── OnboardingPage ├── login/ # 登录 │ ├── LoginPhonePage │ └── LoginNamePage ├── diary/ # 日记 │ ├── WriteDiaryPage │ ├── EditDiaryPage │ ├── DiaryDetailPage │ └── DiaryDetail2Page ├── calendar/ # 日历 │ └── CalendarYearPage ├── search/ # 搜索 │ └── SearchPage ├── tag/ # 标签 │ └── TagDetailPage ├── premium/ # 订阅 │ └── PremiumPage ├── privacy/ # 隐私 │ └── PrivacyPasswordPage ├── image/ # 图片 │ └── ImageViewerPage ├── mine/ # 个人中心 │ ├── ProfileInfoPage │ ├── PersonalSettingsPage │ ├── AccountSettingsPage │ ├── ... │ └── DarkModePage五、资源引用体系5.1 资源文件的存放位置resources/ ├── base/ │ ├── element/ │ │ ├── color.json ← 颜色资源 │ │ └── string.json ← 字符串资源 │ ├── media/ │ │ └── app_icon.png ← 图片资源 │ └── profile/ │ └── main_pages.json ← 页面配置5.2 字符串资源{ string: [ { name: module_desc, value: 海风日记 - 让每一天随海风飘散 }, { name: EntryAbility_desc, value: 海风日记主入口 }, { name: EntryAbility_label, value: 海风日记 } ] }5.3 颜色资源{ color: [ { name: start_window_background, value: #FAFAF7 } ] }5.4 资源引用的方式引用方式语法说明字符串$string:module_desc引用string.json中的字符串颜色$color:start_window_background引用color.json中的颜色图片$media:app_icon引用media/目录下的图片配置文件$profile:main_pages引用profile/目录下的 JSON 配置系统图标$r(sys.symbol.house)引用系统 Symbol 图标六、多设备适配6.1 deviceTypes 配置{ deviceTypes: [phone] }“海风日记“目前仅支持手机设备。如果需要支持更多设备{ deviceTypes: [ phone, tablet, 2in1 // 二合一设备 ] }6.2 资源限定词HarmonyOS 支持通过资源限定词适配不同设备resources/ ├── base/ ← 默认资源 ├── en_US/ ← 英语美国 ├── zh_CN/ ← 中文简体 ├── dark/ ← 深色模式 └── tablet/ ← 平板专用资源6.3 设备适配的最佳实践使用vp单位自适应不同屏幕密度使用%百分比自适应不同屏幕尺寸使用breakpoint响应式布局断点使用资源限定词不同语言、主题使用不同资源七、常见问题与排查7.1 页面路由无法跳转问题调用router.pushUrl()时提示页面不存在。原因页面未在main_pages.json中注册。解决方案检查并添加缺失的页面路径{ src: [ pages/mine/NewPage // 添加新页面 ] }7.2 Ability 启动失败问题应用启动时闪退提示 Ability 未找到。原因module.json5中的name或srcEntry配置错误。解决方案{ abilities: [ { name: EntryAbility, // 必须与代码类名一致 srcEntry: ./ets/entryability/EntryAbility.ets // 路径必须正确 } ] }7.3 资源引用无效问题$string:xxx或$color:xxx引用无效。原因资源名称拼写错误或资源文件中未定义。解决方案检查资源文件中的name字段{ string: [ { name: module_desc, // 引用时使用此名称 value: 海风日记 } ] }7.4 配置文件调试方法# 检查 module.json5 格式 hvigorw --mode module -p moduleentrydefault assembleHap # 查看 HAP 包中的资源 cd build/default/outputs/default/ unzip -l entry-default-unsigned.hap | grep module.json总结本文详细讲解了 HarmonyOS 应用开发中的两个核心配置文件module.json5模块配置定义模块类型、Ability 注册、设备类型等main_pages.json页面路由注册所有页面必须在此注册Ability 配置入口配置、启动窗口、意图过滤器资源引用体系字符串、颜色、图片、配置文件的引用方式多设备适配deviceTypes、资源限定词、响应式布局下一篇文章将深入讲解Entry 与 Component 装饰器分析组件声明、导出和状态管理的核心机制敬请期待。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源module.json5 配置文档Ability 配置指南资源文件使用指南海风日记项目源码[HarmonyOS 开发者官网](https://atomgit.com/openharmony/docs开源鸿蒙跨平台社区多设备适配指南HAP 包结构

相关新闻

Android Activity生命周期详解与最佳实践

Android Activity生命周期详解与最佳实践

1. Activity生命周期概述在Android开发中,Activity作为应用的核心组件,其生命周期管理是每个开发者必须掌握的基础知识。Activity生命周期指的是一个Activity从创建到销毁的完整过程,以及在这个过程中可能经历的各种状态变化。1.1 为什么需要…

2026/7/19 1:25:19 阅读更多 →
OpenClaw:本地化AI助手的革命性架构与应用

OpenClaw:本地化AI助手的革命性架构与应用

1. OpenClaw:重新定义个人AI助手的边界第一次在Telegram里收到OpenClaw自动整理的会议纪要时,我盯着手机屏幕足足愣了三分钟。这个自称"小龙虾"的AI不仅准确识别了Zoom会议录音中的关键决策点,还根据历史对话自动关联了待办事项&am…

2026/7/19 1:25:19 阅读更多 →
响应json数据和文本数据

响应json数据和文本数据

响应页面 响应数据 文本数据 json数据 package com.ycl.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; Controller public class UserController {RequestMapping("/toJumpPage")…

2026/7/19 1:24:18 阅读更多 →

最新新闻

Windows TCP/IP协议栈tcpip.sys深度解析与优化

Windows TCP/IP协议栈tcpip.sys深度解析与优化

1. Windows网络通信基石:tcpip.sys深度解析在Windows系统的网络通信底层,tcpip.sys这个不到1MB的文件承载着整个操作系统的网络通信命脉。作为微软TCP/IP协议栈的核心驱动程序,它自Windows XP时代就默默处理着每台计算机的网络数据包收发任务…

2026/7/19 2:58:52 阅读更多 →
跨平台流媒体下载终极指南:使用N_m3u8DL-RE轻松保存HLS、DASH和M3U8视频

跨平台流媒体下载终极指南:使用N_m3u8DL-RE轻松保存HLS、DASH和M3U8视频

跨平台流媒体下载终极指南:使用N_m3u8DL-RE轻松保存HLS、DASH和M3U8视频 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/n…

2026/7/19 2:58:52 阅读更多 →
免费微信聊天记录导出工具:完整备份与永久保存指南

免费微信聊天记录导出工具:完整备份与永久保存指南

免费微信聊天记录导出工具:完整备份与永久保存指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机存储空间不足而不得不删除珍贵的微信聊天记…

2026/7/19 2:58:52 阅读更多 →
这次终于选对了!2026年公认好用的专业降AIGC平台

这次终于选对了!2026年公认好用的专业降AIGC平台

2026年论文降AI率工具已从“基础改写”升级为智能化、多维度优化平台,核心评价维度包括文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规及多语种适配。本次测评覆盖6款主流工具,涵盖中文/英文、全流程与专项功能、免费与付费版本,让…

2026/7/19 2:58:52 阅读更多 →
C语言基础篇(4):输入输出、格式控制与条件表达

C语言基础篇(4):输入输出、格式控制与条件表达

一、语句概述在 C 语言中,语句是完成一定任务操作的代码。C 语言的语句分为以下五种:类型说明控制语句控制程序流程(如 if、for、while)函数调用语句调用一个函数表达式语句表达式后加分号构成语句空语句只有一个分号 ;复合语句用…

2026/7/19 2:58:52 阅读更多 →
Android LinearLayout布局详解与实战技巧

Android LinearLayout布局详解与实战技巧

1. Android UI布局基础与LinearLayout解析在移动应用开发中,用户界面(UI)设计是连接用户与功能的核心桥梁。Android系统提供了多种布局方式,其中LinearLayout作为最基础且使用频率最高的布局容器之一,几乎出现在每个Android应用的界面设计中。…

2026/7/19 2:57:51 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻