当前位置: 首页 > news >正文

HarmonyOS应用配置文件与资源组织深度解析 - 教程

一、应用程序包结构概述

HarmonyOS应用以APP Pack形式发布,它由一个或多个HAP以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,可分为entry和feature两种类型。

Entry类型的HAP是应用的主模块,一个应用中对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。Feature类型的HAP是应用的动态特性模块,一个APP可以包含一个或多个feature类型的HAP,也可以不含。

二、配置文件详解

2.1 配置文件层次结构

每个HAP的根目录下都存在配置文件,文件内容主要涵盖以下三个方面:

  • 应用全局配置信息:包含应用的包名、生产厂商、版本号等基本信息
  • 设备特定配置:包含应用在具体设备上的配置信息
  • 模块配置信息:包含每个Ability必须定义的基本属性

2.2 app.json5与module.json5对比

在API 12中,HarmonyOS使用app.json5和module.json5替代传统的config.json文件。这两种配置文件的分工如下:

配置文件存放位置主要功能
app.json5AppScope目录下声明应用的全局配置信息,如应用Bundle名称、应用版本号等
module.json5各Module的src/main目录下声明Module基本信息、支持的设备类型、所含的组件信息等

app.json5示例配置:

{"app": {"bundleName": "com.example.myapp","vendor": "example","version": {"code": 1,"name": "1.0.0"},"apiVersion": {"compatible": 12,"target": 12,"releaseType": "Release"}}
}

module.json5示例配置:

{"module": {"name": "entry","type": "entry","description": "$string:module_desc","deviceTypes": ["phone","tablet"],"distro": {"deliveryWithInstall": true,"moduleName": "entry","moduleType": "entry"},"abilities": [{"name": "MainAbility","srcEntry": "./ets/entryability/MainAbility.ets","description": "$string:mainability_desc","icon": "$media:icon","label": "$string:app_name","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home"]}]}]}
}

三、资源文件管理

3.1 资源目录结构

应用的资源文件统一存放于resources目录下,包括base目录与限定词目录。资源目录采用两级结构组织:

一级子目录

二级资源目录示例

resources
|---base
|   |---element    // 元素资源(字符串、颜色等)
|   |---media      // 媒体资源
|   |---profile    // 原始文件资源
|---rawfile        // 原生资源目录

3.2 资源限定词规则

限定词目录由一个或多个表征应用场景或设备特征的限定词组合而成,组合顺序为:移动国家码和移动网络码-语言*文字*国家或地区-横竖屏-设备类型-颜色模式-屏幕密度

限定词配置示例

// 在module.json5中配置支持设备
"deviceTypes": ["phone","tablet","car","wearable"
]

3.3 资源访问方式

在代码中访问资源需要使用$r方法:

// 访问字符串资源
Text($r('app.string.hello_world'))
// 访问图片资源
Image($r('app.media.app_icon'))
// 访问尺寸资源
.width($r('app.float.element_size'))

四、模块化工程配置

4.1 三层工程结构

官方推荐采用"三层工程结构",实现代码的高效组织和复用:

  1. common层(公共能力层):包含工具库、公共配置、通用常量等基础能力
  2. features层(业务模块层):各业务模块,高内聚低耦合,供products层选择性引用
  3. products层(产品定制层):针对不同设备形态的入口模块

4.2 模块依赖管理

在HarmonyOS工程中,使用oh-package.json5文件管理依赖:

引用本地模块

{"dependencies": {"@ohos/utils": "file:../common/utils"}
}

引用OHPM仓库三方包

{"dependencies": {"@ohos/lottie": "^2.0.12"}
}

也可以通过命令行添加依赖:

ohpm install @ohos/lottie

五、实战:多设备适配配置

5.1 多设备布局适配

利用资源限定词为不同设备提供差异化布局:

phone设备布局(/base/layout/main_page.xml)

tablet设备布局(/tablet/layout/main_page.xml)

5.2 配置文件合并规则

当应用模块引用HAR时,在编译构建HAP时需要将HAP的配置文件与HAR的配置文件合并。合并规则如下:

  • HAP的优先级总是高于HAR
  • 当HAP依赖多个HAR时,先加载的HAR优先级高于后加载的HAR
  • 合并冲突时按照优先级顺序解决

六、编译与发布配置

6.1 编译过程文件变化

