HarmonyOS—添加/删除Module

news2024/11/16 22:24:53

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

在工程中添加Module

创建新的Module

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

  • 方法1:鼠标移到工程目录顶部,单击鼠标右键,选择New > Module…,开始创建新的Module。
  • 方法2:选中工程目录中任意文件,然后在菜单栏选择File > New > Module…,开始创建新的Module。

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

在这里插入图片描述
3.在Module配置页面,设置新增Module的基本信息,然后单击Next

  • Module name:新增模块的名称。
  • Module type:仅在Ability模板存在该字段,可以选择Feature和Entry类型。如果同一类型的设备已经存在Entry模块,添加新Module选择Entry类型时,还需要配置distroFilter分发规则。
  • Enable Super Visual:是否使用低代码开发方式。
  • Language:选择该Module的开发语言。
  • Device type:选择模块的设备类型,如果新建模块的Module type为feature,则只能选择该工程原有的设备类型;如果Module type为entry,可以选择该Module支持的其他设备类型。
  • Enable native:仅Library模板存在,将创建一个可以调用C/C++的共享包。

在这里插入图片描述
4.若该Module的模板类型为Ability,还需要设置新增Ability的Ability nameExported参数,Exported参数表示该Ability是否可以被其它应用/服务所调用(FA模型下为Visible参数)。

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

5.单击Finish,等待创建完成后,可以在工程目录中查看和编辑新增的Module。

导入Module

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

1.在菜单栏单击File > New >Import… >Import Module
在这里插入图片描述
2.选择导入的模块时。其中SDK 4-7的工程既可以选择模块也可以选择工程,而SDK 8-9的工程只可以选择模块。下面以SDK 8-9的工程为例介绍导入模块的具体操作。

在指定路径下,选择导入的模块,单击OK。导入的模块可以为文件夹,也可以为zip格式。
在这里插入图片描述

配置distroFilter分发规则

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

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

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

Stage模型配置分发规则

1.在entry > src > main > resources > profile文件中新建一个.json文件,并根据开发实际需要,配置如下代码信息。Stage模型下分发规则请参见distroFilter标签。

