【HarmonyOS Next之旅】DevEco Studio使用指南(五) -> 添加/删除Module

news/2025/3/20 11:58:20/

目录

1 -> 创建新的Module

2 -> 导入Module

3 -> 配置distroFilter/distributionFilter分发规则

4 -> 删除Module


1 -> 创建新的Module

Module是应用/元服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/元服务配置文件,每一个Module都可以独立进行编译和运行。一个应用/元服务通常会包含一个或多个Module,因此,可以在工程中创建多个Module,每个Module分为Ability和Library两种类型。Module支持entry、feature、har、shared四种类型。

1. 通过如下三种方法,在工程中添加新的Module。

方法1:鼠标移到工程目录顶部,单击鼠标右键,选择New > Module...,开始创建新的Module,此时该module将创建在工程根目录下。

方法2:选中工程目录中任意文件,然后在菜单栏选择File > New > Module...,开始创建新的Module,此时该module将创建在工程根目录下。

方法3:在工程根目录下创建一个新的Directory,可在该目录下单击鼠标右键,选择New > Module...,创建新的Module,此时module将创建在该文件目录下,方便开发者对模块进行分类管理。

说明

当前暂不支持在AppScope、hvigor、oh_modules、build、点开头的目录(如:.hvigor、.idea)下通过单击鼠标右键创建module。

2. 在New Project Module界面中,选择需要创建的模板,单击Next。

3. 在Module配置页面,设置新增Module的基本信息,然后单击Next。

  • Module name:新增模块的名称,Module name不可与工程名称相同。
  • Module type:仅在Ability模板存在该字段,可以选择Feature和Entry类型。

    说明

    • 同一工程通过新增Module仅支持创建一个Entry模块。如需构建Entry类型模块,可在module.json5文件中修改相应module下的type字段。
    • 如果同一类型的设备已经存在Entry模块,出现新的Entry模块后,还需要配置distroFilter分发规则。
  • Device type:选择模块的设备类型,如果新建模块的Module type为feature,则只能选择该工程原有的设备类型;如果Module type为entry,可以选择该Module支持的其他设备类型。
  • Enable native:仅Library模板存在,将创建一个可以调用C/C++的共享包。

4. 若该Module的模板类型为Ability,还需要设置新增Ability的Ability name和Exported参数,Exported参数表示该Ability是否可以被其它应用/元服务所调用(FA模型下为Visible参数)。

  • 勾选(true):可以被其它应用/元服务调用。
  • 不勾选(false):不能被其它应用/元服务调用。

5. 单击Finish,等待创建完成后,可以在工程目录中查看和编辑新增的Module。工程中所包含模块的信息可以在​​​​​​​build-profile.json5中module字段进行配置。

2 -> 导入Module

HarmonyOS工程支持导入其它HarmonyOS模块的功能。当前仅支持FA模型的模块导入到FA模型,Stage模型的模块导入到Stage模型。不支持FA模型的模块导入到Stage模型,或Stage模型的模块导入到FA模型。

说明

DevEco Studio支持引用当前工程目录之外,即其他工程下的Module。除Import Module方式导入模块外,可通过在build-profile.json5文件中srcPath字段下配置工程外Module的相对路径导入。通过srcPath方式导入工程,仅引用Module相关信息,不会将Module代码完全复制至本地。

1. 在菜单栏单击File > New > Import... > Import Module。

2. 选择导入的模块。在指定路径下,选择导入的模块,单击OK。导入的模块可以为文件夹,也可以为zip格式。

3 -> 配置distroFilter/distributionFilter分发规则

同一类型的设备(Phone、Wearable、Lite Wearable等)可能在系统API版本(apiVersion)、屏幕形状(screenShape)、窗口分辨率(screenWindow)上存在差异。针对这些差异,需要针对同一类型设备的不同型号进行适配开发,然后在应用市场实现精准的分发,以便不同设备的用户能获得更好的使用体验。为了实现应用市场的精准分发,需要在一个工程中,针对同一类型设备添加多个Entry模块来适配不同型号的设备,然后再配置不同的分发规则。具体规则如下:

  • 通过DeviceType与screenShape等属性的组合唯一确定一个Entry。
  • distroFilter/distributionFilter中至少包含属性中的一个标签。
  • 如果一个Entry模块中配置了screenShape等任意一个或多个标签,则其他的Entry模块也必须包含相同的标签。
  • 一般情况下,screenShape和screenWindow标签用于Lite Wearable设备中。
  • 不同属性标签的配置格式如下。其中,policy取值为include时,表示设备满足value取值时,应用市场向该设备进行分发;policy取值为exclude时,表示除了value的取值外,其它合法的取值,应用市场都会向设备进行分发。