从开发态到编译态,Module中的文件会发生如下变更:

  • ets目录:ArkTS源码编译生成.abc文件
  • resources目录:AppScope目录下的资源文件会合入到Module下面的资源目录
  • 配置文件:app.json5字段会合入到module.json5中,生成最终的module.json

6.2 发布包结构

应用发布上架时,Bundle打包为.app文件(App Pack),同时生成pack.info文件。pack.info描述了App Pack中每个HAP和HSP的属性。

总结

正确的配置和资源管理是HarmonyOS应用开发的基础。通过合理使用配置文件和资源限定词,可以高效实现多设备适配。三层工程结构和模块化依赖管理为大型项目开发提供了良好的可维护性基础。

http://www.jsqmd.com/news/40476/

相关文章:

  • 2025扫描电镜精选榜:富泰微五星领衔,日立、国仪携超高分辨率/钨灯丝 SEM,适配科研工业多元需求
  • 2025智能科技/医疗设备/信息科技/新中式茶饮/科创/平面/东方美学/品牌设计/品牌logo设计/品牌VI设计领域优质公司排行榜:聚焦全案创意与视觉赋能,3 家机构助力品牌高效破圈
  • 2025修护/二硫化硒去屑/香氛/控油蓬松/洗发水品牌推荐榜:精准护养新选择,MASIL玛丝兰领衔解决头屑、扁塌等护发难题
  • 2025防火/模压/瓦楞/大跨距/热镀锌/热浸锌/不锈钢/光伏/铝合金/锌铝镁电缆桥架优选榜:河北百著全系列防护覆盖 三家实力厂家凭场景优势突围
  • 2025厨房/无烟管/商用/复合式/内循环/小型/油烟净化/一体机推荐榜:上海多环五星领跑 全场景适配解锁餐饮 / 家用净化新体验
  • 2分钟选刊!值得农林环境人收藏的6个期刊!境科研人必备!
  • antd 上传文件组件在表单回显时不显示下载按钮
  • 2025武汉车出租厂家推荐榜:防撞车出租/高空车出租/登高车出租/服务体验与高性价比深度解析
  • 2025滚齿机优质厂家推荐榜:济南兴宇数控五星领跑,三大厂商凭技术与适配性成行业标杆
  • 2025年芝麻白/芝麻灰/火烧面/亚光面/花岗岩/路岩石优质厂家优选榜:聚焦专业品质,助力工程建设
  • 102302141_易敏亮第三次数据采集作业
  • 2025试验机厂家推荐榜:万能试验机/高低温试验机/钢丝绳试验机专精之选
  • 2025广东洗头机厂家推荐榜:盛泰科技领衔,三大品牌解锁高效洗护新体验
  • 2025泰安软件开发公司推荐榜:软件开发公司/软件公司/泰安软件公司技术实力助力企业数字化转型
  • mysql数据设计中的性能分析工具
  • 2025北京日式搬家公司企业推荐:单位搬家公司/北京搬家公司电话/全流程服务与技术实力深度解析
  • 2025年第43周数字取证与事件响应技术动态
  • 深入解析:【Linux基础学习】Linux Ubuntu 权限管理:从入门到精通
  • 实验室纯水设备厂家调研,梳理主流厂商与区域优势
  • 看不见的核安全:核控制系统如何降低测试风险?
  • JAVA连接SFTP服务器报错:cn.hutool.extra.ssh.JschRuntimeException: JSchException: Packet corrupt
  • 革命你的 Git 提交消息 - GIM 1.8.0 发布了!
  • 2025 年石笼网厂家最新推荐排行榜:箱形 / 网垫 / 袋形 / 帘形全品类,电镀锌 / 锌铝合金 / 电焊材质优质厂家权威推荐
  • spark热点key导致的数据倾斜复现和加盐处理 - 指南
  • 企业级管理系统的站内信怎么轻量级优雅实现
  • 2025 年最新推荐铝板厂家排行榜,涵盖 5052/6061/7075 铝板及纯铝板/高纯铝板优质供应商精选
  • Netty和Tomcat
  • 2025 年最新推荐铝管厂家权威排行榜:无缝铝管/合金铝管/6061/2A12 铝管优质企业综合测评推荐
  • 【计算机、信息技术、电子、人工智能等均可投】第二届图像、信号处理与通信技术国际学术会议(ISPCT 2025)
  • 2025 年微矩形 /圆形/矩形电连接器厂家最新推荐排行榜,涵盖 MDC/ZMDM/Y50X 等系列优质品牌精选