{
   "distroFilter": {
      "apiVersion": {     //API 版本
         "policy": "include",
         "value": [4, 5]
      },
      "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分发规则。FA模型distroFilter字段请参见distroFilter对象的内部结构。

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

删除Module

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

为了能够让大家跟上互联网时代的技术迭代,在这里跟大家分享一下我自己近期学习心得以及参考网上资料整理出的一份最新版的鸿蒙学习提升资料,有需要的小伙伴自行领取,限时开源,先到先得~~~~

领取以下高清学习路线原图请点击→《鸿蒙基础入门学习指南》纯血鸿蒙HarmonyOS基础技能学习路线图

在这里插入图片描述
领取以上完整高清学习路线图,请点击→《鸿蒙 (Harmony OS)开发学习手册》小编自己整理的部分学习资料(包含有高清视频、开发文档、电子书籍等)

在这里插入图片描述

以上分享的学习路线都适合哪些人跟着学习?
-应届生/计算机专业通过学习鸿蒙新兴技术,入行互联网,未来高起点就业。
-0基础转行提前布局新方向,抓住风口,自我提升,获得更多就业机会。
-技术提升/进阶跳槽发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术,享受蓝海红利。

在这里插入图片描述

最后

鸿蒙开发学习是一个系统化的过程,从基础知识的学习到实战技能的锤炼,再到对前沿技术的探索,每一环节都至关重要。希望这份教程资料能帮助您快速入门并在鸿蒙开发之路上步步攀升,成就一番事业。让我们一起乘风破浪,拥抱鸿蒙生态的广阔未来!

如果你觉得这篇内容对你有帮助,我想麻烦大家动动小手给我:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注我,同时可以期待后续文章ing,不定期分享原创知识。

想要获取更多完整鸿蒙最新VIP学习资料,请点击→《鸿蒙全套学习指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1462885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++模板从入门到入土

1. 泛型编程 如果我们需要实现一个不同类型的交换函数,如果是学的C语言,你要交换哪些类型,不同的类型就需要重新写一个来实现,所以这是很麻烦的,虽然可以cv一下,有了模板就可以减轻负担。 下面写一个适…

Windows下搭建EFK实例

资源下载 elasticSearch :下载最新版本的就行 kibana filebeat:注意选择压缩包下载 更新elasticsearch.yml,默认端口9200: # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable defaults for most …

CSB ---> (XXE)XML基础

本来今天想更一下CSbeacon上线多层的内网机器的,但是刚好今天是年后的第一节课,讲的是XXE的基础,那就来先盘一下基础!! 1.XXE XXE全称是XML External Entity即xml外部实体注入攻击!其后果会导致用户…

UE C++ 设置碰撞前 后事件 碰撞中事件

一.在Actor中声明碰撞BOX组件 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category "MySceneComponent")class UBoxComponent* MyBox; 在Actor以这样的形式实现代理绑定,在BeginPlay()里。 MyBox->OnComponentBeginOverlap.AddDynamic(); 转到…

《游戏引擎架构》--学习3

内存管理 优化动态内存分配 维持最低限度的堆分配,并且永不在紧凑循环中使用堆分配 容器 迭代器 Unicode

(C++) 详解内存地址空间

详解内存空间 0. 概述 一个C/C 程序,编译之后,形成的程序,在执行期间,内存中不仅存在一块区域用于存放代码,还有一些其他的区域用于使用,本节会详解C/C内部所使用的内存地址空间,关于各内存的…

Java下访问SQLServer 2008(低于2016)数据连接问题

环境:ubuntu20.04,tomcat,java 通过jdbc:sqlserver连接远程的SQLServer 2008R2数据库,2016版本之前仅支持TLS10,因此在连接时会出现如下错误, The driver could not establish a secure connection to SQ…

(二十二)Flask之上下文管理第三篇【收尾—讲一讲g】

目录: 每篇前言:g到底是什么?生命周期在请求周期内保持数据需要注意的是: 拓展—面向对象的私有字段深入讲解一下那句: 每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域…

Java项目:21 基于SSM实现的图书借阅管理系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SSM实现的图书借阅管理系统设计了两个角色,分别是管理员、用户,在数据表user中以ident字段区分,为1表示管理员…

Vue中如何使用dayjs

Day.js中文网Day.js是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。https://dayjs.fenxianglu.cn/ 单位不区别大小写,支持复数和缩写形式 单位缩写描述 date D日期 [1,31]dayd星期 [0,6](星期日0&#xff0c…

【开源】JAVA+Vue.js实现超市账单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 总体设计3.2 前端设计3.3 后端设计在这里插入图片描述 四、系统展示五、核心代码5.1 查询供应商5.2 查询商品5.3 新增超市账单5.4 编辑超市账单5.5 查询超市账单 六、免责说明 一、摘要 1.1 项目介绍 基于…

尾矿库排洪系统结构仿真软件WKStruc(可试用)

1、背景介绍 尾矿库作为重大危险源之一,在国际灾害事故排名中位列第18位,根据中国钼业2019年8月刊《中国尾矿库溃坝与泄漏事故统计及成因分析》的统计,在46起尾矿库泄漏事故中,由于排洪设施导致的尾矿泄漏事故占比高达1/3&#x…

【SpringCloud】使用 Spring Cloud Alibaba 之 Sentinel 实现微服务的限流、降级、熔断

目录 一、Sentinel 介绍1.1 什么是 Sentinel1.2 Sentinel 特性1.3 限流、降级与熔断的区别 二、实战演示2.1 下载启动 Sentinel 控制台2.2 后端微服务接入 Sentinel 控制台2.2.1 引入 Sentinel 依赖2.2.2 添加 Sentinel 连接配置 2.3 使用 Sentinel 进行流控(含限流…

【LeetCode: 105. 从前序与中序遍历序列构造二叉树 + DFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【精选】Java面向对象进阶——内部类

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

设计师常常从哪些网站获取灵感?

1、Pinterest Pinterest是一个基于图片共享的社交网站。用户可以在平台上浏览、收集和分享各种想法、设计灵感和项目。Pinterest用户可以在其网站或应用程序上创建虚拟画板(boards),根据主题或兴趣收集和整理你最喜欢的图片(包括…

RxJS 核心原理-操作符(源码实现)

本文将深入探讨RXJS操作符的核心原理,并介绍一些常见的操作符、应用场景以及相应的代码示例。通过理解RXJS的响应式编程思想,您将能够更好地应用它来处理异步数据流和事件流。 建议读者在阅读本文之前,先参考我的另一篇文章《深入浅出 RxJS …

IDM(Internet Download Manager)2024免激活绿色版下载

IDM(Internet Download Manager)在安全保护方面提供了多种功能和策略,以确保用户的下载体验和数据安全。以下是一些IDM的安全保护功能和策略: IDM绿色下载如下: https://wm.makeding.com/iclk/?zoneid34275 病毒扫描功能&#…

Spring之AOP源码解析(中)

前言 在上一篇文章中,我们讲解了Spring中那些注解可能会产生AOP动态代理,我们通过源码发现,完成AOP相关操作都和ProxyFactory这个类有密切关系,这一篇我们将围绕这个类继续解析 演示 作用 ProxyFactory采用策略模式生成动态代理对象,具体生成cglib动态代理还是jdk动态代理,…

FairyGUI × Cocos Creator 3.x 使用方式

前言 上一篇文章 FariyGUI Cocos Creator 入门 简单介绍了FairyGUI,并且按照官方demo成功在Cocos Creator2.4.0上运行起来了。 当我今天使用Creator 3.x 再引入2.x的Lib时,发现出现了报错。 这篇文章将介绍如何在Creator 3.x上使用fgui。 引入 首先&…