You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android Studio中按Build Flavors与Locale修改应用启动器名称?

实现Build Flavor与Locale组合的应用启动器名称修改

核心思路

利用Android的资源目录限定符结合Build Flavor的资源隔离机制,为每个Flavor-Locale组合创建对应的资源文件夹,存放专属的app_name字符串。系统会自动根据当前构建变体和系统Locale,匹配加载对应的资源。

具体实现步骤

1. 构建Flavor对应的资源目录结构

在app/src下为每个Build Flavor创建独立的资源目录,并在其中按Locale创建values-<locale>文件夹,示例结构如下:

app/src/
├── free/
│   └── res/
│       ├── values-en/
│       │   └── strings.xml
│       └── values/
│           └── strings.xml
├── premium/
│   └── res/
│       ├── values-vn/
│       │   └── strings.xml
│       ├── values-ko/
│       │   └── strings.xml
│       └── values/
│           └── strings.xml
├── beta/
│   └── res/
│       ├── values-ko/
│       │   └── strings.xml
│       └── values/
│           └── strings.xml
└── main/
    └── res/
        └── values/
            └── strings.xml

2. 编写各组合的app_name字符串

在对应文件夹的strings.xml中定义app_name:

  • free + en(app/src/free/res/values-en/strings.xml):
<resources>
    <string name="app_name">App Free English</string>
</resources>
  • premium + vn(app/src/premium/res/values-vn/strings.xml):
<resources>
    <string name="app_name">App Premium Vietnam</string>
</resources>
  • beta + ko(app/src/beta/res/values-ko/strings.xml):
<resources>
    <string name="app_name">App Beta Korean</string>
</resources>
  • premium + ko(app/src/premium/res/values-ko/strings.xml):
<resources>
    <string name="app_name">App Premium Korean</string>
</resources>

3. 设置默认 fallback 名称

为每个Flavor的默认values文件夹和main的values文件夹设置默认名称,避免没有匹配到Locale时显示异常:

  • 比如app/src/free/res/values/strings.xml可以设置:
<resources>
    <string name="app_name">App Free</string>
</resources>
  • app/src/main/res/values/strings.xml设置全局默认:
<resources>
    <string name="app_name">App</string>
</resources>

4. 确保Manifest引用正确字符串

在AndroidManifest.xml中,应用的android:label必须引用@string/app_name:

<application
    android:name=".MyApplication"
    android:label="@string/app_name"
    ...>
    ...
</application>

为什么之前的resValue方法不行?

resValue是通过Gradle在构建时生成单个字符串资源,只能基于Build Flavor做静态区分,无法结合系统Locale的动态切换逻辑。而Android原生的资源限定符机制是专门为多语言、多配置场景设计的,能自动根据当前环境匹配最优资源,完全满足Flavor+Locale的组合需求。

内容的提问来源于stack exchange,提问作者Khang Pham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:33:21