HarmonyOs应用《重要日》开发第30篇 - HarmonyOS 应用配置详解
本文解析 ImportantDays 项目中的两个核心配置文件app.json5和module.json5包括应用级配置包名、版本、图标、模块级配置Ability 声明、设备类型、权限申请、以及这些配置与代码运行时的关联关系。一、配置文件体系HarmonyOS 应用的配置文件采用 JSON5 格式支持注释和尾逗号分为两个层级AppScope/ └── app.json5 ← 应用级配置全局 entry/ └── src/main/ └── module.json5 ← 模块级配置entry 模块配置层级app.json5 (应用级) ├── bundleName ← 应用唯一标识 ├── versionCode/Name ← 版本信息 ├── icon/label ← 应用图标和名称 └── modules ← 包含的模块 module.json5 (模块级) ├── name/type ← 模块名称和类型 ├── mainElement ← 入口 Ability ├── deviceTypes ← 支持设备 ├── abilities ← Ability 列表 └── requestPermissions ← 权限申请二、app.json5 详解完整内容{app:{bundleName:com.importantdays.app,vendor:importantdays,versionCode:1000000,versionName:1.0.0,icon:$media:app_icon,label:$string:app_name}}字段解析bundleNamebundleName:com.importantdays.app应用的唯一包名全局唯一。用途应用在系统中的唯一标识WantAgent 中使用bundleName: com.importantdays.app安装和卸载的标识命名规范反向域名格式com.公司名.应用名vendorvendor:importantdays应用供应商名称。versionCodeversionCode:1000000版本号数字用于版本比较。规则必须是整数新版本必须大于旧版本1000000 1.0.0 的编码1 × 1000000versionNameversionName:1.0.0版本名称字符串显示给用户。格式主版本.次版本.修订号iconicon:$media:app_icon应用图标资源引用。语法$media:资源名→ 引用resources/base/media/目录下的资源。labellabel:$string:app_name应用名称资源引用。语法$string:资源名→ 引用resources/base/element/string.json中的字符串。string.json 内容{string:[{name:app_name,value:重要日}]}应用名称为重要日显示在桌面图标下方和设置中。三、module.json5 详解完整内容{module:{name:entry,type:entry,description:$string:module_desc,mainElement:EntryAbility,deviceTypes:[phone,tablet],deliveryWithInstall:true,installationFree:false,pages:$profile:main_pages,abilities:[{name:EntryAbility,srcEntry:./ets/entryability/EntryAbility.ets,description:$string:entry_ability_desc,icon:$media:app_icon,label:$string:entry_ability_label,startWindowIcon:$media:app_icon,startWindowBackground:$color:start_window_background,exported:true,skills:[{entities:[entity.system.home],actions:[action.system.home]}]}],requestPermissions:[]}}模块级字段namename:entry模块名称。entry是主模块入口模块。typetype:entry模块类型entry应用入口模块feature功能模块shared共享库模块mainElementmainElement:EntryAbility模块的入口 Ability 名称。应用启动时首先加载此 Ability。deviceTypesdeviceTypes:[phone,tablet]支持的设备类型phone手机tablet平板tv电视wearable穿戴设备car车机ImportantDays 支持手机和平板。deliveryWithInstalldeliveryWithInstall:true是否随应用安装时一起下载。true 安装时即下载此模块。installationFreeinstallationFree:false是否支持免安装。false 需要安装才能使用。pagespages:$profile:main_pages页面路由配置文件引用。语法$profile:文件名→ 引用resources/base/profile/目录下的 JSON 文件。main_pages.json 内容{src:[pages/MainEntry]}定义了页面路由列表MainEntry对应MainEntry.ets文件。abilities 字段abilities:[{name:EntryAbility,srcEntry:./ets/entryability/EntryAbility.ets,description:$string:entry_ability_desc,icon:$media:app_icon,label:$string:entry_ability_label,startWindowIcon:$media:app_icon,startWindowBackground:$color:start_window_background,exported:true,skills:[{entities:[entity.system.home],actions:[action.system.home]}]}]Ability 字段解析namename:EntryAbilityAbility 名称必须与代码中的类名对应。关联// EntryAbility.etsexportdefaultclassEntryAbilityextendsUIAbility{...}srcEntrysrcEntry:./ets/entryability/EntryAbility.etsAbility 源文件路径。icon / labelicon:$media:app_icon,label:$string:entry_ability_labelAbility 的图标和名称可以与应用级不同。startWindowIconstartWindowIcon:$media:app_icon启动窗口图标应用启动时显示的图标。startWindowBackgroundstartWindowBackground:$color:start_window_background启动窗口背景色。语法$color:资源名→ 引用resources/base/element/color.json中的颜色。exportedexported:true是否可以被其他应用调用。true 允许外部调用。skillsskills:[{entities:[entity.system.home],actions:[action.system.home]}]声明 Ability 能响应的意图Intent。entity.system.homeaction.system.home表示此 Ability 可以从桌面启动。这是应用入口 Ability 的标准配置。requestPermissionsrequestPermissions:[]需要申请的权限列表。ImportantDays 当前为空数组。注意通知权限不需要在此声明通过notificationManager.requestEnableNotification()动态请求即可。如果需要其他权限如位置、相机等需要在此声明// 示例项目中未使用requestPermissions:[{name:ohos.permission.LOCATION,reason:$string:location_reason,usedScene:{abilities:[EntryAbility],when:always}}]四、配置与代码的关联启动流程1. 系统读取 app.json5 → bundleName: com.importantdays.app → 确定应用身份 2. 系统读取 module.json5 → mainElement: EntryAbility → 确定入口 Ability 3. 系统加载 EntryAbility → srcEntry: ./ets/entryability/EntryAbility.ets → 执行 EntryAbility 类 4. EntryAbility.onCreate() → 初始化数据 5. EntryAbility.onWindowStageCreate() → loadContent(pages/MainEntry) → 加载 MainEntry 页面 6. MainEntry 渲染 → Tabs 显示三个页面WantAgent 与配置的对应// NotificationUtil 中的 WantAgent{bundleName:com.importantdays.app,// ← app.json5 的 bundleNameabilityName:EntryAbility,// ← module.json5 的 abilities[0].nameaction:action.system.home// ← module.json5 的 skills[0].actions[0]}三者必须完全一致否则通知点击无法跳转。资源引用体系$media:app_name → resources/base/media/app_icon.png $string:app_name → resources/base/element/string.json → {name: app_name, value: 重要日} $color:start_window → resources/base/element/color.json → {name: start_window_background, value: #FFFFFF} $profile:main_pages → resources/base/profile/main_pages.json资源引用语法前缀资源类型示例$media:图片$media:app_icon$string:字符串$string:app_name$color:颜色$color:start_window_background$profile:配置文件$profile:main_pages五、版本管理versionCode 与 versionNameversionCode:1000000,versionName:1.0.0版本号规则versionName: 1.0.0 │ │ │ │ │ └── 修订号bug修复 │ └──── 次版本号新功能 └────── 主版本号重大变更 versionCode: 1000000 │ │ │ │ │ └── 修订号 × 1 │ └──── 次版本号 × 1000 └────── 主版本号 × 1000000版本升级示例versionNameversionCode说明1.0.01000000初始版本1.0.11000001修复 bug1.1.01001000新增功能2.0.02000000重大更新六、设备适配deviceTypes 配置deviceTypes:[phone,tablet]ImportantDays 支持手机和平板两种设备。响应式设计考量虽然配置支持平板但项目的 UI 主要针对手机设计使用固定宽度如 56vp 色条固定高度如 52vp 日期格未使用断点适配在平板上应用可以正常运行但可能无法充分利用大屏幕。未来可以通过 ArkUI 的断点机制实现响应式布局。七、构建配置build-profile.json5{app:{signingConfigs:[],products:[{name:default,signingConfig:default,compatibleSdkVersion:5.0.3(15),runtimeOS:HarmonyOS}]}}配置说明compatibleSdkVersion兼容的 SDK 版本runtimeOS运行时操作系统oh-package.json5{dependencies:{dayjs:^1.11.x}}声明项目依赖的第三方库。八、配置检查清单开发 ImportantDays 时需要确保以下配置一致检查项位置值bundleNameapp.json5com.importantdays.appbundleNameWantAgentcom.importantdays.appabilityNamemodule.json5EntryAbilityabilityNameWantAgentEntryAbilitysrcEntrymodule.json5./ets/entryability/EntryAbility.ets实际文件文件系统ets/entryability/EntryAbility.etsmainElementmodule.json5EntryAbilityloadContentEntryAbility.etspages/MainEntrypagesmain_pages.jsonpages/MainEntry实际文件文件系统ets/pages/MainEntry.ets九、总结HarmonyOS 应用配置文件体现了以下设计分层配置app.json5全局 module.json5模块级资源引用$前缀语法引用资源声明式Ability、权限、设备都通过配置声明一致性配置与代码必须严格对应版本管理versionCode versionName 双重版本控制设备适配通过 deviceTypes 声明支持设备配置文件是应用与系统之间的契约理解配置文件是开发鸿蒙应用的基础。

