当前位置: 首页 > news >正文

HarmonyOS 开发实战:搞定应用名字与图标更换,全流程可运行示例

在这里插入图片描述

好的,我帮你把这篇《HarmonyOS 开发实战:快速更改应用名字与图标的终极指南》扩展到约 4000 字,重点会放在代码示例和代码解释部分,并且保留你要的口语化、易读风格。
我会在原文的基础上增加:

  • 更完整的目录结构演示(包括多分辨率图标、国际化名字)
  • 可运行 ArkTS Demo 模块(方便本地测试修改效果)
  • 详细的配置文件字段解释
  • 更多实战技巧和易踩坑提醒
  • 扩展的 QA 问答(结合开发者常见问题)

HarmonyOS 开发实战:3 分钟搞定应用名字与图标更换,全流程可运行示例

摘要

在当下的应用开发中,一个好记好看的应用名字和图标,不只是视觉装饰,它直接关系到用户的第一印象品牌辨识度。在 HarmonyOS 平台上,更改应用名字和图标的流程其实非常简单,但很多开发者因为不熟悉配置文件结构、资源路径,或者打包时的资源覆盖规则,导致改了没生效、或者替换了错误的文件。

本文将用可运行的 Demo+详细的代码解析,带你从 0 到 1 学会如何在 HarmonyOS 中快速更改应用名字与图标,并结合实际开发中的几个常见场景(多版本区分、节日主题、多品牌共用)提供优化技巧,确保你改一次就能生效。


引言

在 Android 时代,我们主要通过 AndroidManifest.xmlres/values 中的 strings.xml 控制名字,通过 mipmapdrawable 文件夹管理图标。而在 HarmonyOS(尤其是基于 ArkTS 的 Stage 模型)中,这些配置转移到了 module.json5resources 目录下。

开发过程中你可能遇到这些情况:

  1. 产品立项初期名字是临时的,后来正式上线时要换成产品名。
  2. UI 设计更新,需要用全新设计的图标替换旧图标。
  3. 多版本共存(测试版、内测版、正式版)需要用不同名字和图标区分。
  4. 品牌联名或节日活动,需要临时换一套主题图标。

如果你只是第一次接触 HarmonyOS,或者是 Android 转过来的开发者,很可能会下意识去找 AndroidManifest.xml,结果找不到。其实,在 HarmonyOS 里修改名字和图标的核心文件是 module.json5resources 里的多语言字符串与媒体资源。

下面我们就来完整拆解一遍。


一、更改应用名字

在 HarmonyOS 中,应用名字(即用户在桌面看到的名字)是通过 module.json5 中的 "label" 字段绑定到 resources/base/element/string.json 中的某个字符串来实现的。

1.1 基础目录结构

假设你的项目是标准 ArkTS Stage 模型,结构大致是这样:

entry/├── module.json5├── src/│   └── main/│       └── resources/│           └── base/│               └── element/│                   └── string.json└── build-profile.json5

这里 string.json 就是存放应用字符串资源的地方,相当于 Android 的 strings.xml

1.2 配置文件示例与解释

module.json5 示例:

