结论:桌面上看到的那个名字能改,图标也能换,但 App 的「身份证号」不能随便动。这三样东西在 iOS 里是三套不同的机制,混为一谈是很多麻烦的源头。
三个名字不是一回事
- Bundle ID(应用唯一标识):形如 com.company.app 的一串字符串,是 App 在苹果生态里的唯一身份。它跟推送证书、第三方平台登记、钥匙串共享全部绑定,改了等于换了一个 App。
- 显示名(CFBundleDisplayName):桌面上那几个字。它是 Info.plist(应用配置清单文件)里的一个字段,改它不影响身份。做渠道包(同一个 App 分给不同推广渠道的版本)时改的就是这个。
- 内部名(CFBundleName):系统和部分日志里用的名字,一般跟显示名一致,偶尔会被忽略。
显示名怎么改
显示名写在 Info.plist 里,重签名时把字段值改掉再重新签名即可,属于常规操作。要注意两点:一是多语言场景下,显示名会分散在 InfoPlist.strings(多语言配置文件)里,只改主字段会导致切到别的语言时名字又变回去;二是改名后用户桌面上会出现一个新名字的图标,如果和旧版本并存,用户会以为装了两个 App,所以改名最好配合版本号一起做。
图标能不能换
能,但这不是签名步骤本身能完成的。图标属于资源文件,要替换 AppIcon(应用图标资源)相关的内容并重新打包,之后再签名。iOS 对图标有规格要求(尺寸序列、圆角由系统处理、不支持透明通道等),替换资源时得按规格来,否则会出现图标显示成黑块,或者干脆装不上。
顺带说一句:签名这个动作不负责改资源,只负责给已经打好的包盖章。凡是涉及改图标、改启动图、改内部文案的需求,都属于「重新打包」而不是「重签名」,两者的工作量和风险差很多。
为什么 Bundle ID 不能随便动
因为一动就是连锁反应。推送证书是按 App ID 签发的,ID 变了推送全废;微信开放平台、各类第三方 SDK 后台登记的也是这个 ID,变了第三方登录和分享全废;钥匙串的访问组跟它挂钩,变了用户本地存的登录态读不出来;内购(App 内购买)商品也挂在 App ID 下。
唯一的例外是明确要走「换身份」的场景,比如把一个 App 拆成两个独立产品。这种情况下要配套重做推送证书、重新登记第三方平台,工作量相当于重新上架一次。
小结
改显示名和换图标是安全的常规操作,改 Bundle ID 是高风险的结构性变更。提需求时把「改名」和「换身份」分开说,能省掉大量返工。
我是本期作者小思,想解决苹果企业签名、超级签名、TF签名问题?可以在微信公众号对话框找到我哦~(QQ:822404920 微信:A-mk5888)