相关新闻

AI Banner生成器选型终极对比(Midjourney v6 / DALL·E 3 / 千问万相 / 百度文心一格):基于217组真实电商素材的量化评测

AI Banner生成器选型终极对比(Midjourney v6 / DALL·E 3 / 千问万相 / 百度文心一格):基于217组真实电商素材的量化评测

更多请点击: https://intelliparadigm.com 第一章:AI Banner生成器选型终极对比(Midjourney v6 / DALLE 3 / 千问万相 / 百度文心一格):基于217组真实电商素材的量化评测 为支撑电商大促季Banner自动化生产&#xff0…

2026/7/26 2:25:01 阅读更多 →
鸿蒙应用开发:@Provider 与 @Consumer 跨组件双向同步详解

鸿蒙应用开发:@Provider 与 @Consumer 跨组件双向同步详解

文章目录一、引言二、核心概念三、关键用法要点四、示例五、使用别名六、注意事项七、总结这是一个使用鸿蒙技术开发的本地原生记账应用,非常适合大家用来练手。相关源码已上传至 Github,点击此处查看项目。欢迎大家交流、指正,也欢迎提交 PR…

2026/7/26 2:32:48 阅读更多 →
Python 宏观经济实证 · 时空演进机制分析 (1)

Python 宏观经济实证 · 时空演进机制分析 (1)

