Android视角看鸿蒙第三课(module.json中的各字段含义之nametype)

Android视角看鸿蒙第三课(module.json中的各字段含义)

前言

上篇文章我们试图找到鸿蒙app的程序入口,确定了在鸿蒙工程中,由AppScope下的app.json5负责应用程序的图标及名称,由entry->src->main-module.json5负责桌面图标及名称的展示。
AppScope下的app.json5还包含了bundleName,versionCode,versionName等配置信息。
entry->src->main-module.json5除abilities下的icon及label字段外,还包含了例如mainElement,pages等等字面看起来就很重要的配置。
这篇文章开始我们主要了解这些字段的作用。

导读

个人以为这个地方不能完全按照经验来了,否则容易出乱子,忽略一些重要的信息。
给大家贴个链接https://developer.huawei.com/consumer/cn/hmos/overview/?catalogVersion=V2
因为版本的更新,文档和代码的对应性不是很强,所以下面内容的准确性无法保证,如有错误,希望您反馈给我,感谢!

结构

在这里插入图片描述
module.json5中包含很多字段,比如mainElement等是Srting,deliveryWithInstall是Boolean, pages引用了一个资源,abilities是一个数组。
挨个来分析和尝试下吧。

name字段

官方文档截图
在这里插入图片描述
因为版本更新的问题,字段名字和结构都对不上了,但依稀还能看出来他们应该是一致的,描述也不是他特别的详细。

思考一下

“name”: “entry”
name的值默认是我们module的名字,点击name看到了name字段的要求和描述(这一点还是不错的):
在这里插入图片描述

parrern 大意是不允许输入中文,但是好像不够全,比如‘鿕’ ,编码是‘\u9fd5’,大于\u9fa5,那这个字可以吗?

我更好奇的是他和module是否有实际关联呢?如果修改一下会发生什么呢?来试试吧。

尝试

第一步 尝试修改name
改成**“name”: “鿕”** 之后,运行到设备报错了
在这里插入图片描述
大概意思是:
我们修改后的name不存在,确保他在build-profile.json5文件中存在
找一下这个文件看看

第二步 确定build-profile.json5和name字段的关系
在这里插入图片描述
一共有两个,第一个在工程目录下,第二个在module目录下。
module目录下:
在这里插入图片描述

东西有点少,不像,跳过

工程目录下:
在这里插入图片描述
看到了,这里在modules数组中的第一个Object中包含了name和srcPath,我们继续看看这个那么能不能修改
在这里插入图片描述

可以看到修改之后,mudule之前是只有entry且entry加粗,现在是entry后多了一个中括号,中括号内是我们修改的名称。
运行依然报错
在这里插入图片描述
错误信息,大意是 我们的path格式错误,估计是我们的name虽然绕过了正则限定,但中文就是不行,改成英文试试吧。

在这里插入图片描述
这样就可以了,app也顺利跑起来了。
兄弟们在尝试的时候不要忘了namebuild-profile.json5都要修改哈。

结论

1、name字段可以修改,允许与module文件名不一致,;
2、name字段必须与工程目录下的build-profile.json5中modules声明的name一致
3、虽然少部分中文可以绕过正则限定,但依然无法成功运行,老老实实的用英文吧,中文也不是个好习惯。

type字段

“type”: “entry” 默认是这样的
点进去看看描述
在这里插入图片描述
他的类型是String,但是只能从下面四个中选一个,先上个翻译
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
除了entry好像都不好理解,entry是入口的意思。
翻了翻文档,找到了这个,也不是很全,将就看吧_-
在这里插入图片描述
早期只有两个,entry和feature,我们目前就只熟悉这两个,个人感觉这个东西如果没有详细说明,埋头去尝试的话并不能够完全理解。
再上一段文字描述
** HarmonyOS的用户应用程序包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。**

一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型,如图1所示。

entry:应用的主模块。一个APP中,对于同一设备类型,可以有一个或多个entry类型的HAP,来支持该设备类型中不同规格(如API版本、屏幕规格等)的具体设备。如果同一设备类型存在多个entry模块,则必须配置distroFilter分发规则,使得应用市场在做应用的云端分发时,对该设备类型下不同规格的设备进行精确分发。
feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。只有包含Ability的HAP才能够独立运行。

思考

只有一个feature类型的module能否运行

官方文档提到: (feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。只有包含Ability的HAP才能够独立运行。)
那如果没有entry,只有feature能不能独立运行?

