好的,我幫你把這篇《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 實現,這樣就可以做到到了節日自動換圖標,你要我加上嗎?這樣文章會更實戰化。