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

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.xdnf.cn/news/17684.html

相关文章:

  • 玩转Docker | 使用Docker部署WordPress网站服务
  • 深度学习与遥感入门(七)|CNN vs CNN+形态学属性(MP):特征工程到底值不值?
  • 基于R语言的现代贝叶斯统计学方法(贝叶斯参数估计、贝叶斯回归、贝叶斯计算)实践
  • MySQL数据库知识体系总结 20250813
  • 疏老师-python训练营-Day44预训练模型
  • Pytest项目_day15(yaml)
  • 玩转Docker | 使用Docker部署MediaWiki文档管理平台
  • 日志数据链路的 “搬运工”:Flume 分布式采集的组件分工与原理
  • ip -details link show can0 输出项解释
  • 光伏板横铺VS竖铺,布局决定发电量!
  • Android Framework定制长按电源键关机的窗口
  • 数据库基础—SQL语句总结及在开发时
  • 第六章 二次型
  • 深度学习-卷积神经网络CNN-CNN、卷积层(卷积核、卷积计算)、池化层(最大池化、平均池化)
  • 10、系统规划与分析
  • 【计算机网络】王道考研笔记整理(4)网络层
  • 用vscode开发和调试golang超简单教程
  • HCIP——OSPF综合实验
  • Linux 服务部署:自签 CA 证书构建 HTTPS 及动态 Web 集成
  • [C语言]第二章-从Hello World到头文件
  • Java研学-RabbitMQ(七)
  • Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
  • 脑电分析——ICLabel的一对多成分关系与手工阈值
  • Java Spring框架最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
  • Linux 5.15.189-rt87 实时内核安装 NVIDIA 显卡驱动
  • 【WonderTrader源码详解 1】【环境搭建 2】【编译安装WonderTrader】
  • 从 VLA 到 VLM:低延迟RTSP|RTMP视频链路在多模态AI中的核心角色与工程实现
  • Java 大视界 -- 基于 Java 的大数据可视化在能源互联网全景展示与能源调度决策支持中的应用
  • 《工程封装》(Python)
  • 解决 HTTP 请求 RequestBody 只能被读取一次的问题