尝试

直接把
“type”: “entry”
变更为
“type”: “feature”
看看会发生什么
在这里插入图片描述
报错了,意思是feature必须在build-preofile.json5中设置entryModules
我们在这里添加一个entryModules,看看这个字段的描述
在这里插入图片描述
If the module is a feature module, this field needs to be used to specify the associated entry module.
如果是feature类型,需要声明entry module。
所以我们把这个改回来,重新创建一个feature类型的module
在这里插入图片描述
还是选择这个类型,如果依然可以选择entry类型的话,我们还选这个类型.
理论上是可以的,因为文档上的描述entry:应用的主模块。一个APP中,对于同一设备类型,可以有一个或多个entry类型的HAP
在这里插入图片描述
但是事实却是不行,只能创建feature类型,继续application改成library
在这里插入图片描述
可以看到目录结构完全是一致的,接下来对比一下feature和entry默认的mudule的区别
在这里插入图片描述
有区别的地方很少,
除type之外entry类型比feature类型多了一个skills字段,其他完全一致

再对比一下build-preofile.json5,之前报错是需要我们在feature类型中的此文件中,增加entrymodules的,我们看一下这个字段应该怎么写
在这里插入图片描述
ok,也只有这一个区别。

那现在我们把feature类型的entryModules字段删除看看又会发生什么
在这里插入图片描述
依然还是这样,所以feature中必须有这个字段。

改回来可以运行了,突然发现运行时,module默认选中的是library
在这里插入图片描述
那运行出来的第一个界面,是library的还是app的呢?
修改一下library的hello world,再次运行,发现出现的是我们修改过的文案,那就是说feature项目可以独立运行,但是工程目录下必须有个entry目录,可以不用但必须有!

那这种情况下,桌面图标是entry module配置的,还是library的,答案是都不是,桌面图标从桌面上消失了,没有桌面app名称,没有图标,桌面占位都空出来了

结论

1、只有一个feature类型 的module,无法运行
2、feature类型的build-profile.json5中必须包含entryModules
3、运行时可以选择feature类型 的module,出现的第一个页面就是feature的index.ets,此时桌面图标消失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/271065.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8实例分割实战:ONNX模型转换及TensorRT部署

课程链接:https://edu.csdn.net/course/detail/39320 PyTorch版的YOLOv8支持高性能的实时实例分割。 TensorRT是针对英伟达GPU的加速工具。 ONNX (Open Neural Network Exchange) 作为一个开放的网络模型中间表示(IR&#xff0…

2024年最新阿里云服务器地域选择方法,以及可用区说明

阿里云服务器地域和可用区怎么选择?地域是指云服务器所在物理数据中心的位置,地域选择就近选择,访客距离地域所在城市越近网络延迟越低,速度就越快;可用区是指同一个地域下,网络和电力相互独立的区域&#…

linux命令行或桌面 显卡压力测试

windows下的压力测试非常简单,有很多图形化的测试工具 在github上找到一个项目:github链接 1.下载工具 cd /usr/localgit clone https://github.com/wilicc/gpu-burn如果没有安装git,则先安装 apt-get install git2.安装 cd /usr/local/…

SpringBoot源码解读与原理分析(三)条件装配

文章目录 2.3 Spring Framework的条件装配2.3.1 基于Profile的装配1.Profile源码解读2.使用Profile注解(3)命令行参数配置Profile3.Profile运用于实际开发4.Profile的不足 2.3.2 基于Conditional的装配1.Conditional源码解读2.Conditional使用3.Conditio…

[pdf]《软件方法》强化自测题业务建模需求分析共191页,230题

潘加宇《软件方法》强化自测题业务建模需求分析共191页,230题,已上传CSDN资源。 在完成书中自测题基础上,进一步强化。 也可到以下地址下载: 资料http://www.umlchina.com/url/quizad.html 如果需要网盘提取码:uml…

北斗卫星助力无人机在沙漠播种,促进沙漠治理

北斗卫星助力无人机在沙漠播种,促进沙漠治理 近年来,随着科技的不断发展,北斗卫星和无人机技术的结合被广泛应用于沙漠治理领域,为解决沙漠化问题提供了全新的思路和解决方案。 近日,黄河“几字弯”北岸的内蒙古自治…

FreeRTOS操作系统学习——空闲任务及其钩子函数

