配置应用显示名称
应用显示名称是用户在手机桌面、应用商店、任务栏等位置看到的应用名字。Flutter 项目创建后,各平台默认使用 my_app 等占位名称,发布前需要修改为实际的应用名称。
如果你的应用面向多个国家或地区的用户,还可以让应用名称根据系统语言自动切换,例如中文环境显示「我的应用」,英文环境显示「My App」。
各平台的配置方式不同,本章将逐一介绍 Android、iOS、HarmonyOS、Web、Windows、macOS、Linux 七个平台的完整配置方法。
Android
Android 的应用名称在 AndroidManifest.xml 中配置,通过 android:label 指定。支持多语言,需配合字符串资源实现。
修改应用名称
编辑 android/app/src/main/AndroidManifest.xml,修改 <application> 标签的 android:label 属性:
<application
android:label="我的应用"> <!-- 修改这里 -->android:label 的值即应用在桌面图标下方显示的名称,可以直接写中文字符串。
配置多语言名称
如果需要根据系统语言显示不同的应用名称,需要将 android:label 从硬编码改为引用字符串资源。
1. 创建默认字符串资源
如果 android/app/src/main/res/values/strings.xml 不存在,先创建它:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">我的应用</string>
</resources>2. 引用字符串资源
编辑 android/app/src/main/AndroidManifest.xml,将 android:label 改为引用资源:
<application
android:label="@string/app_name"> <!-- 引用字符串资源 -->3. 创建多语言资源目录
在 android/app/src/main/res/ 下为每种语言创建 values-<语言限定符>/ 目录,并放入 strings.xml:
android/app/src/main/res/
├── values/
│ └── strings.xml ← 默认(中文)
├── values-en/
│ └── strings.xml ← 英文
├── values-ja/
│ └── strings.xml ← 日文
└── values-zh-rTW/
└── strings.xml ← 繁体中文(台湾)4. 编写各语言的 strings.xml
默认(中文) — values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">我的应用</string>
</resources>英文 — values-en/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My App</string>
</resources>日文 — values-ja/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">マイアプリ</string>
</resources>繁体中文(台湾) — values-zh-rTW/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">我的應用</string>
</resources>常用语言限定符
| 语言/地区 | 限定符 | 示例目录 |
|---|---|---|
| 英文 | en | values-en/ |
| 简体中文 | zh 或 zh-rCN | values-zh/ |
| 繁体中文(台湾) | zh-rTW | values-zh-rTW/ |
| 繁体中文(香港) | zh-rHK | values-zh-rHK/ |
| 日文 | ja | values-ja/ |
| 韩文 | ko | values-ko/ |
| 法文 | fr | values-fr/ |
| 德文 | de | values-de/ |
| 西班牙文 | es | values-es/ |
| 葡萄牙文 | pt | values-pt/ |
| 俄文 | ru | values-ru/ |
| 阿拉伯文 | ar | values-ar/ |
限定符规则
- 语言代码使用 ISO 639-1 两字母标准
- 地区代码使用 ISO 3166-1 两字母标准,前面加
r(如rTW、rUS) - 中文简体可省略地区(
zh),繁体需指定地区(zh-rTW、zh-rHK)
注意事项
- 修改后需要运行
flutter clean清除缓存,再重新构建 - 应用名称建议不超过 8~10 个汉字,超出部分会在桌面显示为省略号
- 多语言场景下,如果系统找不到对应语言的资源文件,会回退到
values/strings.xml中的默认值 - 多语言名称没有生效时,确认
AndroidManifest.xml中使用的是@string/app_name而非硬编码字符串,且各语言目录名拼写正确
iOS
iOS 的应用名称通过 Info.plist 文件配置,支持多语言,需配合 InfoPlist.strings 本地化文件实现。
修改应用名称
编辑 ios/Runner/Info.plist:
<key>CFBundleName</key>
<string>我的应用</string> <!-- 应用内部名称 -->
<key>CFBundleDisplayName</key>
<string>我的应用</string> <!-- 桌面显示名称 -->| 字段 | 用途 | 显示位置 |
|---|---|---|
CFBundleName | 应用内部名称 | 设置 → 应用列表等系统界面 |
CFBundleDisplayName | 应用显示名称 | 桌面图标下方、App Store |
TIP
CFBundleDisplayName 是用户在桌面看到的应用名称,通常与 CFBundleName 保持一致。如果两者不同,桌面图标下方显示的是 CFBundleDisplayName 的值。
配置多语言名称
如果需要根据系统语言显示不同的应用名称,需要创建 InfoPlist.strings 本地化文件。
1. 确认 Info.plist 配置
确认 ios/Runner/Info.plist 中 CFBundleDisplayName 已设置,建议使用占位值:
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string> <!-- 使用构建变量,会被本地化文件覆盖 -->如果直接硬编码为固定字符串也可以,本地化文件中的值会覆盖它。
2. 创建本地化目录
在 ios/Runner/ 下为每种语言创建 .lproj 目录:
ios/Runner/
├── zh-Hans.lproj/ ← 简体中文
│ └── InfoPlist.strings
├── en.lproj/ ← 英文
│ └── InfoPlist.strings
├── ja.lproj/ ← 日文
│ └── InfoPlist.strings
└── zh-Hant.lproj/ ← 繁体中文
└── InfoPlist.strings3. 编写各语言的 InfoPlist.strings
简体中文 — zh-Hans.lproj/InfoPlist.strings:
"CFBundleDisplayName" = "我的应用";
"CFBundleName" = "我的应用";英文 — en.lproj/InfoPlist.strings:
"CFBundleDisplayName" = "My App";
"CFBundleName" = "My App";日文 — ja.lproj/InfoPlist.strings:
"CFBundleDisplayName" = "マイアプリ";
"CFBundleName" = "マイアプリ";繁体中文 — zh-Hant.lproj/InfoPlist.strings:
"CFBundleDisplayName" = "我的應用";
"CFBundleName" = "我的應用";4. 在 Xcode 中注册本地化语言
重要
创建本地化文件后,还需要在 Xcode 项目中注册这些语言,否则系统不会识别。
- 用 Xcode 打开
ios/Runner.xcworkspace - 选中项目导航器中的 Runner 项目
- 在 Info 标签页中,找到 Localizations 区域
- 点击 + 按钮,添加需要的语言(如
Chinese (Simplified)、English、Japanese等) - 在弹出的对话框中,勾选
InfoPlist.strings文件
或者,也可以直接编辑 ios/Runner.xcodeproj/project.pbxproj,在 knownRegions 中添加语言代码:
knownRegions = (
en,
"zh-Hans",
"zh-Hant",
ja,
Base,
);常用语言代码
| 语言/地区 | 代码 | 目录名 |
|---|---|---|
| 英文 | en | en.lproj/ |
| 简体中文 | zh-Hans | zh-Hans.lproj/ |
| 繁体中文 | zh-Hant | zh-Hant.lproj/ |
| 日文 | ja | ja.lproj/ |
| 韩文 | ko | ko.lproj/ |
| 法文 | fr | fr.lproj/ |
| 德文 | de | de.lproj/ |
| 西班牙文 | es | es.lproj/ |
| 葡萄牙文(巴西) | pt-BR | pt-BR.lproj/ |
| 俄文 | ru | ru.lproj/ |
| 阿拉伯文 | ar | ar.lproj/ |
中文语言代码
iOS 中简体中文使用 zh-Hans,繁体中文使用 zh-Hant。这与 Android 的 zh-rCN/zh-rTW 命名方式不同,注意区分。
注意事项
- 桌面图标下方最多显示约 12 个字符(中文约 6~7 个字),超出会被截断
- 修改后建议在 Xcode 中执行 Product → Clean Build Folder(⇧⌘K),然后重新运行
- 多语言名称没有生效时,确认
.lproj目录下的文件名为InfoPlist.strings(注意大小写),且在 Xcode 中确认语言已注册到项目的 Localizations 列表中
HarmonyOS
鸿蒙平台的应用名称在资源文件 string.json 中配置,支持多语言,需配合资源限定目录实现。
修改应用名称
编辑 harmony/entry/src/main/resources/base/element/string.json:
{
"string": [
{
"name": "EntryAbility_label",
"value": "我的应用"
}
]
}EntryAbility_label 的值即为应用在桌面显示的名称。
配置多语言名称
如果需要根据系统语言显示不同的应用名称,需要为每种语言创建资源限定目录。
1. 创建多语言资源目录
在 harmony/entry/src/main/resources/ 下为每种语言创建资源限定目录:
harmony/entry/src/main/resources/
├── base/
│ └── element/
│ └── string.json ← 默认(中文)
├── en/
│ └── element/
│ └── string.json ← 英文
└── ja/
└── element/
└── string.json ← 日文2. 编写各语言的 string.json
默认(中文) — base/element/string.json:
{
"string": [
{
"name": "EntryAbility_label",
"value": "我的应用"
}
]
}英文 — en/element/string.json:
{
"string": [
{
"name": "EntryAbility_label",
"value": "My App"
}
]
}日文 — ja/element/string.json:
{
"string": [
{
"name": "EntryAbility_label",
"value": "マイアプリ"
}
]
}常用语言限定符
| 语言/地区 | 限定符 | 目录名 |
|---|---|---|
| 英文 | en | en/ |
| 简体中文 | zh | zh/ |
| 繁体中文(台湾) | zh-TW | zh-TW/ |
| 日文 | ja | ja/ |
| 韩文 | ko | ko/ |
| 法文 | fr | fr/ |
| 德文 | de | de/ |
| 西班牙文 | es | es/ |
注意事项
- 修改后需要重新构建项目
- 多语言名称没有生效时,确认各语言目录结构正确(
element/string.json路径不能错),且string.json中的name字段与默认资源中的名称一致 - 如果系统找不到对应语言的资源文件,会回退到
base/element/string.json中的默认值
Web
Web 平台的应用名称需要在 manifest.json 和 index.html 中同时配置。多语言支持有限,需通过 JavaScript 动态实现。
修改应用名称
编辑 web/manifest.json:
{
"name": "我的应用", <!-- 完整名称,用于安装提示和启动画面 -->
"short_name": "我的应用", <!-- 短名称,用于桌面图标下方 -->
...
}| 字段 | 用途 | 建议长度 |
|---|---|---|
name | 完整应用名称,显示在安装对话框、启动画面 | 不限 |
short_name | 短名称,显示在桌面图标、任务栏 | 建议 12 字符以内 |
编辑 web/index.html,修改 <title> 标签:
<title>我的应用</title><title> 的值显示在浏览器标签页上。
配置多语言名称
Web 平台目前不直接支持根据浏览器语言自动切换应用名称。manifest.json 中的 name 和 short_name 只能设置一个固定值,需通过 JavaScript 动态实现。
方案一:动态修改 manifest(推荐)
使用 JavaScript 根据浏览器语言动态修改 <title> 和 manifest.json 的链接:
编辑 web/index.html:
<head>
<script>
const lang = navigator.language || navigator.userLanguage;
const titles = {
'zh': '我的应用',
'zh-CN': '我的应用',
'zh-TW': '我的應用',
'en': 'My App',
'ja': 'マイアプリ',
};
// 查找最匹配的语言
const matchedLang = Object.keys(titles).find(key =>
lang.startsWith(key)
) || 'zh';
document.title = titles[matchedLang];
// 动态创建 manifest
const manifest = {
name: titles[matchedLang],
short_name: titles[matchedLang],
icons: [
{ src: 'icons/Icon-192.png', sizes: '192x192', type: 'image/png' },
{ src: 'icons/Icon-512.png', sizes: '512x512', type: 'image/png' }
]
};
const blob = new Blob([JSON.stringify(manifest)], { type: 'application/json' });
const link = document.createElement('link');
link.rel = 'manifest';
link.href = URL.createObjectURL(blob);
document.head.appendChild(link);
</script>
</head>方案二:多份 manifest 文件
为每种语言创建一份 manifest 文件,然后在 <head> 中根据语言条件引入:
web/
├── manifest.json ← 默认
├── manifest-en.json ← 英文
├── manifest-ja.json ← 日文
└── ...<script>
const lang = (navigator.language || 'zh').substring(0, 2);
const manifestMap = { zh: 'manifest.json', en: 'manifest-en.json', ja: 'manifest-ja.json' };
const manifestFile = manifestMap[lang] || 'manifest.json';
const link = document.createElement('link');
link.rel = 'manifest';
link.href = manifestFile;
document.head.appendChild(link);
</script>注意
以上两种方案仅影响浏览器标签页标题和 PWA 安装时的名称。Web 应用被添加到主屏幕后,名称取决于首次加载时的 manifest 内容,后续语言切换不会更新已安装的名称。
注意事项
name和short_name可以不同:name用全称,short_name用简称- 浏览器标签页显示的是
<title>的值,与manifest.json中的name无关
Windows
Windows 平台的应用名称在 Runner.rc 资源文件中配置。不支持多语言,所有语言环境下显示相同名称。
修改应用名称
编辑 windows/runner/Runner.rc:
1 VERSIONINFO
...
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "你的公司" "\0"
VALUE "FileDescription", "我的应用" "\0" ← 应用描述
VALUE "ProductName", "我的应用" "\0" ← 应用名称
VALUE "ProductVersion", "1.0.0" "\0"
END
END
END| 字段 | 用途 |
|---|---|
FileDescription | 应用描述,显示在任务管理器中 |
ProductName | 应用名称,显示在系统信息中 |
注意事项
- 修改后需要重新构建项目
macOS
macOS 平台的应用名称在 AppInfo.xcconfig 中配置。不支持多语言,所有语言环境下显示相同名称。
修改应用名称
编辑 macos/Runner/Configs/AppInfo.xcconfig:
PRODUCT_NAME = 我的应用 ← 应用名称
PRODUCT_BUNDLE_IDENTIFIER = com.example.myApp ← 包标识符PRODUCT_NAME 即为应用在 macOS 中的显示名称。
注意事项
- 修改
PRODUCT_NAME后,生成的.app文件名也会随之变化 - 修改后建议在 Xcode 中清理构建并重新运行
Linux
Linux 平台的应用名称在 .desktop 文件中配置。不支持多语言,所有语言环境下显示相同名称。
修改应用名称
编辑 linux/my_app.desktop:
[Desktop Entry]
Name=我的应用 ← 应用名称
Comment=我的 Flutter 应用 ← 应用描述
Icon=com.example.my_app
Exec=my_app
Type=Application
Categories=Utility;Name 字段的值即为应用在 Linux 桌面环境中显示的名称。
注意事项
.desktop文件需要安装到~/.local/share/applications/或/usr/share/applications/才能被桌面环境识别- 修改后可能需要刷新桌面缓存:
sudo update-desktop-database
配置速查
各平台配置文件
| 平台 | 文件路径 | 关键字段 | 多语言支持 |
|---|---|---|---|
| Android | android/app/src/main/AndroidManifest.xml | android:label | ✅ values-<语言>/strings.xml |
| iOS | ios/Runner/Info.plist | CFBundleDisplayName | ✅ <语言>.lproj/InfoPlist.strings |
| HarmonyOS | harmony/.../element/string.json | EntryAbility_label | ✅ <语言>/element/string.json |
| Web | web/manifest.json + web/index.html | name / short_name / <title> | ⚠️ 需 JS 动态实现 |
| Windows | windows/runner/Runner.rc | ProductName | ❌ |
| macOS | macos/Runner/Configs/AppInfo.xcconfig | PRODUCT_NAME | ❌ |
| Linux | linux/my_app.desktop | Name | ❌ |
多语言完整示例
以配置中文和英文两种语言为例:
Android:
android/app/src/main/res/
├── values/
│ └── strings.xml → app_name = "我的应用"
└── values-en/
└── strings.xml → app_name = "My App"AndroidManifest.xml 中引用:android:label="@string/app_name"
iOS:
ios/Runner/
├── zh-Hans.lproj/
│ └── InfoPlist.strings → CFBundleDisplayName = "我的应用"
└── en.lproj/
└── InfoPlist.strings → CFBundleDisplayName = "My App"HarmonyOS:
harmony/entry/src/main/resources/
├── base/element/
│ └── string.json → EntryAbility_label = "我的应用"
└── en/element/
└── string.json → EntryAbility_label = "My App"常见问题
修改名称后没有生效?
各平台都有构建缓存,修改名称后建议清理重新构建:
flutter clean
flutter pub get
flutter run桌面图标下方名称被截断?
各平台对图标下方显示的名称长度有限制:
| 平台 | 建议最大长度 |
|---|---|
| Android | 约 8~10 个汉字 |
| iOS | 约 6~7 个汉字 |
| macOS | 约 12 个汉字 |
建议将应用名称控制在 6 个汉字以内,以确保在所有平台上完整显示。如果名称较长,可以考虑使用简称。
修改名称后应用数据丢失?
应用名称修改一般不会导致数据丢失。但如果同时修改了包名(如 Android 的 applicationId 或 iOS 的 Bundle Identifier),系统会将其视为全新应用,之前的数据将无法访问。修改名称时不要同时修改包名。
多语言应用名称没有生效?
Android:
- 确认
AndroidManifest.xml中使用的是@string/app_name而非硬编码字符串 - 确认各语言目录名拼写正确(如
values-en,不是values-en-US) - 运行
flutter clean后重新构建
iOS:
- 确认
.lproj目录下的文件名为InfoPlist.strings(注意大小写) - 确认
InfoPlist.strings中的键名正确:CFBundleDisplayName和CFBundleName - 在 Xcode 中确认语言已注册到项目的 Localizations 列表中
- 在 Xcode 中执行 Clean Build Folder 后重新运行
HarmonyOS:
- 确认各语言目录结构正确,
element/string.json路径不能错 - 确认
string.json中的name字段与默认资源中的名称一致
应用名称显示为包名?
如果系统找不到对应语言的资源文件,会回退到默认资源。如果默认资源也不存在,可能显示包名。确保:
values/strings.xml(Android)或base/element/string.json(HarmonyOS)存在且包含app_name定义- iOS 的
Info.plist中CFBundleDisplayName有默认值
新增语言后 iOS 不识别?
在 Xcode 中需要手动将新语言添加到项目的 Localizations 列表中:
- 打开
ios/Runner.xcworkspace - 选中项目 → Info → Localizations
- 点击 + 添加新语言
- 勾选
InfoPlist.strings文件
如何测试多语言效果?
Android:在设备或模拟器的「设置 → 系统 → 语言和输入法」中切换系统语言
iOS:在「设置 → 通用 → 语言与地区」中切换语言;或在 Xcode 的 Scheme 中编辑 Run → Arguments → Arguments Passed On Launch,添加 -AppleLanguages (zh-Hans) 来模拟特定语言
HarmonyOS:在「设置 → 系统和更新 → 语言和输入法」中切换系统语言
相关链接
- 修改应用图标 — 各平台应用图标配置
- Android 字符串资源官方文档
- iOS 本地化官方文档
