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"
  }
}
8 回复

详细

更多关于HarmonyOS 鸿蒙Next中审核应用图标配置分层图标的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


学到了

一、配置优先级规则

  • 入口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的资源,已存在可以忽略
        // ...
      }
    }

参考地址

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/layered-image#%E9%85%8D%E7%BD%AE%E5%88%86%E5%B1%82%E5%9B%BE%E6%A0%87%E5%92%8C%E5%BA%94%E7%94%A8%E5%90%8D%E7%A7%B0

配置分层图标和应用名称

  • 方式一:配置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)的入口图标与设置等系统界面中显示的图标。

您描述的操作是正确的。关键点在于:

  1. 入口图标的优先级:当module.json5abilitiesskills标签包含"entity.system.home""ohos.want.action.home"时,系统会将其识别为桌面入口Ability。此时,该Ability配置的iconlabel优先作为应用在桌面显示的图标和名称。

  2. 启用分层图标:要使用app.json5中定义的分层图标作为桌面图标,需要移除上述skills中的这两个关键属性。这样,系统将不再视其为默认桌面入口,转而使用app.json5icon配置的分层图标资源。

  3. 分层图标配置:您在app.json5中的配置是标准写法。"layered-image"对象内需至少包含"background"(背景层)和"foreground"(前景层)两个资源引用。系统会将其组合渲染为最终的应用图标。

总结流程

  • 确保app.json5icon字段正确引用了分层图标配置(如"$media:layered_image")。
  • module.json5中,检查并移除相关Entry Ability的skills中的"entity.system.home""ohos.want.action.home"
  • 提交审核时,系统将读取app.json5中的分层图标定义作为应用主图标。

此配置直接影响应用在桌面的视觉呈现,请确保分层图标的各层资源符合设计规范。

回到顶部