鸿蒙基于ARKTS开发之初识框架-module.json5

Module.json5顾名思义,每个moudle下都会有这个文件,它是随module产生的
WX20240202-102226@2x.png

比如我们有很多个模块划分,首页啊,订单啊 每个模块创建的时候都会有module.json5
先看下整体最简单模块标签 然后一一列举每个标签作用

{
  "module": {
    //标识当前Module的名称,标签值采用字符串表示(最大长度31个字节),该名称在整个应用要唯一,仅支持英文字符。
    "name": "entry",
   //标识当前Module的类型。类型有两种,分别:- entry:应用的主模块。feature:应用的动态特性模块。
    "type": "entry",
//标识当前Module的描述信息,标签值是字符串类型(最长255字节)或对描述内容的字符串资源索引。
    "description": "$string:module_desc",
//标识当前Module的入口UIAbility名称或者
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "tv",
      "tablet"
    ],
/标识当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。
    "deliveryWithInstall": true,
//    标识当前Module是否支持免安装特性。
//    - true:表示支持免安装特性,且符合免安装约束。
//
//    - false:表示不支持免安装特性。
//    - 当应用的entry类型Module的该字段配置为true时,该应用的feature类型的该字
    "installationFree": false,
    //标识当前Module的profile资源,用于列举每个页面信息。 其实就是路由,点进去你会发现是你在此module下配置跳转的路由信息
    "pages": "$profile:main_pages",
    "virtualMachine": "ark",
  }
}

当然这些只是最基本(最不全的)module信息了 module.json5里内容很多,主要列举:

  • deviceTypes
  • pages
  • metadata
  • abilities
  • extensionAbilities
  • requestPermissions
  • testRunner

deviceTypes标签

标识当前Module可以运行在哪类设备上

  • phone 手机
  • table 平板类
  • car 车机
  • wearable 手表
  • tv 智慧屏
{
  "module": {
    "name": "myHapName",
    "type": "feature",
    "deviceTypes" : [
       "phone"
       "tablet"
        "car"
       "wearable"
       "tv"
    ]
  }
}

pages标签

标识当前Module的profile资源,用于列举每个页面信息。其实就是路由配置

WX20240204-085649@2x.png

abilities

描述UIAbility组件的配置信息,标签值为数组类型,该标签下的配置只对当前UIAbility生效

