鸿蒙基于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配置信息表

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容