Android视角看鸿蒙第八课(module.json5中的各字段含义之abilities)下
导读
上篇文章开始学习abilities下的各字段含义,因为篇幅原因只学习了name、srcEntry、description、icon和label字段的含义和用法,
这篇文章继续学习和了解其他字段。
startWindowIcon&startWindowBackground
官方文档
字段描述
Indicates the icon of the startup page. The value is the index to the resource file.
思考
标识当前UIAbility组件启动页面图标资源文件的索引。
这是官方文档的描述,不太好理解。没有理解具体用在哪里。
取值示例:$media:icon。
官方的取值示例,是个icon,也没有特别说明允许那些类型,不知道gif或者视频是否支持。
尝试
用在哪里
目前怀疑是桌面启动动画中使用的,验证一下是不是。
现在我们配置的值是默认的,图片长下面的样子
icon是注释状态,使用app.json5中的icon,长下面的样子
为了更好的看出效果,先把EntryAbility中的loadpage给注释掉
运行下,开个录制,稍后可以逐帧分析。
SVID_20240320_095353_1
结果证明没有任何关系。
遇到点困难,换个思路,先看看startWindowBackground的变化,借鉴一下。
把startWindowBackground的资源索引的值改成绿色
运行。
依然没有任何改变。
绝了。
看了看其他同学对这个字段的描述
上个链接华为论坛对于startWindowIcon的描述
资料比较难找,也算是个参考。
可能我的测试项目太小了,所以看不出效果。
写个死循环,看看
并不行
都卡崩了,也没出来。
结论
疑似和splashActivity的theme一致,但是看不到效果,可能华为优化的太好了吧。
exported
官方文档
字段描述
Specifies whether the ability can be called by other applications.The “true” indicates the ability can be called by other applications.The “false” indicates the ability cannot be called by other applications.This tag is optional. The default value is false.
思考
Android的同学应该还是熟悉的,就是说明这个ability可不可以被外部调用,一般来说是不需要的,有一些工具app可能会需要,比如支付宝,微信分享,支付等。
尝试
entryAbility必须设置为true吗
换句话说app启动器算其他应用吗?
注释掉,按照文档缺省时为false。
安装成功了,但是无法自动启动。
点击桌面则可以启动。
这个不是很好理解,为了确认点击桌面启动的是修改过exported的包,修改一下page的文字,再运行下
结论
当entryAbility的exported=false时(或缺省时,缺省即为false),hdc shell aa start -a EntryAbility -b com.example.myapplication启动失败,但点击桌面图标可以正常启动。
即桌面启动器不在其他应用的范畴内,所有这个值对桌面启动器无效,对hdc命令有效。
skills
官方文档
字段描述
思考
看样子和manifest中activity配置的intent-filter中的action,category之类的挺像的。
官方文档中明确说明对于Entry类型的HAP,应用可以配置多个具有入口能力的skills标签(即配置了ohos.want.action.home和entity.system.home)
即配置了ohos.want.action.home和entity.system.home的ability就是程序的入口。
尝试
试试多入口
把second也配置为入口
运行
桌面上出现了两个相同的图标,可以分别打开两个不同的ability。
(图标相同是因为两个ability都没有配置label和icon,都使用了app.json5中配置的label和icon)
把library(feature module)中的Ability配置为入口
文档描述对于Feature类型的HAP,只有应用可以配置具有入口能力的skills标签,服务不允许配置。
这里的服务先忽略,应该是指元服务,就是免安装的那个东东。
把library中的LibraryAbility也配置为入口
运行。
没有出现这个桌面图标
_-
所以我们理解错了
对于Feature类型的HAP,只有应用可以配置具有入口能力的skills标签,服务不允许配置。
这里的服务指的时Feature类型Mudule。
结论
配置了ohos.want.action.home和entity.system.home的ability就是程序的入口,可以多入口。但是只有entry类型的module中配置生效,feature类型的module中配置无效。
skils扩展
官方文档中want的介绍,及常见的entities和actions
结语
到现在为止已经有8篇文章了,学习桌面图标的定义,程序入口的定义等等,也对鸿蒙工程的配置文件有了一定的了解。下篇文章开始学习UI相关了。
感谢阅读!