应用配置文件中,开发者需要定义应用的唯一标识——包名。这通常采用反域名命名方式,如com.example.demo,其中第一级为域名后缀,第二级为厂商或个人名,第三级为应用名。这样的命名规则有助于保持应用的唯一性和识别性。
在应用的开发过程中,图标和标签的配置同样重要。它们不仅用于标识整个应用,还在用户界面、权限申请和状态栏通知中扮演着关键角色。应用图标和标签在app.json5中配置,而入口图标和标签则在module.json5中配置。入口图标和标签定义了应用安装后在设备桌面上显示的图标,用户可以通过点击这些图标直接进入应用的不同界面。
配置应用图标时,开发者需要指定图片资源的索引。而应用标签则是一个字符串资源的索引,用于标识应用对用户显示的名称。例如,在app.json5文件中,可以这样配置:
```json { "app": { "icon": "$media:app_icon", "label": "$string:app_name" } } ```
对于入口图标和标签,Stage模型允许开发者对每个UIAbility进行配置。这允许同一个应用有多个入口点,每个入口点都可以有自己的图标和标签。配置方式如下:
```json { "module": { "abilities": [ { "icon": "$media:icon", "label": "$string:EntryAbility_label", "skills": [ { "entities": ["entity.system.home"], "actions": ["ohos.want.action.home"] } ] } ] } } ```
值得注意的是,系统对无图标应用实施了严格的管理,以防止恶意应用隐藏图标,影响用户的操作体验和设备安全。如果应用确实需要隐藏入口图标,开发者需要申请相应的特权。
应用版本声明同样重要,它包括versionCode和versionName两个标签。versionCode是一个32位的非负整数,用于标识应用的版本号,而versionName则为版本号提供文字描述。
此外,开发者还需要在module.json5中配置支持的设备类型,以确保应用能在目标设备上运行。同时,为了访问系统或其他应用的保护部分,开发者还需要声明Module所需的权限。
总之,Stage模型的应用配置文件是应用开发中的关键组成部分,它们不仅定义了应用的基本属性和行为,还确保了应用的安全性和用户友好性。开发者需要仔细配置这些文件,以确保应用能够在编译构建、分发和运行过程中顺利工作。熟悉鸿蒙开发指导文档将帮助开发者更好地理解和应用这些配置。
Stage模型应用配置文件
应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行解决分别提供给编译工具、应用市场和操作系统使用。
在基于Stage模型开发的应用项目代码下,都存在app.json5(一个)及module.json5(一个或多个)两种配置文件,常用配置项请参见[应用/组件级配置]。
应用/组件级配置
在开发应用时,需要配置应用的一些标签,例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。
应用包名配置
应用需要在工程的AppScope目录下的[app.json5配置文件]中配置bundleName标签,该标签用于标识应用的唯一性。推荐采用反域名形式命名(如com.example.demo,建议第一级为域名后缀com,第二级为厂商/个人名,第三级为应用名,也可以多级)。
图标和标签配置
图标和标签通常一起配置,可以分为应用图标、应用标签和入口图标、入口标签,分别对应[app.json5配置文件]和[module.json5配置文件]中的icon和label标签。
应用图标和标签通常用于标识整个应用,可以在标识应用的界面使用该类型图标和标签。比如:
- 设置应用中,需要展示应用列表时
- 在隐私管理中,需要展示应用申请的权限时
- 在状态栏显示通知消息时
入口图标和标签是应用安装完成后可以在设备桌面上显示出来的,如下图所示。入口图标是以[UIAbility]为粒度,支持同一个应用存在多个入口图标和入口标签,点击后进入对应的UIAbility界面。比如:
- 桌面上需要显示图标时
- 最近任务列表中显示时
图1 图标和标签
应用图标和标签配置
应用图标需要在工程的AppScope目录下的[app.json5配置文件]中配置icon标签。应用图标需配置为图片的资源索引,配置完成后,该图片即为应用的图标。
应用标签需要在工程的AppScope模块下的[app.json5配置文件]中配置label标签。标识应用对用户显示的名称,需要配置为字符串资源的索引。
{
"app": {
"icon": "$media:app_icon",
"label": "$string:app_name"
...
}
}
入口图标和标签配置
入口图标和标签配置方式
Stage模型支持对组件配置入口图标和入口标签。入口图标和入口标签会显示在桌面上。
入口图标需要在[module.json5配置文件]中配置,在abilities标签下面有icon标签。例如希望在桌面上显示该UIAbility的图标,则需要在skills标签下面的entities中添加"entity.system.home"、actions中添加"ohos.want.action.home"。同一个应用有多个UIAbility配置上述字段时,桌面上会显示出多个图标,分别对应各自的UIAbility。
{
"module": {
...
"abilities": [
{
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"ohos.want.action.home"
]
}
],
}
]
}
}
入口图标和标签管控规则
系统对无图标应用实施严格管控,防止一些恶意应用故意配置无入口图标,导致用户找不到软件所在的位置,无法操作卸载应用,在一定程度上保证用户终端设备的安全。
如果应用确需隐藏入口图标,需要配置AllowAppDesktopIconHide应用特权。详细的入口图标及入口标签的显示规则如下。
HAP中包含UIAbility
- 在module.json5配置文件的abilities标签中设置了入口图标
- 该应用没有隐藏图标的特权
- 系统将使用该UIAbility配置的icon作为入口图标,并显示在桌面上。用户点击该图标,页面跳转到该UIAbility首页。
- 系统将使用该UIAbility配置的label作为入口标签,并显示在桌面上,如果没有配置label,系统将使用app.json5中的label作为入口标签,并显示在桌面上。
- 该应用具有隐藏图标的特权
- 桌面应用查询时不返回应用信息,不会在桌面上显示对应的入口图标和标签。
- 该应用没有隐藏图标的特权
- 在module.json5配置文件的abilities标签中未设置入口图标
- 该应用没有隐藏图标的特权
- 系统将使用app.json5中的icon作为入口图标,并显示在桌面上。用户点击该图标,页面跳转到应用管理中对应的应用详情页面,如下图所示。
- 系统将使用app.json5中的label作为入口标签,并显示在桌面上。
- 该应用具有隐藏图标的特权
- 桌面应用查询时不返回应用信息,不会在桌面上显示对应的入口图标和标签。
- 该应用没有隐藏图标的特权
- 在module.json5配置文件的abilities标签中设置了入口图标
HAP中不包含UIAbility
- 该应用没有隐藏图标的特权
- 系统将使用app.json5中的icon作为入口图标,并显示在桌面上。用户点击该图标,页面跳转到应用管理中对应的应用详情页面,如下图所示。
- 系统将使用app.json5中的label作为入口标签,并显示在桌面上。
- 该应用具有隐藏图标的特权
- 桌面应用查询时不返回应用信息,不会在桌面上显示对应的入口图标和标签。
- 开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/haRMONy-os/blob/master/README.md]点击或者复制转到。
图2 应用的详情页示意图- 该应用没有隐藏图标的特权
应用版本声明配置
应用版本声明需要在工程的AppScope目录下的[app.json5配置文件]中配置versionCode标签和versionName标签。versionCode用于标识应用的版本号,该标签值为32位非负整数。此数字仅用于确定某个版本是否比另一个版本更新,数值越大表示版本越高。versionName标签标识版本号的文字描述。
Module支持的设备类型配置
Module支持的设备类型需要在[module.json5配置文件]中配置[deviceTypes标签],如果deviceTypes标签中添加了某种设备,则表明当前的Module支持在该设备上运行。
Module权限配置
Module访问系统或其他应用受保护部分所需的权限信息需要在[module.json5配置文件]中配置[requestPermissions标签]。该标签用于声明需要申请权限的名称、申请权限的原因以及权限使用的场景。