一、地理探测器模型地理探测器 是由中国科学院王劲峰团队提出的一组探测空间分层异质性、揭示其背后驱动因子的统计学方法。核心假设是:若某个自变量对因变量有重要影响,则二者的空间分布应具有相似性;若研究区分层后的层内方差之和小于全区总…

2026/7/25 18:39:56 阅读更多 →

最新新闻

G-Helper:3步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿时代

G-Helper:3步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿时代

G-Helper:3步解锁华硕笔记本隐藏性能,告别Armoury Crate臃肿时代 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/7/26 13:37:11 阅读更多 →
Calibre中文路径保护插件:告别拼音乱码,让中文书名清晰可见

Calibre中文路径保护插件:告别拼音乱码,让中文书名清晰可见

Calibre中文路径保护插件:告别拼音乱码,让中文书名清晰可见 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文(中文)命…

2026/7/26 13:37:11 阅读更多 →
Photon光影包:让你的Minecraft世界焕发真实光影的终极指南

Photon光影包:让你的Minecraft世界焕发真实光影的终极指南

Photon光影包:让你的Minecraft世界焕发真实光影的终极指南 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon Photon是一款专注于游戏体验的Minecraft着色器包,通…

2026/7/26 13:37:11 阅读更多 →
3分钟上手AMD Ryzen调试工具:免费解锁CPU隐藏性能的完整指南

3分钟上手AMD Ryzen调试工具:免费解锁CPU隐藏性能的完整指南

3分钟上手AMD Ryzen调试工具:免费解锁CPU隐藏性能的完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…

2026/7/26 13:37:11 阅读更多 →
VR-Reversal:智能3D转2D视频转换的革命性工具,实现沉浸式自由视角探索

VR-Reversal:智能3D转2D视频转换的革命性工具,实现沉浸式自由视角探索

VR-Reversal:智能3D转2D视频转换的革命性工具,实现沉浸式自由视角探索 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址:…

2026/7/26 13:37:11 阅读更多 →
League Akari深度解析:英雄联盟LCU API自动化工具架构设计与实战指南

League Akari深度解析:英雄联盟LCU API自动化工具架构设计与实战指南

League Akari深度解析:英雄联盟LCU API自动化工具架构设计与实战指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari…

2026/7/26 13:36:11 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