HarmonyOS—添加/删除Module

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.mzph.cn/news/696137.shtml

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

相关文章

如何利用内网穿透工具在企业微信开发者中心实现本地接口服务回调

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

SQL查询每个类别价格前3的数据

SELECTproduct_id,category,price FROM (SELECTproduct_id,category,price,ROW_NUMBER() OVER (PARTITION BY category ORDER BY price) AS rankFROMyour_products_table ) AS ranked_products WHERErank < 3;DENSE_RANK() 和 ROW_NUMBER() 是窗口函数&#xff08;Window Fu…

前端知识复习

1.symbol类型 Symbol 是 ECMAScript 6 中引入的一种新的基本数据类型&#xff0c;它表示独一无二的值。Symbol 值是通过 Symbol() 函数创建的。 Symbol 值具有以下特点&#xff1a; 独一无二性&#xff08;唯一性&#xff09;&#xff1a;每个通过 Symbol() 函数创建的 Symb…

十三:集合

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 01、Java 集合框架概述1.1、集合框架与数组的对比及概述1.2、集合框架涉及到的API 02、Collection接口方法2.1、Collection接口中的常用方法12.2、Collection接口中…

在idea中配置Tomcat

1.在idea中点击右上角 2.点击Edit Configurations,点击加号 3.向下拉找到Tomcat Server下的Local,点一下 点击Configure 找到tomcat文件路径,选择apache-tomcat-8.5.63(8.5.63是我的版本号) 选择好路径后点ok就配置好了 总步骤:

Vue 图片轮播第三方库 Vue-awesome-swiper介绍及简单例子

vue-awesome-swiper 是一个基于 Swiper 的 Vue 轮播图组件&#xff0c;Swiper 是一个流行的移动端触摸滑动插件。它为 Vue.js 应用提供了一套丰富的轮播组件&#xff0c;支持多种布局和功能&#xff0c;如自动播放、无限循环、触摸滑动等。 安装 首先&#xff…

代码随想录算法训练营第一天

● 今日学习的文章链接和视频链接 ● 自己看到题目的第一想法 1. 704二分法&#xff1a; 方法一&#xff1a; 整个数组是 左闭右闭区间 [ ] left指针指向数组开始下标&#xff0c; right 指针指向数组最后下表nums.size()-1, mid为 (leftright) /2循环条件 left<rightnu…

打开stable diffusion webui时,提示缺少clip或clip安装不上的解决方案(windows下的操作)

1.问题描述 打开stable diffusion webui时&#xff0c;提示缺少clip或clip安装不上 2.解决方案 原因&#xff1a;stable diffusion webui环境中的clip其实是open_clip&#xff0c;不能用pip install clip安装解决方法是直接到github下载 open_clip 代码到本地&#xff0c;并…

linux环境ssh-rsa进行签名\权限\登录\原理(免密登录)

linux环境ssh-rsa进行签名权限登录(免密登录) SSH原理与运用什么是SSH?SSH的使用场景ssh-rsa获取xshell环境登录获取ssh-rsa使用ssh-rsa登录SHA系列SHA-1、SHA-256和RSA的区别RSA原理数论基础RSA机制RSA数学密钥生成公式RSA数学加密理论RSA数学签名公式

小折叠也能成为主力机,全新小折叠旗舰华为Pocket 2正式发布

2024年2月22日&#xff0c;华为在三亚举办华为Pocket 2时尚盛典&#xff0c;正式发布其全新小折叠旗舰华为Pocket 2。一直以来&#xff0c;华为致力于萃取各界艺术灵感&#xff0c;不断探寻科技美学的可能性&#xff0c;华为Pocket系列更是秉承将奢雅美学与尖端科技融为一体的理…

探索Redis是否为单线程的奥秘(文末送书)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. Redis中的多线程二. I/O多线程三. Redis中的多进程四. 结论五. 书籍推荐5.1 书…

高效时间管理法则

你是否天天在忙&#xff0c;是否忙的不得要领&#xff0c;认真领会时间管理的四象限工作法&#xff0c;它会让你的工作变得高效。 目录 一、时间管理的误区 二、时间是如何被浪费的&#xff1f; 内部因素 外部因素 三、时间管理的5个阶段 1.公鸡型时间管理&#xff1a; …

第一个Qt程序中的秘密

创建第一个程序 首先我们打开Qt Creator 打开文件->New Projects... 菜单&#xff0c;创建我们的第一个Qt项目 选择 Qt Widgets Application&#xff0c;点击选择...按钮 之后&#xff0c;输入项目名称QtLearning&#xff0c;并选择创建路径&#xff0c; 在build system中选…

ConnectWise ScreenConnect 身份验证绕过漏洞复现可RCE(CVE-2024-1709)

0x01 产品简介 ConnectWise ScreenConnect ,是一款自托管的远程桌面软件应用,该款软件允许用户自行托管,可以在自己的服务器、个人电脑、虚拟机或虚拟专用服务器上运行。 0x02 漏洞概述 ConnectWise ScreenConnect低于23.9.8 版本的产品中,SetupWizard.aspx接口处存在身…

Android14 InputManager-焦点窗口的更新

设置焦点时需要 先设置焦点APP mFo-cusedApp是一个AppWindowToken&#xff0c;在WMS中用来表示当前处于Resume状态的Activity。它是由AMS在开始启动一个Activity时调用WMS的setFocusedApp&#xff08;&#xff09;函数设置的。 考虑以下应用场景&#xff0c;当用户从Launche…

内存管理——线性内存,进程空间

低2G为进程空间 开始地址结束地址大小属性00xFFFFF1M保留0x1000000x102FFF栈不固定位置、大小0x1030000x143FFF堆不固定位置、大小0x400000主程序文件不固定位置、大小加载dll不固定位置、大小0x7ffdd000TIB位置&#xff0c;大小编译时固定0x7FFFE000系统与用户共享数据块位置…

[newstarctf2023] --RE wp

AndroGenshin: rc4加密表&#xff0c;base64换表&#xff1a; 脚本梭就行 python username b"genshinimpact" base64_table [125, 239, 101, 151, 77, 163, 163, 110, 58, 230, 186, 206, 84, 84, 189, 193, 30, 63, 104, 178, 130, 211,164, 94, 75, 16, 32, 33…

发布 rust 源码包 (crates.io)

rust 编程语言的包 (或者 库, library) 叫做 crate, 也就是软件中的一个组件. 一个完整的软件通常由多个 crate 组成, rust 编译器 (rustc) 一次编译一整个 crate, 不同的 crate 可以同时并行编译. rust 官方有一个集中发布开源包的网站 crates.io. 发布在这上面的 crate 可以…

uniapp微信公众号H5分享

如果项目文件node_modules中没有weixin-js-sdk文件&#xff0c;则直接使用本文章提供的&#xff1b; 如果不生效&#xff0c;则在template.h5.html中引入 <script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> 首先引入weixin-js-…

vue3框架组件自动导入unplugin-vue-components

1.安装 npm i unplugin-vue-components -save-dev 2.配置 我这里用的是Vue CLI&#xff0c;所以要在vue.config.js文件中添加配置&#xff0c;官网中有写不同打包工具的配置写法 框架我使用的是Element Plus&#xff0c;使用前去官网查看自己的框架是否支持&#xff0c;主流…