说明

screenWindow标签的policy取值只能为include。

Stage模型配置分发规则

1. 在entry > src > main > resources > profile文件夹中新建一个.json文件,并根据实际需要,配置如下代码信息。

{"distributionFilter": {"screenShape": {    //屏幕形状枚举"policy": "include","value": ["circle", "rect"]},"screenWindow": {   //窗口分辨率"policy": "include","value": ["454*454", "466*466"]},"screenDensity": {  //屏幕的像素密度"policy": "exclude","value": ["ldpi", "xldpi"]},"countryCode": {   //国家地区"policy": "include","value": ["CN", "HK"] }}
}

2. 在module.json文件中指定分发文件。

{"module": {"name": "MyAbilityStage","metadata": [{"name": "ohos.module.distro","resource": "$profile:distro_filter_config"    //distro_filter_config为被指定的分发文件}]}
}

FA模型分发规则配置

在同一个工程中,如果同一个设备存在多个Entry模块,需要在每一个Entry模块的​​​​​​​config.json文件中,配置distroFilter分发规则。

"module": {..."distroFilter": {"标签名字": {"policy": "include|exclude""value": [ a, b, c] }}
}

4 -> 删除Module

在工程目录中选中要删除的模块,单击鼠标右键,选中Delete,并在弹出的对话框中单击Delete


感谢各位大佬支持!!!

互三啦!!!


http://www.ppmy.cn/news/1580584.html

相关文章

【杂记二】git, github, vscode等

一、前言 暂时空着... 二、git 2.1 可能的疑问 1. VSCode 项目名和 GitHub 仓库名是否需要一致? 不需要一致。 VSCode 项目名(也就是你本地的文件夹名字)和 GitHub 仓库名可以不一样。 Git 是一个分布式版本控制系统,它主要关…

基于pycatia的CATIA装配体STP批量导出技术解析与优化指南

一、代码功能概述 本文提供的Python脚本通过pycatia库实现了CATIA装配体(.CATProduct)中第一层级零件/产品的STP格式批量导出功能。核心模块包含: ​CATIA连接初始化:通过COM接口建立与CATIA进程的通信(需后台运行CA…

【万字总结】前端全方位性能优化指南(四)——虚拟DOM批处理、文档碎片池、重排规避

前言 在浏览器宇宙中,DOM操作如同「时空裂缝」——一次不当的节点更新可能引发连锁重排,吞噬整条渲染流水线的性能。本章直面这一核心矛盾,以原子级操作合并、节点记忆重组、排版禁忌破解为三重武器,重构DOM更新的物理法则。通过虚拟DOM的批处理引擎将千次操作坍缩为单次提…

C++中的初识输入输出(二)

一、 iostream库与流的概念 C的iostream库是处理输入输出的核心工具,它定义了两个基础类型: istream:表示输入流,用于从设备读取数据。ostream:表示输出流,用于向设备写入数据。 所谓“流”(…

【css酷炫效果】纯CSS实现球形阴影效果

【css酷炫效果】纯CSS实现球形阴影效果 缘创作背景html结构css样式完整代码基础版进阶版(动态版) 效果图 想直接拿走的老板,链接放在这里:上传后更新 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了,赶时间&#xff0…

RabbitMQ可靠性进制

文章目录 1.生产者可靠性生产者重连生产者确认小结 2. MQ的可靠性数据持久化LazyQueue小结 3. 消费者的可靠性消费者确认机制消费者失败处理方案业务幂等性唯一消息ID业务判断 兜底方案 1.生产者可靠性 生产者重连 在某些场景下由于网络波动,可能就会出现客户端连…

SQL语言的散点图

SQL语言的散点图 引言 在数据科学和数据分析的领域中,数据可视化是一项重要的技能。有效的数据可视化可以帮助我们理解复杂的数据集,发现数据中的潜在规律,进而支持决策制定。散点图作为一种基本而有效的数据可视化形式,广泛应用…

群体智能优化算法-牛顿-拉夫逊优化算法(Newton-Raphson-Based Optimizer, NRBO,含Matlab源代码)

摘要(Abstract) 牛顿-拉夫逊优化算法(Newton-Raphson-Based Optimizer, NRBO)是一种新型群体智能优化算法,受牛顿-拉夫逊方法求解非线性方程的启发。NRBO 结合牛顿-拉夫逊搜索规则(Newton-Raphson Search …