Skip to content

配置应用显示名称

应用显示名称是用户在手机桌面、应用商店、任务栏等位置看到的应用名字。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 属性:

xml
<application
    android:label="我的应用">   <!-- 修改这里 -->

android:label 的值即应用在桌面图标下方显示的名称,可以直接写中文字符串。

配置多语言名称

如果需要根据系统语言显示不同的应用名称,需要将 android:label 从硬编码改为引用字符串资源。

1. 创建默认字符串资源

如果 android/app/src/main/res/values/strings.xml 不存在,先创建它:

xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">我的应用</string>
</resources>

2. 引用字符串资源

编辑 android/app/src/main/AndroidManifest.xml,将 android:label 改为引用资源:

xml
<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
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">我的应用</string>
</resources>

英文values-en/strings.xml

xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My App</string>
</resources>

日文values-ja/strings.xml

xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">マイアプリ</string>
</resources>

繁体中文(台湾)values-zh-rTW/strings.xml

xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">我的應用</string>
</resources>

常用语言限定符

语言/地区限定符示例目录
英文envalues-en/
简体中文zhzh-rCNvalues-zh/
繁体中文(台湾)zh-rTWvalues-zh-rTW/
繁体中文(香港)zh-rHKvalues-zh-rHK/
日文javalues-ja/
韩文kovalues-ko/
法文frvalues-fr/
德文devalues-de/
西班牙文esvalues-es/
葡萄牙文ptvalues-pt/
俄文ruvalues-ru/
阿拉伯文arvalues-ar/

