在这里插入图片描述

好的,我帮你把这篇《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.pswp.cn/web/93142.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93142.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93142.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Keep-Alive 的 “爱情故事”:HTTP 如何从 “短命” 变 “长情”?

🚀 揭秘HTTP Keep-Alive:前端面试不再“短”路! 引言:HTTP连接的“爱恨情仇” 各位前端的小伙伴们,在面试中,HTTP协议绝对是绕不开的话题。而其中一个看似简单却又暗藏玄机的知识点,就是HTTP的“…

仅需8W,无人机巡检系统落地 AI 低空智慧城市!可源码交付

一、项目介绍无人机管控系统是融合无人机技术、传感器技术、物联网及人工智能的智能化检测方案。依托先进无人机技术与前沿 AI 算法,该系统可替代传统人工巡检模式,针对高危、复杂或大面积区域实现高效、精准监测,为城市基础设施检查、安防监…

java-JVM详解

一、JVM 是什么? 定义: JVM(Java Virtual Machine)是一个虚拟计算机,为 Java 字节码提供运行环境。它是 Java “一次编写,到处运行”(Write Once, Run Anywhere)的核心基础&#xff…

QT中ARGB32转ARGB4444优化4K图像性能的实现方案(完整源码)

QT中ARGB32转ARGB4444优化4K图像性能的实现方案(完整源码) 一、问题背景 在QT界面项目中,4K图像采用QImage::Format_ARGB32格式(4字节/像素)时,因数据量大导致编解码叠加性能不足。底层framebuffer实际为AR…

反射在Spring IOC容器中的应用——动态创建Bean

今天在看Java八股文时,对这里产生了一些疑惑,因为在目前做的练手项目中还没有用到过除了new以外的新建对象方式,在请教了其他前辈后对此有了新的理解,所以专门记录以用于梳理思路和复习基础。这里着重讲解反射机制实现新建对象这里…

TRS(总收益互换)系统架构设计:多市场交易的技术实现分析

一、多市场交易环境的技术特征 1.1 市场机制差异(技术视角)技术维度典型实现差异交割周期T0/T1/T2等多种结算模式价格稳定机制部分市场存在波动率控制措施系统接入协议FIX 4.4/ITCH/OMD-C等协议族衍生品支持工具种类与中央对手方清算差异1.2 技术挑战分析…

深度学习-卷积神经网络CNN-批量归一化 BatchNorm

为什么需要批量规范化层呢?让我们来回顾一下训练神经网络时出现的一些实际挑战:首先,数据预处理的方式通常会对最终结果产生巨大影响。 回想一下我们应用多层感知机来预测房价的例子。使用真实数据时,我们的第一步是标准化输入特征…

机器学习-支持向量机器(SVM)

0.1 数字识别 from sklearn.svm import SVC from sklearn.metrics import silhouette_score import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.feature_extraction import DictVectorizer from sk…

昆山PCB板工厂有哪些?

在长三角电子信息产业版图中,昆山凭借完整的产业链配套和精湛的制造工艺,成为国内PCB(印制电路板)生产的重要基地。本文精选五家具有代表性的本土工厂,从技术实力到服务特色展开深度剖析,为行业客户提供精准…

rk3588 ubuntu20.04安装包经常出现的问题总结(chatgpt回复)

问题1 问题 我在rk3588 ubuntu20.04安装相关环境的时候经常出现下面类似的问题,如何系统的解决 The following packages have unmet dependencies : openssh-server : Depends: openssh-client ( 1:8.2p1-4ubuntu0.13) but 1:8.2p1-4ubuntu0.11 is to be installed …

从根源到生态:Apache Doris 与 StarRocks 的深度对比 —— 论开源基因与长期价值的优越性

在 OLAP 领域,Apache Doris 与 StarRocks 常被一同提及,两者有着深厚的技术渊源 ——StarRocks 源自 Apache Doris 的代码 Fork,却在后续发展中走向了不同的路径。本文将从代码根源、架构演进、社区生态、功能特性等多维度展开对比。 一、代…

【从零开始学习Redis】项目实战-黑马点评D1

项目实战-黑马点评 项目架构短信登录发送短信验证码 实现思路就是按照上图左一部分&#xff0c; 实现类如下 Slf4j Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {/*** 验证手机号发送验证码** param phone* pa…

自然语言处理的范式转变:从Seq2Seq模型到Transformer架构

Seq2Seq 定义 Seq2Seq是一个Encoder-Decoder结构的网络&#xff0c;它的输入是一个序列&#xff0c;输出也是一个序列&#xff0c; Encoder使用循环神经网络(RNN,GRU&#xff0c;LSTM等)&#xff0c;将一个可变长度的信号序列(输入句子)变为固定维度的向量编码表达&#xff0c;…

【博客系统测试报告】---接口自动化测试

目录 1、需求分析 2、挑选接口 3、设计博客系统的测试用例 4、设计自动化测试框架 test_add.py: test_detail.py: test_getAuthorInfo.py: test_getUserInfo: test_list.py: test_login.py: logger_util.py: request_util.py: yaml_util.py: 1、需求分析 根据业务…

Mysql数据库迁移到GaussDB注意事项

mysql数据库迁移高斯数据库 建议开启高斯数据库M模式&#xff0c;mysql兼容模式&#xff0c;可以直接使用mysql的建表语句&#xff0c;自增主键可以使用AUTO_INCREMENT&#xff0c;如果不开启M模式&#xff0c;只能使用高斯数据库的序列添加自增主键1&#xff1a;如果使用数据库…

苹果正计划大举进军人工智能硬件领域

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Serverless 架构核心解析与应用实践

Serverless 的核心定义与优势‌‌核心定义Serverless&#xff08;无服务器架构&#xff09;是一种云计算模型&#xff0c;开发者无需关注底层服务器管理&#xff0c;由云服务商自动分配资源、弹性扩缩容&#xff0c;并按实际使用量计费‌。其核心特点包括&#xff1a;‌按需计算…

Redis持久化机制详解:RDB与AOF的全面对比与实践指南

目录 一、RDB持久化机制 1.1 RDB概述 1.2 RDB触发机制 1) 手动执行save命令 2) 手动执行bgsave命令 3) Redis正常关闭时 4) 自动触发条件满足时 1.3 RDB详细配置 1.4 RDB实现原理 1.5 RDB的优缺点分析 二、AOF持久化机制 2.1 AOF概述 2.2 AOF工作流程 2.3 AOF同步…

介绍一下jQuery的AJAX异步请求

目录 一、核心方法&#xff1a;$.ajax() 二、简化方法&#xff08;常用场景&#xff09; 1. $.get()&#xff1a;快速发送 GET 请求&#xff08;获取数据&#xff09; 2. $.post()&#xff1a;快速发送 POST 请求&#xff08;提交数据&#xff09; 3. $.getJSON()&#xf…

Win10系统Ruby+Devkit3.4.5-1安装

Win10系统RubyDevkit3.4.5-1安装安装步骤软件工具安装Ruby安装gem mysql2处理libmysql.dll验证mysql2安装步骤 软件工具 mysql-connector-c-6.1.11-winx64.zip rubyinstaller-devkit-3.4.5-1-x64.exe 安装Ruby 执行rubyinstaller-devkit-3.4.5-1-x64.exe&#xff0c;期间可…