HarmonyOS 鸿蒙Next中审核应用图标配置分层图标
HarmonyOS 鸿蒙Next中审核应用图标配置分层图标 在module.json5 文件中删除skills标签下‘entity.system.home’和‘ohos.want.action.home’ 就会使用app.json5中的
"icon": "$media:layered_image",
{
"layered-image":
{
"background" : "$media:background",
"foreground" : "$media:app_logo"
}
}
不错
学到了
一、配置优先级规则
-
入口UIAbility判定机制
当HAP包中包含UIAbility时:
- 系统会检查module.json5中是否配置了包含entity.system.home和ohos.want.action.home的skills标签
- 若已配置:优先使用该UIAbility中icon和label字段指定的图标和名称
- 若未配置:系统将忽略module.json5中的配置,改为使用app.json5中的icon和label字段
-
多UIAbility场景处理
若存在多个UIAbility配置了上述skills标签,系统会选择mainElement指定的主入口UIAbility的配置;当所有UIAbility均未配置时,才完全依赖app.json5。
二、删除后的影响
-
图标/名称变更
桌面图标和应用名称将取自app.json5中配置的icon和label字段。
-
入口行为变化
若应用中所有UIAbility均未配置入口skills标签,点击桌面图标会直接跳转到系统设置中的应用详情页而非应用界面(需通过startAbility手动指定启动逻辑)。
三、注意事项
-
资源覆盖规则
AppScope目录下的资源文件在编译时会覆盖模块目录下的同名文件,需确保app.json5中引用的图片资源路径正确且无冲突。
-
应用市场展示
AGC(AppGallery Connect)中配置的图标仅影响应用市场展示,不影响设备桌面图标(桌面图标始终由HAP包配置决定)。
示例配置对比:
// module.json5(未配置入口skills时)
{
"abilities": [
{
// 无icon/label配置
"skills": [] // 无entity和action配置
}
]
}
// app.json5(生效的配置)
{
"app": {
"icon": "$media:app_icon", // 桌面图标由此决定
"label": "$string:app_name"
}
}
a. 将前景资源和背景资源文件放在“AppScope\resources\base\media”文件夹下。 本例中,前景资源文件名为“foreground.png”,背景资源文件名为“background.png”。
b. 在“AppScope\resources\base\media”文件夹下app_layered_image.json分层图标资源文件中,配置分层图标的前景资源与背景资源信息。
{
"layered-image":
{
"background" : "$media:background",
"foreground" : "$media:foreground"
}
}
c. 在app.json5配置文件中引用分层图标资源文件。示例如下:
{
"app": {
"icon": "$media:app_layered_image",
"label": "$string:app_name" // 需要在AppScope/resources/base/element/string.json配置name为app_name的资源,已存在可以忽略
// ...
}
}
参考地址
配置分层图标和应用名称
-
方式一:配置app.json5
该配置仅当module.json5配置文件中无UIAbility、或者存在UIAbility但abilities标签中未设置icon和label(可手动删除icon和label配置)时生效。
a. 将前景资源和背景资源文件放在“AppScope\resources\base\media”文件夹下。
本例中,前景资源文件名为“foreground.png”,背景资源文件名为“background.png”。
b. 在“AppScope\resources\base\media”文件夹下app_layered_image.json分层图标资源文件中,配置分层图标的前景资源与背景资源信息。
c. 在app.json5配置文件中引用分层图标资源文件。示例如下:
-
方式二:配置module.json5
a. 将前景资源和背景资源文件放在“entry\src\main\resources\base\media”文件夹下。
本例中采用的前景资源和背景资源的文件名分别为“foreground.png”和“background.png”。
b. 在“entry\src\main\resources\base\media”文件夹下layered_image.json分层图标资源文件中,配置分层图标的前景资源与背景资源信息。
c. 如果需要在桌面显示UIAbility图标,除了需要配置icon与label字段,还需要在skills标签下面的entities中添加"entity.system.home"、actions中添加"ohos.want.action.home"。
鸿蒙Next应用图标配置分层图标需在AppScope的resources/base/media目录下提供不同尺寸的图标文件。分层图标要求提供前景层和背景层,并遵循特定命名规范。开发者需在module.json5配置文件的abilities或extensionAbilities中声明图标资源路径。
在HarmonyOS Next中,配置分层图标(Layered Icon)用于应用审核,其核心机制是区分应用在设备桌面(Launcher)的入口图标与设置等系统界面中显示的图标。
您描述的操作是正确的。关键点在于:
-
入口图标的优先级:当
module.json5中abilities的skills标签包含"entity.system.home"和"ohos.want.action.home"时,系统会将其识别为桌面入口Ability。此时,该Ability配置的icon和label将优先作为应用在桌面显示的图标和名称。 -
启用分层图标:要使用
app.json5中定义的分层图标作为桌面图标,需要移除上述skills中的这两个关键属性。这样,系统将不再视其为默认桌面入口,转而使用app.json5中icon配置的分层图标资源。 -
分层图标配置:您在
app.json5中的配置是标准写法。"layered-image"对象内需至少包含"background"(背景层)和"foreground"(前景层)两个资源引用。系统会将其组合渲染为最终的应用图标。
总结流程:
- 确保
app.json5的icon字段正确引用了分层图标配置(如"$media:layered_image")。 - 在
module.json5中,检查并移除相关Entry Ability的skills中的"entity.system.home"和"ohos.want.action.home"。 - 提交审核时,系统将读取
app.json5中的分层图标定义作为应用主图标。
此配置直接影响应用在桌面的视觉呈现,请确保分层图标的各层资源符合设计规范。

