HarmonyOS 开发实战:搞定应用名字与图标更换,全流程可运行示例
好的,我帮你把这篇《HarmonyOS 开发实战:快速更改应用名字与图标的终极指南》扩展到约 4000 字,重点会放在代码示例和代码解释部分,并且保留你要的口语化、易读风格。
我会在原文的基础上增加:
- 更完整的目录结构演示(包括多分辨率图标、国际化名字)
- 可运行 ArkTS Demo 模块(方便本地测试修改效果)
- 详细的配置文件字段解释
- 更多实战技巧和易踩坑提醒
- 扩展的 QA 问答(结合开发者常见问题)
HarmonyOS 开发实战:3 分钟搞定应用名字与图标更换,全流程可运行示例
摘要
在当下的应用开发中,一个好记、好看的应用名字和图标,不只是视觉装饰,它直接关系到用户的第一印象和品牌辨识度。在 HarmonyOS 平台上,更改应用名字和图标的流程其实非常简单,但很多开发者因为不熟悉配置文件结构、资源路径,或者打包时的资源覆盖规则,导致改了没生效、或者替换了错误的文件。
本文将用可运行的 Demo+详细的代码解析,带你从 0 到 1 学会如何在 HarmonyOS 中快速更改应用名字与图标,并结合实际开发中的几个常见场景(多版本区分、节日主题、多品牌共用)提供优化技巧,确保你改一次就能生效。
引言
在 Android 时代,我们主要通过 AndroidManifest.xml
和 res/values
中的 strings.xml
控制名字,通过 mipmap
或 drawable
文件夹管理图标。而在 HarmonyOS(尤其是基于 ArkTS 的 Stage 模型)中,这些配置转移到了 module.json5
和 resources
目录下。
开发过程中你可能遇到这些情况:
- 产品立项初期名字是临时的,后来正式上线时要换成产品名。
- UI 设计更新,需要用全新设计的图标替换旧图标。
- 多版本共存(测试版、内测版、正式版)需要用不同名字和图标区分。
- 品牌联名或节日活动,需要临时换一套主题图标。
如果你只是第一次接触 HarmonyOS,或者是 Android 转过来的开发者,很可能会下意识去找 AndroidManifest.xml
,结果找不到。其实,在 HarmonyOS 里修改名字和图标的核心文件是 module.json5
和 resources
里的多语言字符串与媒体资源。
下面我们就来完整拆解一遍。
一、更改应用名字
在 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 应用"}]
}
修改流程:
- 打开
module.json5
,找到"label"
,确认它引用了哪个字符串(如$string:app_name
)。 - 在
string.json
里找到app_name
对应的"value"
。 - 修改为新的名字,比如
"超级笔记"
。 - 编译运行,你会发现桌面上的应用名字已经更新。
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"
修改流程:
- 找到
media
目录下的app_icon.png
。 - 用同名 PNG 替换(建议用 512x512 或更高分辨率源图)。
- 如果有
media-xxxhdpi
等多分辨率目录,也替换对应版本。 - 确保文件名和
module.json5
中的"icon"
一致。 - 编译运行,新图标即可生效。
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 实现,这样就可以做到到了节日自动换图标,你要我加上吗?这样文章会更实战化。