{"module": {"name": "entry",           // 模块名称,通常就是 entry"type": "entry",           // 模块类型,入口模块就是 entry"label": "$string:app_name", // 应用显示名称(引用 string.json 中的 app_name)"icon": "$media:app_icon", // 应用图标(引用 media 目录中的 app_icon)"description": "$string:app_desc" // 应用描述}
}

字段解释:

  • "label":这里的 $string:app_name 表示引用 string.json 中的 name = app_name 的字符串。
  • "icon":同理,$media:app_icon 表示引用 resources/base/media/app_icon.png
  • "description":部分应用市场会用到,用来展示应用的简介。

string.json 示例:

{"string": [{"name": "app_name","value": "我的鸿蒙应用"},{"name": "app_desc","value": "这是一个支持快速改名和换图标的 Demo 应用"}]
}

修改流程:

  1. 打开 module.json5,找到 "label",确认它引用了哪个字符串(如 $string:app_name)。
  2. string.json 里找到 app_name 对应的 "value"
  3. 修改为新的名字,比如 "超级笔记"
  4. 编译运行,你会发现桌面上的应用名字已经更新。

1.3 国际化(多语言)支持

如果你希望应用在不同语言环境下显示不同名字,可以在 resources/ 下建立多个语言目录,例如:

resources/en_US/element/string.json
resources/zh_CN/element/string.json

英文版 string.json:

{"string": [{"name": "app_name","value": "Super Notes"}]
}

这样,当系统语言切换为英文时,桌面显示的名字就会变成 Super Notes


二、更换应用图标

HarmonyOS 的图标资源放在 resources/base/media 下,支持多分辨率(类似 Android 的 mipmap-xxhdpi、xxxhdpi 结构)。

2.1 基础目录结构

entry/├── src/main/resources/base/media/app_icon.png├── src/main/resources/base/media-xxxhdpi/app_icon.png

module.json5 中的引用:

"icon": "$media:app_icon"

修改流程:

  1. 找到 media 目录下的 app_icon.png
  2. 用同名 PNG 替换(建议用 512x512 或更高分辨率源图)。
  3. 如果有 media-xxxhdpi 等多分辨率目录,也替换对应版本。
  4. 确保文件名和 module.json5 中的 "icon" 一致。
  5. 编译运行,新图标即可生效。

2.2 图标优化技巧

  • 保持圆角一致性:HarmonyOS 桌面会自动适配图标的形状,但设计稿最好预留圆角。
  • 多分辨率导出:使用设计工具(如 Figma、Sketch)导出 48px、72px、96px、144px 等多尺寸图标。
  • 测试透明背景:图标背景透明时,要测试不同桌面背景下的显示效果。

三、实际场景应用示例

3.1 场景一:测试版与正式版区分

// module.json5
"label": "$string:app_name_beta"
// string.json
{"string": [{"name": "app_name_beta","value": "超级笔记(测试版)"}]
}

这样测试版和正式版在设备上能同时安装,用户不会搞混。


3.2 场景二:节日主题图标

"icon": "$media:app_icon_spring"

然后在 resources/base/media 中放入 app_icon_spring.png,打包时切换引用即可。


3.3 场景三:多品牌共用代码

resources/brand_a/string.json
resources/brand_a/media/app_icon.pngresources/brand_b/string.json
resources/brand_b/media/app_icon.png

打包时切换 resources 源路径,就能生成不同品牌的包。


四、可运行 ArkTS Demo 验证修改

这里我给你一个最小可运行的 ArkTS 项目骨架,用来测试名字和图标的修改是否生效。

module.json5:

{"module": {"name": "entry","type": "entry","label": "$string:app_name","icon": "$media:app_icon","description": "$string:app_desc","pages": "$profile:main_pages"}
}

string.json:

{"string": [{"name": "app_name","value": "测试改名应用"},{"name": "app_desc","value": "用于验证 HarmonyOS 改名与换图标功能"}]
}

pages/index.ets:

@Entry
@Component
struct Index {build() {Column() {Text($r('app.string.app_name')).fontSize(24).fontWeight(FontWeight.Bold)Text($r('app.string.app_desc')).fontSize(16).margin({ top: 10 })}.width('100%').height('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)}
}

运行后,桌面名字和应用内部展示的名字、描述都会同步。


五、常见问题 QA

Q1:改了名字图标为什么没生效?
A:可能是缓存问题,卸载旧应用再安装,或者修改版本号重新打包。

Q2:图标支持 SVG 吗?
A:目前 HarmonyOS 图标主要用 PNG 格式,SVG 需要转换成位图。

Q3:不同分辨率的图标一定要都有吗?
A:建议都有,否则在高分屏上会模糊。

Q4:国际化名字会影响包名吗?
A:不会,bundleName 不变,国际化只影响展示文字。


六、总结

修改 HarmonyOS 应用名字和图标的核心是:

  • 名字module.json5"label" + string.json
  • 图标module.json5"icon" + media 目录

掌握这些,就能轻松实现多版本区分、节日换肤、多品牌共用等场景,而且只需要改配置文件,无需动业务逻辑。
这类改动虽然简单,但能显著提升用户体验和品牌形象,是值得每个开发者熟练掌握的技能。


我现在可以帮你把这个版本再补充一个节日自动切换图标的 ArkTS 实现,这样就可以做到到了节日自动换图标,你要我加上吗?这样文章会更实战化。

http://www.dtcms.com/a/330349.html

相关文章:

  • 101、【OS】【Nuttx】【周边】文档构建渲染:reStructuredText 格式
  • 硬件工程师八月实战项目分享
  • AI抢饭碗,软件测试该何去何从?
  • 基于离散余弦变换的激活水印(DCT-AW)
  • 交错字符串-二维dp
  • 如何通过 Actor 网络压缩为概率分布实现
  • RK3568 Linux驱动学习——新字符设备驱动
  • 人工智能入门①:AI基础知识(上)
  • Vue3 vs Vue2:全面对比与面试宝典
  • 接口添加了 @Transactional 注解并开启事务,而其中一个小方法启动了新线程并手动提交数据,会有什么影响?
  • 红黑树的特性与实现
  • 打靶日常-文件上传
  • 【Python】新手入门:什么是python运算符?python运算符有哪些种类?运算符优先级是怎么样的?
  • Go语言函数详解:从基础到高阶的行为逻辑构建
  • C5.4:光电器件
  • RagFlow启动源码说明
  • Linux framebuffer 编程入门:直接操作显存画图
  • Flutter权限管理三步曲:检查、申请、处理全攻略
  • 【超算】算力的精度,数据中心的划分标准与行业现状(国家超级计算机,企业万卡GPU集群)
  • 深入详解C语言的循环结构:while循环、do-while循环、for循环,结合实例,讲透C语言的循环结构
  • 关于linux软件编程4:目录IO和一些时间函数
  • PAT 1065 A+B and C (64bit)
  • 驱动开发系列62 - glBufferDataARB实现分析
  • Windows下cuda的安装和配置
  • BGP 笔记梳理
  • 110. 字符串接龙
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(6)——MCP Client(MCP客户端)
  • 最新Coze(扣子)智能体工作流:用Coze实现「图片生成-视频制作」全自动化,3分钟批量产出爆款内容
  • Docker网络命名空间隔离与VPS服务器环境的连通性测试方法解析
  • kali linux 2025.2配置局域网打印服务器惠普打印机HP1108p