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.hqwc.cn/news/521242.html

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

相关文章

机器学习-面经(part5、KNN和SVM)

8. KNN 8.1 简述一下KNN算法的原理? 一句话概括:KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别 工作原理:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数…

【Educoder数据挖掘实训】异常值检测-值域法

【Educoder数据挖掘实训】异常值检测-值域法 开挖! 这个题中 l o f lof lof算法给的很抽象,先用比较通俗的方式说一下: 首要想法是找到不合群的点,也就是异常点。采用的方法是对局部可达密度进行判断。相较于其他普通的简单基于聚…

ElasticSearch之通过search after和scroll解决深度分页问题

写在前面 通过from,size来进行分页查询时,如下: 当from比较大时会有深度分页问题,问题产生的核心是coordinate node需要从每个分片中获取fromsize条数据,当from比较大,整体需要获取的数据量也会比较大&am…

MongoDB安装教程(附带安装包)

目录 解压安装包 傻瓜式安装 选择安装目录 安装完成 启动验证 验证成功 解压安装包 选择所需要的进行安装 傻瓜式安装 选择安装目录 安装完成 启动验证 mongod --dbpathD:\mongodb\data\db 验证成功

vue 使用谷歌地图 @googlemaps/js-api-loader 进行模糊搜索

<template><div class"map"><div class"mapLeftStyle"><el-inputv-model"input"placeholder"请输入内容"class"controls"input"chnageinput"><i slot"prefix" class"e…

关于JVM的小总结(待补充)

JVM组成及他们之间的关系 装载类子系统字节码执行引擎运行时数据区 装载类子系统 类加载器字节码调节器类加载运行时数据区 字节码执行引擎 运行时数据区 线程私有 虚拟机栈本地方法栈程序计数器 线程共享 堆方法区&#xff08;元空间&#xff09;

SpringBoot配置加载顺序和SpringBoot分离打包:将jar包与lib依赖、配置文件分开

文章目录 一、SpringBoot配置加载顺序1.SpringBoot配置优先级&#xff08;1&#xff09;命令行参数&#xff08;2&#xff09;配置文件 二、SpringBoot分离打包&#xff1a;将jar包与lib依赖、配置文件分开1.pom文件配置2.打包后的目录结构 一、SpringBoot配置加载顺序 官方文…

是什么短波与超短波通信,水利短波通信系统详解

1、短波通信 频率在3—30MHZ。依靠无线电波从电离层反射传播实现通信。实际使用的工作频率与通信线路长度及地理位置有关&#xff0c;而且随昼夜、季节和太阳黑子活动周期而变。 短波通信易受电离层骚扰等活动的影响&#xff0c;而且频率拥挤&#xff0c;干扰严重&#xff0c;通…

vue实现文字手工动态打出效果

vue实现文字手工动态打出效果 问题背景 本文实现vue中&#xff0c;动态生成文字手动打出效果。 问题分析 话不多说&#xff0c;直接上代码&#xff1a; <template><main><button click"makeText"><p class"text">点击生成内容…

SAM多目标跟踪与分割TAM论文解读Track Anything: Segment Anything Meets Videos

一、总结 1. 简介 发表时间&#xff1a;2023年4月28日 论文&#xff1a;[2304.11968] Track Anything: Segment Anything Meets Videos (arxiv.org)https://arxiv.org/abs/2304.11968代码&#xff1a;gaomingqi/Track-Anything: Track-Anything is a flexible and interacti…

javascript正则深入

文章目录 一、前言二、高级`API`2.1、模式匹配的用法`(x)`2.2、非捕获括号的模式匹配`(?:x)`2.3、先行断言`x(?=y)`2.4、后行断言`(?<=y)x`2.5、正向否定查找`x(?!y)`2.6、反向否定查找`(?<!y)x`2.7、字符集合和反向字符集合的用法 `[xyz] / [^xyz]`2.8、词边界和非…

MacOS包管理工具homebrew使用教程

MacOS包管理工具homebrew使用教程 1.概述与安装2.基本使用3.其他常用命令 1.概述与安装 homebrew是Mac OS X上的强大的包管理工具&#xff0c;可以高效管理各种软件包 安装&#xff1a; 1、安装xcode&#xff1a; xcode-select --install2、一行命令下载&#xff1a; /bin…