限定符规则

  • 语言代码使用 ISO 639-1 两字母标准
  • 地区代码使用 ISO 3166-1 两字母标准,前面加 r(如 rTWrUS
  • 中文简体可省略地区(zh),繁体需指定地区(zh-rTWzh-rHK

注意事项

  • 修改后需要运行 flutter clean 清除缓存,再重新构建
  • 应用名称建议不超过 8~10 个汉字,超出部分会在桌面显示为省略号
  • 多语言场景下,如果系统找不到对应语言的资源文件,会回退到 values/strings.xml 中的默认值
  • 多语言名称没有生效时,确认 AndroidManifest.xml 中使用的是 @string/app_name 而非硬编码字符串,且各语言目录名拼写正确

iOS

iOS 的应用名称通过 Info.plist 文件配置,支持多语言,需配合 InfoPlist.strings 本地化文件实现。

修改应用名称

编辑 ios/Runner/Info.plist

xml
<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.plistCFBundleDisplayName 已设置,建议使用占位值:

xml
<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.strings

3. 编写各语言的 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 项目中注册这些语言,否则系统不会识别。

  1. 用 Xcode 打开 ios/Runner.xcworkspace
  2. 选中项目导航器中的 Runner 项目
  3. Info 标签页中,找到 Localizations 区域
  4. 点击 + 按钮,添加需要的语言(如 Chinese (Simplified)EnglishJapanese 等)
  5. 在弹出的对话框中,勾选 InfoPlist.strings 文件

或者,也可以直接编辑 ios/Runner.xcodeproj/project.pbxproj,在 knownRegions 中添加语言代码:

knownRegions = (
    en,
    "zh-Hans",
    "zh-Hant",
    ja,
    Base,
);

常用语言代码

语言/地区代码目录名
英文enen.lproj/
简体中文zh-Hanszh-Hans.lproj/
繁体中文zh-Hantzh-Hant.lproj/
日文jaja.lproj/
韩文koko.lproj/
法文frfr.lproj/
德文dede.lproj/
西班牙文eses.lproj/
葡萄牙文(巴西)pt-BRpt-BR.lproj/
俄文ruru.lproj/
阿拉伯文arar.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

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

json
{
  "string": [
    {
      "name": "EntryAbility_label",
      "value": "我的应用"
    }
  ]
}

英文en/element/string.json

json
{
  "string": [
    {
      "name": "EntryAbility_label",
      "value": "My App"
    }
  ]
}

日文ja/element/string.json

json
{
  "string": [
    {
      "name": "EntryAbility_label",
      "value": "マイアプリ"
    }
  ]
}

常用语言限定符

语言/地区限定符目录名
英文enen/
简体中文zhzh/
繁体中文(台湾)zh-TWzh-TW/
日文jaja/
韩文koko/
法文frfr/
德文dede/
西班牙文eses/

注意事项

  • 修改后需要重新构建项目
  • 多语言名称没有生效时,确认各语言目录结构正确(element/string.json 路径不能错),且 string.json 中的 name 字段与默认资源中的名称一致
  • 如果系统找不到对应语言的资源文件,会回退到 base/element/string.json 中的默认值

Web

Web 平台的应用名称需要在 manifest.jsonindex.html 中同时配置。多语言支持有限,需通过 JavaScript 动态实现。

修改应用名称

编辑 web/manifest.json

json
{
  "name": "我的应用",              <!-- 完整名称,用于安装提示和启动画面 -->
  "short_name": "我的应用",        <!-- 短名称,用于桌面图标下方 -->
  ...
}
字段用途建议长度
name完整应用名称,显示在安装对话框、启动画面不限
short_name短名称,显示在桌面图标、任务栏建议 12 字符以内

编辑 web/index.html,修改 <title> 标签:

html
<title>我的应用</title>

<title> 的值显示在浏览器标签页上。

配置多语言名称

Web 平台目前不直接支持根据浏览器语言自动切换应用名称。manifest.json 中的 nameshort_name 只能设置一个固定值,需通过 JavaScript 动态实现。

方案一:动态修改 manifest(推荐)

使用 JavaScript 根据浏览器语言动态修改 <title>manifest.json 的链接:

编辑 web/index.html

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        ← 日文
└── ...
html
<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 内容,后续语言切换不会更新已安装的名称。

注意事项

  • nameshort_name 可以不同:name 用全称,short_name 用简称
  • 浏览器标签页显示的是 <title> 的值,与 manifest.json 中的 name 无关

Windows

Windows 平台的应用名称在 Runner.rc 资源文件中配置。不支持多语言,所有语言环境下显示相同名称。

修改应用名称

编辑 windows/runner/Runner.rc

text
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

ini
[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

配置速查

各平台配置文件

平台文件路径关键字段多语言支持
Androidandroid/app/src/main/AndroidManifest.xmlandroid:labelvalues-<语言>/strings.xml
iOSios/Runner/Info.plistCFBundleDisplayName<语言>.lproj/InfoPlist.strings
HarmonyOSharmony/.../element/string.jsonEntryAbility_label<语言>/element/string.json
Webweb/manifest.json + web/index.htmlname / short_name / <title>⚠️ 需 JS 动态实现
Windowswindows/runner/Runner.rcProductName
macOSmacos/Runner/Configs/AppInfo.xcconfigPRODUCT_NAME
Linuxlinux/my_app.desktopName

多语言完整示例

以配置中文英文两种语言为例:

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"

常见问题

修改名称后没有生效?

各平台都有构建缓存,修改名称后建议清理重新构建:

bash
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 中的键名正确:CFBundleDisplayNameCFBundleName
  • 在 Xcode 中确认语言已注册到项目的 Localizations 列表中
  • 在 Xcode 中执行 Clean Build Folder 后重新运行

HarmonyOS

  • 确认各语言目录结构正确,element/string.json 路径不能错
  • 确认 string.json 中的 name 字段与默认资源中的名称一致

应用名称显示为包名?

如果系统找不到对应语言的资源文件,会回退到默认资源。如果默认资源也不存在,可能显示包名。确保:

  1. values/strings.xml(Android)或 base/element/string.json(HarmonyOS)存在且包含 app_name 定义
  2. iOS 的 Info.plistCFBundleDisplayName 有默认值

新增语言后 iOS 不识别?

在 Xcode 中需要手动将新语言添加到项目的 Localizations 列表中:

  1. 打开 ios/Runner.xcworkspace
  2. 选中项目 → Info → Localizations
  3. 点击 + 添加新语言
  4. 勾选 InfoPlist.strings 文件

如何测试多语言效果?

Android:在设备或模拟器的「设置 → 系统 → 语言和输入法」中切换系统语言

iOS:在「设置 → 通用 → 语言与地区」中切换语言;或在 Xcode 的 Scheme 中编辑 Run → Arguments → Arguments Passed On Launch,添加 -AppleLanguages (zh-Hans) 来模拟特定语言

HarmonyOS:在「设置 → 系统和更新 → 语言和输入法」中切换系统语言

相关链接

基于 Flutter 官方文档整理