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

HarmonyOS之module.json5功能详解

module.json5 是 HarmonyOS 应用的模块级配置文件,用于定义模块的基本信息、设备适配规则、UIAbility/ExtensionAbility 配置、权限管理及性能优化策略。以下是其核心功能的模块化分类与配置说明。


一、🧩 模块基本信息

{"module": {"name": "entry","type": "entry","description": "$string:module_desc","mainElement": "EntryAbility"}
}
  • name: 模块唯一标识符(如 entry),需符合命名规则(字母、数字、下划线,最大31字节)。
  • type: 模块类型(entry/feature/har/shared)。entry 模块必须包含 mainElementpages
  • description: 模块描述信息,支持多语言资源索引(如 $string:module_desc)。
  • mainElement: 指定模块的入口组件(如 EntryAbility)。

二、📱 设备适配与分发

{"module": {"deviceTypes": ["phone", "tablet"],"deliveryWithInstall": true,"installationFree": false}
}
  • deviceTypes: 支持的设备类型(如 phonetablet),需覆盖目标设备,否则模块无法运行。
  • deliveryWithInstall: 是否随应用安装(true 随安装,false 动态下载)。
  • installationFree: 是否支持免安装(元服务必须设为 true)。

三、🎨 UIAbility 配置

{"abilities": [{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ts","launchType": "singleton","skills": [{"actions": ["ohos.want.action.home"],"entities": ["entity.system.home"]}]}]
}
  • name: UIAbility 唯一名称(如 EntryAbility)。
  • srcEntry: 入口代码路径(如 ./ets/entryability/EntryAbility.ts)。
  • launchType: 启动模式(singleton/multiton/standard)。
  • skills: 定义能接收的 Want 特征(Action、Entity、URI)。

四、🔧 ExtensionAbility 配置

{"extensionAbilities": [{"name": "FormAbility","srcEntry": "./form/FormAbility.ts","type": "form","metadata": [{"name": "ohos.extension.form","resource": "$profile:form_config"}]}]
}
  • type: ExtensionAbility 类型(如 formworkScheduler)。
  • metadata: 自定义元信息(如服务卡片配置)。

五、🛡️ 权限与安全

{"requestPermissions": [{"name": "ohos.permission.CAMERA","reason": "$string:camera_permission_reason","usedScene": {"abilities": ["EntryAbility"],"when": "inuse"}}]
}
  • requestPermissions: 声明运行时权限及使用场景(如 CAMERA)。

六、⚡ 性能优化

{"isolationMode": "nonisolationFirst","compressNativeLibs": false,"extractNativeLibs": true
}
  • isolationMode: 多进程运行模式(如 nonisolationFirst)。
  • compressNativeLibs: 是否压缩 Native 库(false 表示不压缩)。
  • extractNativeLibs: 安装时是否解压 Native 库(true 表示解压)。

七、🌍 云端分发策略

{"distributionFilter": {"screenDensity": {"policy": "exclude","value": ["ldpi", "xldpi"]},"countryCode": {"policy": "include","value": ["CN"]}}
}
  • screenDensity: 按屏幕密度过滤分发(如排除 ldpi)。
  • countryCode: 按国家地区分发(如仅在中国分发)。

八、🖼️ 页面与窗口配置

{"pages": "$profile:main_pages"
}
  • pages: 引用页面路由配置文件(如 main_pages.json)。
    • main_pages.json 示例
      {"src": ["pages/index/mainPage","pages/second/payment"],"window": {"designWidth": 720,"autoDesignWidth": false}
      }
      

九、📋 快捷方式与右键菜单

{"fileContextMenu": "$profile:menu"
}
  • fileContextMenu: PC/2in1 设备的右键菜单配置(引用 menu.json)。
    • menu.json 示例
      {"fileContextMenu": [{"abilityName": "EntryAbility","menuItem": "$string:open_with_app","menuHandler": "openFile"}]
      }
      

总结

功能模块关键配置项作用
🧩 模块基本信息nametype标识模块唯一性及类型。
📱 设备适配deviceTypes确保模块在目标设备上运行。
🛡️ 权限管理requestPermissions声明运行时权限及使用场景。
🖼️ 页面配置pages定义页面路由及窗口设计基准。
🌍 云端分发distributionFilter按设备特性精准分发。
⚡ 性能优化isolationMode控制多进程行为,提升性能。
http://www.dtcms.com/a/324337.html

相关文章:

  • AI测试助手如何让Bug无处可藏
  • 湖南(源点咨询)市场调研 如何在行业研究中快速有效介入 中篇
  • 深入浅出DBSCAN:基于密度的聚类算法详解与Python实战
  • github上传文件
  • Navicat 无限适用
  • Tesseract训练个人字库操提高准确率操作全流程(详细)
  • 新手向:Python制作简易音乐播放器
  • Python中的 __name__
  • 遇到前端导出 Excel 文件出现乱码或文件损坏的问题
  • 异或循环冗余
  • Python设计模式 - 装饰模式
  • 新手向:Python实现文件加密解密工具
  • 旅行者1号无线电工作频段
  • 18.3 全量微调:数据预处理之清洗与准备
  • 机器学习——DBSCAN 聚类算法 + 标准化
  • 实现两个开发板的串口通讯(基于STC8实现)
  • 复刻苏宁易购(移动端)
  • 【GPT入门】第44课 检查 LlamaFactory微调Llama3的效果
  • cursor, vscode黄色波浪线警告问题
  • React:useEffect 与副作用
  • 小巧实用的工具——ZoomIt
  • 【C++对象诞生全解析】构造函数:从内存布局到高效初始化的终极指南
  • 152-基于CWT-CNN-BiGRU-Attention-SABO-LSSVM对滚动轴承的故障诊断
  • spring-boot-starter-data-redis 与 org.redisson 区别 联系
  • 【递归、搜索与回溯算法】深度优先搜索
  • Text2SQL 自助式数据报表开发(Chat BI)
  • 《解锁 C++ 起源与核心:命名空间用法 + 版本演进全知道》
  • Spring Boot 注解详解:@RequestMapping 的多种用法
  • Docker 跨主机容器之间的通信macvlan
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DHCP欺骗、DHCP饿死)