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

作者 : admin 本文共5122个字,预计阅读时间需要13分钟 发布时间: 2024-06-6 共6人阅读

前言

在当今数字化时代,操作系统不仅是连接硬件和应用软件的桥梁,更是推动技术创新和产业发展的核心力量。华为推出的鸿蒙操作系统(HarmonyOS)凭借其创新的设计理念和技术优势,正在逐步改变这一领域的发展格局,并为程序员们带来了新的职业机遇。

鸿蒙是基于ARKTS语言的开发,今天就来聊一聊鸿蒙的初识框架-module.json5

Module.json5顾名思义,每个moudle下都会有这个文件,它是随module产生的
鸿蒙全栈开发-基于ARKTS开发之初识框架-module.json5插图

比如我们有很多个模块划分,首页啊,订单啊 每个模块创建的时候都会有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资源,用于列举每个页面信息。其实就是路由配置

鸿蒙全栈开发-基于ARKTS开发之初识框架-module.json5插图(1)

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方式进行声明使用

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。随着鸿蒙的不断发展以及国家的大力支持,未来鸿蒙职位肯定会迎来一个大的爆发,只有积极应对变化,不断学习和提升自己,我们才能在这个变革的时代中立于不败之地。鸿蒙全栈开发-基于ARKTS开发之初识框架-module.json5插图(2)

本站无任何商业行为
个人在线分享 » 鸿蒙全栈开发-基于ARKTS开发之初识框架-module.json5
E-->