鸿蒙5.0开发进阶:添加/删除Module

打印 上一主题 下一主题

主题 1735|帖子 1735|积分 5205

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)



  • 鸿蒙开发核心知识点,看这篇文章就够了
  • 最新版!鸿蒙HarmonyOS Next应用开发实战学习路线
  • 鸿蒙HarmonyOS NEXT开发技能最全学习路线指南
  • 鸿蒙应用开发实战项目,看这一篇文章就够了(部门项目附源码)

添加/删除Module

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

创建新的Module


  • 通过如下三种方法,在工程中添加新的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。

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

  • 在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++的共享包。


  • 若该Module的模板类型为Ability,还需要设置新增Ability的Ability nameExported参数,Exported参数表现该Ability是否可以被别的应用/元服务所调用(FA模子下为Visible参数)。
       

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

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

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

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

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


配置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模子配置分发规则

  • 在entry > src > main > resources > profile文件夹中新建一个.json文件,并根据开发实际需要,配置如下代码信息。
    1. {
    2.    "distributionFilter": {
    3.       "screenShape": {    //屏幕形状枚举
    4.          "policy": "include",
    5.          "value": ["circle", "rect"]
    6.       },
    7.       "screenWindow": {   //窗口分辨率
    8.          "policy": "include",
    9.          "value": ["454*454", "466*466"]
    10.       },
    11.       "screenDensity": {  //屏幕的像素密度
    12.          "policy": "exclude",
    13.          "value": ["ldpi", "xldpi"]
    14.       },
    15.       "countryCode": {   //国家地区
    16.          "policy": "include",
    17.          "value": ["CN", "HK"]
    18.       }
    19.    }
    20. }
    复制代码
  • 在module.json文件中指定分发文件。
    1. {
    2.   "module": {
    3.     "name": "MyAbilityStage",
    4.     "metadata": [
    5.       {
    6.         "name": "ohos.module.distro",
    7.         "resource": "$profile:distro_filter_config"    //distro_filter_config为被指定的分发文件
    8.       }
    9.     ]
    10.   }
    11. }
    复制代码
FA模子分发规则配置
在同一个工程中,如果同一个装备存在多个Entry模块,需要在每一个Entry模块的config.json文件中,配置distroFilter分发规则。
  1. "module": {
  2.   ...
  3.   "distroFilter": {
  4.     "标签名字": {
  5.       "policy": "include|exclude"
  6.       "value": [ a, b, c]
  7.     }
  8.   }
  9. }
复制代码
删除Module

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



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表