空闲任务 当 FreeRTOS 的调度器启动以后就会自动的创建一个空闲任务,这样就可以确保至少有一任务可以运行。但是这个空闲任务使用最低优先级,如果应用中有其他高优先级任务处于就绪态的话这个空闲任务就不会跟高优先级的任务抢占 CPU 资源。空闲任务还有…

mirthConnect忽略HTTPS SSL验证

mirthConnect SSL忽略验证 1、下载https网站证书 点击不安全---->证书无效 2、查看mirth 秘钥库口令 在mirthConnect 的conf目录下面keystore.storepass 3、导入证书到本地 在jdk的bin目录下面执行 keytool -importcert -file "下载的网站证书路径" -keysto…

经典语义分割(二)医学图像分割模型UNet

经典语义分割(二)医学图像分割模型UNet 我们之前介绍了全卷积神经网络( FCN) ,FCN是基于深度学习的语义分割算法的开山之作。 今天我们介绍另一个语义分割的经典模型—UNet,它兼具轻量化与高性能,通常作为语义分割任务的基线测试模型&#x…

Springboot 的几种配置文件形式

方式一:多个yml文件 步骤1:创建多个配置文件 application.yml #主配置文件 application-dev.yml #开发环境的配置 application-prod.yml #生产环境的配置 application-test.yml #测试环境的配置步骤2:applicaiton.yml中指定配置 在a…

时光机关:探秘Java中的Timer和TimerTask

欢迎来到我的博客,代码的世界里,每一行都是一个故事 时光机关:探秘Java中的Timer和TimerTask 前言Timer和TimerTask的基本概念Timer:TimerTask:为何它们是 Java 中任务调度的得力工具: Timer的使用方法创建…

2024【问题解决】Github 2024无法克隆git clone自从签了2F2安全协议之后

项目场景:ping通Github但没法clone–502 问题描述 提示:ping通Github但没法clone--502: 例如:git clone https://gitclone.com/l.git/*** $ git clone https://github.com/darrenpig/Yocto Cloning into Yocto_tutorial... fatal: unable to access https://gitclone.co…

Yii2中如何使用scenario场景,使rules按不同运用进行字段验证

Yii2中如何使用scenario场景,使rules按不同运用进行字段验证 当创建news新闻form表单时: 添加新闻的时候执行create动作。 必填字段:title-标题,picture-图片,description-描述。 这时候在model里News.php下rules规则…

web3时事粥报

比特币正成为更具有吸引力的通胀对冲工具 在通胀的宏观经济浪潮中,比特币正逐渐崭露头角,成为那些渴望多元化投资组合的投资者眼中的璀璨明星。Kooner 预测,2024年,各种宏观经济挑战可能进一步提升比特币、黄金和白银等资产的避险…

shell脚本一键部署docker

Docker介绍 Docker 是一个开源的平台,用于开发、交付和运行应用程序。它利用容器化技术,可以帮助开发人员更轻松地打包应用程序及其依赖项,并将其部署到任何环境中,无论是开发工作站、数据中心还是云中。以下是 Docker 的一些关键…

python中的文件操作2

文件遍历 在Python中,遍历文件通常指的是逐行读取文件中的内容。这种方式对于处理大型文件特别有用,因为它不需要一次性将整个文件加载到内存中。下面是几种常见的遍历文件内容的方法: 1. 使用with语句和for循环 这是最推荐的方式&#xf…

两天学会微服务网关Gateway-Gateway工作原理

锋哥原创的微服务网关Gateway视频教程: Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3…

ROS2学习(七) Foxy版本ros2替换中间件。

在ros2使用的过程中,一开始选用的foxy版本,后来发现,foxy版本的ros2有很多问题。一个是foxy版本已经停止维护了。另一个问题是这个版本有很多bug, 后续的版本在功能实现上做了很大的改动,甚至说进行了重写。修复的一些问题&#x…

【应用多元统计分析】--多元数据的描述和展示(R语言)

一元随机变量 我们用协方差来刻画两个变量的相关关系,这里指的是线性相关关系。 对于一元随机变量的可视化最简单的就是散点图,大致可以看出X和Y之间的相关关系。如果想更好的看X、Y之间的相关关系,可以画二维的散点图。 总结: 均…

Postman如何做接口测试?你居然还不知道

Postman如何做接口测试1:如何导入 swagger 接口文档 在使用 postman 做接口测试过程中,测试工程师会往界面中填入非常多的参数,包括 url 地址,请求方法,消息头和消息体等一系列数据,在请求参数比较多的情况…