欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 鸿蒙全栈开发-基于ARKTS开发之初识框架-module.json5

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

2024/10/25 11:34:11 来源:https://blog.csdn.net/m0_71506521/article/details/139500497  浏览:    关键词:鸿蒙全栈开发-基于ARKTS开发之初识框架-module.json5

前言

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

鸿蒙是基于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方式进行声明使用

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。随着鸿蒙的不断发展以及国家的大力支持,未来鸿蒙职位肯定会迎来一个大的爆发,只有积极应对变化,不断学习和提升自己,我们才能在这个变革的时代中立于不败之地。在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com