Android视角看鸿蒙第四课(module.json中的各字段含义之descriptionmainElement)修改程序入口

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

前言

上编文章了解了module.json中的name和type两个字段的含义及变更字段需要注意的事项,也明白了如何去实现类似Android library的功能。
这篇文章继续了解module.json中的description和mainElemoent的作用。

description

官方文档

在这里插入图片描述

字段定义

在这里插入图片描述

思考

这个字段看起来是不影响程序运行的,且
** 该标签可缺省,缺省值为空。**
,目前理解是为了开发协同中作为module的简单说明。
依然我们尝试下几个问题:
** 完全注释掉这个字段会不会有问题;**
** 直接输入null是否可行(不加双引号);**
** 如果字符超限,编译器是否有提示,是否能运行。**

尝试
完全注释掉这个字段会不会有问题

在这里插入图片描述
** 插曲 **
json5文件内的内容支持==//==注释,快捷键是ctrl+/,与AS一致

运行一下,看看是否可行
ok,成功运行了。

直接输入null是否可行(不加双引号)

在这里插入图片描述
可以看到,输入null之后直接变黄,类型不符合,那这样的话是否能运行成功呢?
答案是**不行 **
在这里插入图片描述
ok,改回去继续尝试下个问题.

字符超限,编译器是否有提示,是否能运行

有两种改法,第一种是直接修改值,输入内容,第二种是修改被索引的字符串资源的值。
先来第一种,
在这里插入图片描述

编辑器也是有提示的,不能超过255,运行一下看看会报错误不。

在这里插入图片描述
这个错误看着很顺眼,指向特别明确,比上面输入null的时候清晰太多了。
但是依然跑不起来。

试试第二种
在这里插入图片描述
有三个索引,第一篇文章说了,如果该语言环境下有资源,优先使用该资源,所以我们先修改zh_CN下的字符串。
在这里插入图片描述
在这里插入图片描述
看起来是没有问题的,没有像之前一样变黄,运行试试。

成功了。
接下来我们把3个索引资源的字符串都修改,看看会不会有问题

依然没有问题

结论

1、不允许直接输入null(没有双引号),会变黄,运行会报错;
2、不允许直接输入超过255的字符串,会变黄,运行会报错;
3、可以索引超过255长度的字符串,但目前不清楚此字段是否会在其他地方展示,若在其他地方展示,可能会出现其他问题

mainElement

官方文档

在这里插入图片描述

字段定义

在这里插入图片描述

思考

官方文档描述代表了当面module的入口,可以缺省
这里尝试下面几个问题:
entry可以没有定义此字段吗?会发生什么?
是否可以定义资源索引?是否可以突破此字段?
entry是否可以使用feature中的UIAbility?
ExtensionAbility是什么?

尝试
换个入口试试

在这里插入图片描述
在这里插入图片描述
创建成功了,但是出现了一个小小的问题,我是选中entryability文件夹创建的ability(见上图),但是新创建的多出来了个新文件夹,而且出现在了ets目录下(见下图)
在这里插入图片描述
就是玩,我们复制一份SecondAbility.ts到entryAbility文件夹下,看看能不能成功
在这里插入图片描述
成功了,这里我在复制的时候,手动把文件名改成了ThirdAbility,类名并未随之变化。
接下来我们手动把mainElement修改成我们复制的这个ThirdAbility
在这里插入图片描述
ok,并未变黄,再加点日志吧,方便看。
在这里插入图片描述
运行。
在这里插入图片描述
只打出来了一个,什么情况?
为了排除我们log的原因我们把目前的三个Ability文件的日志都修改一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ok,继续跑一下。
在这里插入图片描述

竟然还是EntryAbility.ts
确定一下是我们复制出来的这个ThirdAbility.ts导致的问题吗?
现在把这个字段改成
在这里插入图片描述
看看效果
在这里插入图片描述
还是这样创建出来的也不行。
在这里插入图片描述
在‘run’tab下看到启动的还是EntryAbility。

** 迷茫**
难道这个字段不是这么用的吗?再看看文档
看不出来啥
再看看这个文件的其余字段
在这里插入图片描述
这里看到abilities字段下有两个对象,没有我们复制出来的ThirdAbility,而且EntryAbility比SecondAbility多出了两个字段"exported”和“skills”。
现在我们把这两个字段剪切给SecondAbility,看看有没有变化
在这里插入图片描述
在这里插入图片描述
看到变成了SecondAbility了。
这是什么原因,难道mainElement只是个描述作用吗?
现在我们把mainElement注释掉,看看有没有变化
在这里插入图片描述
并不影响,还是启动的SecondAbility。
而且发现桌面的图标和名称都发生了变化,(第二课的时候我们修改了桌面的图标和名称),又都变成了默认的。
在这里插入图片描述
可以看到两个Ability是不一致的。
接下来我们修改一下SecondAbility的label索引的String值,看看桌面的改变
在这里插入图片描述
在这里插入图片描述
生效了。
好了,关于入口的问题就讨论到这里,之后的文章再描述,要不就跑题了。
至此其他问题也没有意思了,mainElement仅仅只是描述,可以参考description,哈哈,稳妥起见我还是运行了下
在这里插入图片描述
没有任何问题。

结论

mainElement仅仅描述了程序入口,无任何实际意义。和我说地球是方的是一样的,程序入口和abilities下的exported及skills有关(之后再分别讨论这两个字段的意义)

附加收获:
复制出来的Ablity.ts文件,修改文件名后类名不变,且没有自动添加到module.json5文件内的abilities字段内,大概和复制了个Activity.java是一致的,需要手动再添加。

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

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

相关文章

指针总结及例题总结