{
 "module": {
    "name": "myHapName",
    "type": "feature",
  "abilities": [{
    "name": "EntryAbility",//abilities名称
    "srcEntry": "./ets/entryability/EntryAbility.ts",//abilities路径
    "launchType":"singleton",//启动模式 三种singleton(单实例),multiton(多实例),specified(指定实例)
    "description": "$string:description_main_ability",//abilities描述信息
    "icon": "$media:icon",
    "label": "Login",
    "permissions": [],//标识当前UIAbility组件自定义的权限信息。当其他应用访问该UIAbility时,需要申请相应的权限信息。
    "metadata": [],
//        标识当前UIAbility组件是否可以被其他应用调用。
//        - true:表示可以被其他应用调用。
//        - false:表示不可以被其他应用调用
//!!!注意如果是启动页 就是第一个页面如果是false是无法被调起的app 会报错
    "exported": true,
//标识当前UIAbility组件是否可以迁移。
//- true:表示可以被迁移。
//- false:表示不可以被迁移
    "continuable": true,
//标识当前UIAbility组件或ExtensionAbility组件能够接收Want特征集,为数组格式。
    "skills": [{
      "actions": ["ohos.want.action.home"],
      "entities": ["entity.system.home"],
      "uris": []
    }],
}
}

Skills

  • actions 表示调用方要执行的通用操作(如查看、分享、应用详情)。在隐式Want中,您可定义该字段,配合uri或parameters来表示对数据要执行的操作。如打开,查看该uri数据。例如,当uri为一段网址,action为ohos.want.action.viewData则表示匹配可查看该网址的Ability。在Want内声明action字段表示希望被调用方应用支持声明的操作。在被调用方应用配置文件skills字段内声明actions表示该应用支持声明操作。

ACTION_HOME:启动应用入口组件的动作,需要和ENTITY_HOME配合使用;系统桌面应用图标就是显式的入口组件,点击也是启动入口组件;入口组件可以配置多个。
ACTION_CHOOSE:选择本地资源数据,例如联系人、相册等;系统一般对不同类型的数据有对应的Picker应用,例如联系人和图库。
ACTION_VIEW_DATA:查看数据,当使用网址uri时,则表示显示该网址对应的内容。
ACTION_VIEW_MULTIPLE_DATA:发送多个数据记录的操作

  • entities 表示目标Ability的类别信息(如浏览器、视频播放器),在隐式Want中是对action的补充。在隐式Want中,开发者可定义该字段,来过滤匹配应用的类别,例如必须是浏览器。在Want内声明entities字段表示希望被调用方应用属于声明的类别。在被调用方应用配置文件skills字段内声明entites表示该应用支持的类别。

ENTITY_DEFAULT:默认类别无实际意义。
ENTITY_HOME:主屏幕有图标点击入口类别。
ENTITY_BROWSABLE:指示浏览器类别。

metadata标签

该标签标识HAP的自定义元信息,标签值为数组类型,包含name,value,resource三个子标签。

{
  "module": {
    "metadata": [{
      "name": "module_metadata",//该标签标识数据项的键名称,字符串类型
      "value": "a test demo for module metadata",//该标签标识数据项的值,标签值为字符串
      "resource": "$profile:shortcuts_config",//该标签标识定义用户自定义数据格式,标签值为标识该数据的资源的索引值。
    }],
  }
}

extensionAbilities标签

ExtensionAbility组件是基于特定场景(例如服务卡片、输入法等)提供的应用组件,以便满足更多的使用场景。

{
  "extensionAbilities": [
    {
      "name": "FormName",
      "srcEntry": "./form/MyForm.ts",
      "icon": "$media:icon",
      "label" : "$string:extension_name",
      "description": "$string:form_description",
      "type": "form", //标识当前ExtensionAbility组件的类型,取值为:- form:卡片的ExtensionAbility。
      "permissions": ["ohos.abilitydemo.permission.PROVIDER"],
      "exported": true,
      "uri":"scheme://authority/path/query",
      "skills": [{
        "actions": [],
        "entities": [],
        "uris": []
      }],
      "metadata": [
        {
          "name": "ohos.extension.form",
          "resource": "$profile:form_config", 
        }
      ]
    }
  ]
}
  • type 标识当前ExtensionAbility组件的类型
    说明:其中service和dataShare类型,仅支持系统应用配置,三方应用配置不生效。
  • form:卡片的ExtensionAbility。
  • workScheduler:延时任务的ExtensionAbility。
  • inputMethod:输入法的ExtensionAbility。
  • service:后台运行的service组件。
  • accessibility:辅助能力的ExtensionAbility。
  • dataShare:数据共享的ExtensionAbility。
  • fileShare:文件共享的ExtensionAbility。
  • staticSubscriber:静态广播的ExtensionAbility。
  • wallpaper:壁纸的ExtensionAbility。
  • backup:数据备份的ExtensionAbility。
  • window:该ExtensionAbility会在启动过程中创建一个window,为开发者提供界面开发。开发者开发出来的界面将通过abilityComponent控件组合到其他应用的窗口中。
  • thumbnail:获取文件缩略图的ExtensionAbility,开发者可以对自定义文件类型的文件提供缩略。
  • preview:该ExtensionAbility会将文件解析后在一个窗口中显示,开发者可以通过将此窗口组合到其他应用窗口中。

requestPermissions标签

该标签标识应用运行时需向系统申请的权限集合。

{
  "module" : {
    "requestPermissions": [
      {
//必须,填写需要使用的权限名称
        "name": "ohos.abilitydemo.permission.PROVIDER",
//可选,当申请的权限为user_grant权限时此字段必填,用于描述申请权限的原因。
//说明:- 当申请的权限为user_grant权限时,如果未填写该字段则不允许在应用市场上架,并且需要进行多语种适配。
        "reason": "$string:reason",
    //可选,当申请的权限为user_grant权限时此字段必填。描述权限使用的场景由abilities和when组成。其中abilities可以配置为多个UIAbility组件,when表示调用时机。
//说明:- 默认为可选,当申请的权限为user_grant权限时,abilities标签必填,when标签可选。
        "usedScene": {
          "abilities": [
            "EntryFormAbility"//标识需要使用到该权限的Ability,标签为数组形式。可选项。
          ],
          "when": "inuse"//标识权限使用的时机,值为inuse/always。inuse:表示为仅允许前台使用;always:表示前后台都可使用
        }
      }
    ]
  }
}

权限的配置分为system_grant(系统授权)还是user_grant(用户授权)都需要在配置文件中声明。
应用默认的权限等级为normal。如果应用需要申请高于默认等级的权限,除了在配置文件中进行声明之外,还需要通过ACL方式进行声明使用

后面会单独开一篇关于权限控制的文章 此文章仅仅介绍module.json5
module.json5配置信息表

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容