给内测用户装好包后,有人发现桌面上显示的名字和产品名对不上,也有人把「显示名」和「包名」混为一谈,改错位置导致升级异常。本文讲清应用显示名的配置规则,帮你避开内测分发阶段最常见的几类显示名问题。
显示名和包名是两回事
先分清三个概念,很多误区都源于混淆:
- 包名 / Bundle ID:应用的唯一身份标识,决定覆盖安装、与正式版能否共存,装包后基本不再改动
- 应用显示名:桌面上图标下方那一行文字,只影响「看起来叫什么」,不参与系统识别
- 安装包文件名:APK 或 IPA 文件本身的名字,装到手机后用户根本看不到
简单说:包名决定「系统认为你是谁」,显示名决定「用户看到你叫什么」。两者独立配置,改显示名不需要动包名。
安卓与 iOS 分别在哪里配置
两端的配置位置不同,跨端团队经常改错一侧:
- 安卓:在
AndroidManifest.xml的android:label中指定,通常引用strings.xml里的app_name;发布前确认主 Activity 的 label 没有单独覆盖全局值 - iOS:在
Info.plist中配置CFBundleDisplayName(桌面显示名)与CFBundleName(系统内部短名),桌面优先读取前者 - 两端一致性:内测阶段建议两端显示名保持一致,避免测试用户反馈问题时对不上号
如果通过虾分发(https://xiafenfa.com)分发双端内测包,建议上传前先在真机装一遍,确认桌面显示的名称、图标与预期一致,再对外发码。
改显示名会影响覆盖安装吗
不会,前提是包名不变。显示名只是桌面文案,系统升级时按包名匹配旧版本,因此:
- 只改显示名、不动包名:可直接覆盖安装,本地数据照常保留
- 显示名改了但装不上:优先排查包名或证书状态是否变了,而不是显示名
- 想让内测版与正式版并存:靠改包名实现共存,而不是改显示名——只改显示名的两个包,包名相同时仍会互相覆盖
多语言显示名怎么适配
面向粤语区或多地区用户的内测项目,显示名可按语言适配:
- 安卓:在
values-zh、values-en等目录的strings.xml中分别定义app_name - iOS:通过
InfoPlist.strings按语言提供CFBundleDisplayName - 注意:桌面是否跟随系统语言切换由系统决定,应用内改语言通常不会立即刷新桌面名称
分发前的显示名自检清单
发码前按顺序过一遍,能拦住绝大多数低级问题:
- 两端真机安装后,核对桌面名称与产品名是否一致
- 确认显示名没有残留「test」「beta」等内部代号(除非刻意保留)
- 覆盖安装一次旧版本,确认升级正常、名称正确刷新
- 切换系统语言,检查多语言显示名是否按预期生效
常见问题
| 问题 | 答案 |
|---|---|
| 改了显示名,旧用户怎么更新? | 只改显示名不需要强制更新,下次覆盖升级时自然生效 |
| 显示名能带空格和特殊字符吗? | 可以,但建议控制在 10 个字符内,超长会在桌面被截断 |
| 为什么改了 strings.xml 桌面名字没变? | 检查 Activity 级 label 是否单独指定,或 iOS 端是否漏改 CFBundleDisplayName |
建议 内测分发前把「显示名核对」列入发版检查单,与版本号、安装包哈希一起确认。名字是测试用户对你产品的第一印象,发出去再改一轮,沟通成本远高于发前多看一眼。