1 定义 指针是用来存放地址的变量 不同类型的指针变量所占用的存储空间是相同的,sizeof(int)sizeof(char)sizeof(double)... *是解引用操作符,&是取地址操作符,两者有着抵消作用 int a20;int* p&a;*p*&a20; 2,…

【C++11】包装器和bind

文章目录 一. 为什么要有包装器?二. 什么是包装器?三. 包装器的使用四. bind 函数模板1. 为什么要有 bind ?2. 什么是 bind ?3. bind 的使用场景 一. 为什么要有包装器? function 包装器,也叫作适配器。C 中的 funct…

Vue.js计算属性:实现数据驱动的利器

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

RESTful API学习

RESTful API REST(英文:Representational State Transfer,简称REST,直译过来表现层状态转换)是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和…

光伏数字化管理平台:驱动绿色能源革命的智能化引擎

随着全球对可再生能源需求的不断增长,光伏产业已经成为推动绿色能源革命的重要力量。在这个背景下,光伏数字化管理平台应运而生,以其强大的数据处理、实时监控和智能优化功能,为光伏电站的运营管理和维护带来了革命性的变革。 光伏…

储能系统--户用储能美洲市场(三)

2、美洲市场 2.1、美国户储发展驱动力 (1)电网老化带来配储需求,户用光储成家庭第二用电保障 美国大部分电网建于20世纪60和70年代,超70%以上的输电系统已经超过了25年,在高负荷运转或者外部环境承压时,…

深入理解Hive:探索不同的表类型及其应用场景

文章目录 1. 引言2. Hive表类型概览2.1 按照数据存储位置2.2 按照数据管理方式2.3 按照查询优化2.4 按照数据的临时性和持久性 3. 写在最后 1. 引言 在大数据时代,Hive作为一种数据仓库工具,为我们提供了强大的数据存储和查询能力。了解Hive的不同表类型…

【数学建模】层次分析

1.建立递阶层次结构模型 2.构造出各层次中的所有判断矩阵 对指标的重要性进行两两比较,构造判断矩阵,科学求出权重 矩阵中元素aij的意义是,第i个指标相对第j个指标的重要程度 对角线1,aijaji1 矛盾——>一致性检验

网络安全:OpenEuler 部署 jumpserver 堡垒机

目录 一、实验 1.环境 2.OpenEuler 部署 jumpserver 堡垒机 3.OpenEuler 使用 jumpserver 堡垒机(管理Linux) 4.OpenEuler 使用 jumpserver 堡垒机(管理Windows) 二、问题 1.jumpserver 安装报错 一、实验 1.环境 &#x…

【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表

文章目录 题目思路解答 题目 简单 相关标签 相关企业 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入…

【Linux】shell理解及linux权限解读(“花花公子Root”的自由人生)

目录 1.shell外壳理解 1.1 什么是shell外壳: 1.2 为什么存在shell外壳程序: 1.3外壳程序的具体工作阶段是怎么样的?(招实习生,工作失败也不影响公司) 2.linux下的权限的概念 2.1linux的用户 2.2.文件类型和…

“每一次的感应,都是对环境的温柔拥抱。”#STM32项目二 《感应开关盖垃圾桶》【下】

“每一次的感应,都是对环境的温柔拥抱。”#STM32项目二 《感应开关盖垃圾桶》【下】 前言预备知识1.实现距离感应开盖1.1换另一个定时器进行PWM输出驱动SG90舵机1.2延用超声波传感器介绍及实战工程进行配置PWM输出1.3在主C文件合适位置封装开关盖,开关LE…

Understanding Vulkan Objects

​ 和学习其他API一样,学习Vulkan API中有一个重要部分:了解Vulkan API定义了拿下类型,以及这些类型之间的关系。为了帮助理解这些类型,接下来会绘制一幅关系图,表现它们之间的关系,尤其是创建依赖关系。 …

map和set(二)——AVL树的简单实现

引入 二叉搜索树有其自身的缺陷,假如往树中 插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此 map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。简…

康奈尔开源近10万份审稿意见,未来论文发表或将由AI定夺

大语言模型(LLMs)的进步为自动化论文评审开辟了新途径,这些模型在学术反馈领域展现出巨大潜力。自动化评审的核心优势在于其能够精准指出论文草稿的不足之处,助力作者优化研究。尽管已有丰富的同行评审数据,但现有自动…

20.2 nginx

20.2 nginx 1. 学习目标2. 介绍2.1 正向代理2.2 反向代理2.3 动态静态资源分离2.4 nginx优缺点3. 安装3.1 Linux安装****************************************************************************************************************************************************…

基于stm32的流水灯设计

1基于stm32的流水灯设计[proteus仿真] 速度检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的自行车测速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2¥&#xff0c…

《领导的气场——8堂课讲透中国式领导智慧》读书笔记

整体感悟 个人感觉书籍比较偏说教、理论,没有看完。 现仅仅摘录自己“心有戚戚焉”的内容。 经典摘录 管理的本质是通过别人完成任务。有一百件事情,一个人都做了,那只能叫勤劳;有一百件事情,主事的人自己一件也不做&…

js 获取浏览器相关的宽高尺寸

window 屏幕 屏幕分辨率的高: window.screen.height 屏幕分辨率的宽: window.screen.width 屏幕可用工作区高度: window.screen.availHeight 屏幕可用工作区宽度: window.screen.availWidth document 网页 网页可见区域宽&#xf…

C语言学习--练习4(二维数组)

目录 1.统计有序数组中的负数 2.矩阵对角线元素和 3.最富有客户的资产总量 4.托普利兹矩阵 5.矩阵中的幸运数 6.二进制矩阵中的特殊位置 7.岛屿的周长 1.统计有序数组中的负数 //直接遍历二维数组即可 int countNegatives(int** grid, int gridSize, int* gridColSize) …