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.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;期間可…