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

news2024/12/24 21:52:04

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.coloradmin.cn/o/1498566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IAR全面支持小华全系芯片,强化工控及汽车MCU生态圈

IAR Embedded Workbench for Arm已全面支持小华半导体系列芯片,加速高端工控MCU和车用MCU应用的安全开发 嵌入式开发软件和服务的全球领导者IAR与小华半导体有限公司(以下简称“小华半导体”)联合宣布,IAR Embedded Workbench fo…

HTML超详细简介

HTML是什么 超文本标记语言(HyperText Mark-up Language )用来设计网页的标记语言用该语言编写的文件,以 .html或 .htm为后缀由浏览器解释执行不区分大小写,建议小写 HTML标签 HTML用于描述功能的符号成为“标签”标签都封装在…

如何用ChatGPT+GEE+ENVI+Python进行高光谱,多光谱成像遥感数据处理?

原文链接:如何用ChatGPTGEEENVIPython进行高光谱,多光谱成像遥感数据处理? 第一:遥感科学 从摄影侦察到卫星图像 遥感的基本原理 遥感的典型应用 第二:ChatGPT ChatGPT可以做什么? ChatGPT演示使用 …

专访|云安全攻防:从理论到应用的全面探索

2023年11月,美国核研究实验室(INL)遭遇数据泄露。同年10月,索尼的员工数据在MOVEit攻击事件中被泄露。2024年2月,某知名制造商因云存储服务器的配置错误导致了敏感数据泄露。 这些事件表示企业必须重视云安全建设&…

校园小情书微信小程序,社区小程序前后端开源,校园表白墙交友小程序

功能 表白墙卖舍友步数旅行步数排行榜情侣脸漫画脸个人主页私信站内消息今日话题评论点赞收藏 效果图

[OpenCv]频域处理

目录 前言 一、频域变换 1.傅里叶变换 2.代码实现 二、频域中图像处理 1.理解数字图片的频谱 2.频域图像处理步骤 3.使用低通滤波器实现图像平滑 4.使用高通滤波器实现图像锐化 三、总结 前言 数字图像处理的方法有两大类:一种是空间域处理法,…

Pytorch学习 day06(torchvision中的datasets、dataloader)

torchvision的datasets 使用torchvision提供的数据集API,比较方便,如果在pycharm中下载很慢,可以URL链接到迅雷中进行下载(有些URL链接在源码里)代码如下: import torchvision # 导入 torchvision 库 # …

Mac版2024 CleanMyMac X 4.14.6 核心功能详解以及永久下载和激活入口

CleanMyMac 是 macOS 上久负盛名的系统清理工具,2018 年,里程碑式版本 CleanMyMac X 正式发布。不仅仅是命名上的变化,焕然一新的 UI、流畅的动画也让它显得更加精致。新增的系统优化、软件更新等功能,使得在日常使用 macOS 时有了…

C# Mel-Spectrogram 梅尔频谱

目录 介绍 Main features Philosophy of NWaves 效果 项目 代码 下载 C# Mel-Spectrogram 梅尔频谱 介绍 利用NWaves实现Mel-Spectrogram 梅尔频谱 NWaves github 地址:https://github.com/ar1st0crat/NWaves NWaves is a .NET DSP library with a lot …

Springboot 的几种配置文件形式

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

H3C BGP 基本配置实验

H3C BGP 基本配置实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址,R1 和 R5 上使用环回口模拟业务网段,R2,R3,R4 的环回口用于配置 Router-id 和建立 IBGP 邻居AS 200 运行 OSPF 实现内部网络互通R1,R2&#xf…

Python 中实现 CDF 累积分布图的两种方法

什么是累积分布 累积分布函数,又叫分布函数,是概率密度函数的积分,能完整描述一个实随机变量X的概率分布。一般以大写“CDF”(Cumulative Distribution Function)标记。 《百度百科》 累积分布函数,又叫分…

LeetCode 刷题 [C++] 第300题.最长递增子序列

题目描述 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 题目…

【Linux】Linux原生异步IO(一):libaio-介绍

1、IO模型 1.1 简述 相信大家在搜索的时候,都会看到下面这张图,IO的使用场景:同步、异步、阻塞、非阻塞,可以组合成四种情况: 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可…

什么样的项目适合Web自动化测试

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

共用体union

一、共用体的特性 共用体又叫做联合体,共用体的特性如下: 1.共用体的所有成员共用一段内存空间,且所有成员的起始位置是一致的 2.共用体的值由最后赋值的成员决定 3.共用体的内存大小 共用体的内存必须大于或等于其他成员变量中最大数据类型…

专题1 - 双指针 - leetcode 15. 三数之和 - 中等难度

leetcode 15. 三数之和 - 点击直达 leetcode 15. 三数之和 中等难度 双指针1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 15. 三数之和 中等难度 双指针 1. 题目详情 给你一个整数数组 nums &#…

SQL 替换某一列中所有数据的特定字符

UPDATE product SET spec REPLACE(spec, ,, ) 把product表的spec字段内容中的逗号替换为

性能问题分析排查思路之机器(3)

本文是性能问题分析排查思路的展开内容之一,第2篇,主要分为日志1期,机器4期、环境2期共7篇系列文章,本期是第三篇,讲机器(硬件)的网络方面的排查方法和最佳实践。 主要内容如图所示&#xff1a…

Java请求时间耗时长分析

推断是java.lang.OutOfMemoryError: Metaspace,元空间不够,频繁垃圾收集 这个过程中程序卡住一直不响应,应该是触发FGC有关系。 YGC:451->453 FGC:198->289 FGCT:52.246->76.291 但是堆内存的空间…