当前位置:   article > 正文

Android视角看鸿蒙第五课(module.json5中的各字段含义之deviceTypes,deliveryWithInstall,installationFree)

Android视角看鸿蒙第五课(module.json5中的各字段含义之deviceTypes,deliveryWithInstall,installationFree)

Android视角看鸿蒙第五课(module.json5中的各字段含义之deviceTypes,deliveryWithInstall,installationFree)

导读

前面几篇文章,我们确定了AppScope下的app.json5和module下src->main_module.json5是鸿蒙配置的核心,在这里总结下这几个json5的主要功能

文件作用
AppScoope->app.json5定义包名、应用图标&名称、版本name&code
总目录->build-profile.json5签名文件、sdk版本、 module声明
module->src->main->module.json5module是入口还是依赖包、Ability的声明、入口Ability的声明、桌面图标的声明等等

其中module->src->main->module.json5和我们开发中的流程关系最大,也相对复杂。
上篇文章我们了解到的mainElement就和我们所以为的大相径庭。

这篇文章我们继续了解module.json5中的deviceTypes,deliveryWithInstall,installationFree等字段作用。

deviceTypes

官方文档

在这里插入图片描述

字段定义

在这里插入图片描述
Indicates the type of devices on which the abilities can run.This label cannot be left blank.

思考

我是开发应用的,所以主要基于phone讨论。字段定义中明确说明了不允许为空。我很好奇,
如果为空会发生什么?
如果没有声明phone是否能运行在手机上?会不会有问题?
字段定义相比文档多出一个default,这个字段怎么用?

尝试
注释掉会发生什么

在这里插入图片描述

整体变黄了_-,右上角出现 Sync now(和gradle差不多,有变化需要重新编译)
点击报错了
在这里插入图片描述

结论

没有device types 会编译报错,不能没有

不声明phone

在这里插入图片描述
sync 之后,没有问题
在这里插入图片描述
设备显示也没有异常,跑一下看看
在这里插入图片描述

结论

跑不起来,必须声明

default是干嘛用的

在这里插入图片描述
老样子,sync看看。
没问题,跑一下。

成功了。
default代表phone,问题又来了,他是仅代表phone,还是代表了全部,或者代表了所有呢?
找个虚拟机
在这里插入图片描述
好多设备都是这样的,不知道是都占用,还是坏了,难搞。
在这里插入图片描述
找到一个组合的,能用,看看平板能行不。
在这里插入图片描述
不行,所以default不包含tab
在这里插入图片描述
又找到一个能用的,但依然提示不行,所有default也不包含tv。

car类型暂时没有远程设备,手表被占用了,暂不具备测试条件。

结论

default 确定代表phone,确定不代表tv、tablet,大概率不代表car、 wearable。
不确定上述结论完全正确,有可能受其他参数影响
建议需要运行在哪个设备类型就配置那个类型,不使用default
各位同学如果有其他理解,欢迎反馈给我,验证没问题的话我会更新在文章里。感谢!

deliveryWithInstall

官方文档

在这里插入图片描述

字段定义

在这里插入图片描述
Specifies whether the .hap file is installed when the user installs the application.true: The .hap file is installed during the application installation.false: The .hap file is not installed during the application installation.This label cannot be left blank.

在这里插入图片描述

思考

看文档是类似于动态加载那种,用户安装的话可以不包含这个module,需要使用的时候再下载。
确定一下entry module是否可以配置动态下载
本地运行能否看到这个效果

尝试
entry配置deliveryWithInstall=false

在这里插入图片描述
entry module默认配置是true
我们把它改成false看看会发生什么
在这里插入图片描述
没有出sync now 提示,直接运行
在这里插入图片描述
运行成功

library(feature module)配置

在这里插入图片描述

运行ok
因为目前library(feature module)和entry是没有联系的
我们配置一下entry的hello world点击跳转library的LibraryAbility

怎么跳转还不知道呢。。。 看看其他同学的文章
在这里插入图片描述
搞定了。
还遇到个问题 getContext要转换成UIAbilityContext
不是UIAbility,UIAbility没有startAbility方法

运行一下看看效果

鸿蒙"deliveryWithInstall": false效果展示

结论

类似于动态加载那种,用户安装的话可以不包含这个module,需要使用的时候再下载。
entry设置此字段无效。

installationFree

官方文档

在这里插入图片描述

字段定义

在这里插入图片描述
Indicates whether free installation of the current hap is supported.If installationFree is true, this module is a service.OtherWise, this module is an application

思考

installationFree == true,则这个module是一个服务,否则是一个app。

这个和华为提供的元服务有关系
感兴趣的同学可以看看文档

https://developer.huawei.com/consumer/cn/doc/service/fa-introduction-0000001491994784

尝试

哎!想试试创建一个元服务呢,但是跑出来卡片也没自动添加到负一屏,有点难搞。以后再研究吧。不过可以先上个installationFree的图
在这里插入图片描述
默认就是这个样子滴!

结论

app开发暂时不需要关注这个。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/255432
推荐阅读
相关标签
  

闽ICP备14008679号