鸿蒙HarmonOS开发实战:模块管理-Ability添加/删除Module

 Ability是应用/服务所具备的能力的抽象,一个Module可以包含一个或多个Ability。应用/服务先后提供了两种应用模型:

  • FA(Feature Ability)模型: API 7开始支持的模型,已经不再主推。
  • Stage模型:HarmonyOS 3.1 Developer Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。

    Stage模型包含两种Ability组件类型:

    • UIAbility组件:包含UI界面,提供展示UI的能力,主要用于和用户交互。
    • ExtensionAbility组件:提供特定场景的扩展能力,满足更多的使用场景。

Stage模型添加UIAbility

在模块中添加UIAbility

选中对应的模块,单击鼠标右键,选择New > Ability

  1. 设置Ability名称,选择是否在设备主屏幕上显示该功能的启动图标,单击Finish完成Ability创建。

在模块中添加Extension Ability

  1. 在工程中选中对应的模块,单击鼠标右键,选择New > Extension Ability,选择不同的场景类型 。当前仅Application工程支持创建Extension Ability。
    • Accessibility:用于提供辅助功能业务的能力。
    • EmbeddedUIExtensionAbility:提供了跨进程界面嵌入的能力。
    • BackupAbility:用于应用接入数据备份恢复的能力。
    • WorkScheduler:用于提供延迟任务回调实现的能力。
    • RemoteNotificationAbility:用于提供获取场景化消息数据和生命周期销毁的回调的通知能力。

  2. 设置Ability名称,单击Finish完成Extension Ability创建。

FA模型添加Ability

ArkTS工程与JS工程在FA模型中添加Ability的操作方式一致,本节内容以ArkTS工程为例介绍在模块中添加Ability。

创建Particle Ability

  1. 选中对应的模块,单击鼠标右键,选择New > Ability ,然后选择对应的Data Ability/Service Ability模板。

  2. 根据选择的Ability模板,设置Ability的基本信息。
    • Ability name:Ability类名称,由大小写字母、数字和下划线组成。
    • Language:该Ability使用的开发语言。
  3. 单击Finish完成Ability的创建,可以在工程目录对应的模块中查看和编辑Ability。

创建Feature Ability

  1. 选中对应的模块,单击鼠标右键,选择New > Ability ,然后选择对应的Page Ability模板。

  2. 根据选择的Ability模板,设置Ability的基本信息。
    • Ability name:Ability类名称,由大小写字母、数字和下划线组成。
    • Launcher ability:表示该Ability在终端桌面上是否有启动图标,一个HAP可以有多个启动图标,来启动不同的FA。
    • Language:该Ability使用的开发语言。
  3. 单击Finish完成Ability的创建,可以在工程目录对应的模块中查看和编辑Ability。

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

在工程中添加Module

创建新的Module

  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 nameExported参数,Exported参数表示该Ability是否可以被其它应用/服务所调用(FA模型下为Visible参数)。
    • 勾选(true):可以被其它应用/服务调用。
    • 不勾选(false):不能被其它应用/服务调用。
  5. 单击Finish,等待创建完成后,可以在工程目录中查看和编辑新增的Module。

导入Module

HarmonyOS工程支持从其它工程中导入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格式。

配置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分发规则。FA模型配置字段请参见distroFilter对象的内部结构

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

删除Module

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

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值