这是一个很好的问题:
捆绑名称,可执行名称,产品名称... 还有什么?
但是我想知道在可可应用程序的信息列表中“ bundle display name”和“ bundle name”之间的区别。
感谢 Wevah 的回答。下面是对那些对这两个常量感到困惑的人的描述。
CFBundleDisplayName(String-iOS,Mac OS X)指定捆绑包的显示名称。如果您支持捆绑包的本地化名称,请在信息属性列表文件和语言子目录的 InfoPlist.string 文件中包含此键。如果本地化此键,还应该包括 CFBundleName 键的本地化版本。
CFBundleDisplayName
如果您不打算本地化您的捆绑包,请不要在 Info.plist 文件中包含这个键。包含此键不会影响捆绑包名称的显示,但搜索此键的本地化版本会带来性能损失。
在显示捆绑包的本地化名称之前,Finder 将这个键的值与文件系统中捆绑包的实际名称进行比较。如果两个名称匹配,Finder 将继续从捆绑包的适当 InfoPlist.string 文件中显示本地化名称。如果名称不匹配,Finder 将显示文件系统名称。
有关 MacOSX 中显示名称的详细信息,请参阅文件系统概述。
CFBundleName(String-iOS,MacOSX)标识捆绑包的简称。此名称长度应小于16个字符,并且适合在菜单栏和应用程序的“信息”窗口中显示。对象的 InfoPlist.string 文件中包含此键。Lproj 子目录来为其提供本地化值。如果本地化此键,则还应包括键 CFBundleDisplayName.
CFBundleName
CFBundleDisplayName.
我认为其他任何答案都不能简明地回答这个问题。
显示: 图标下方。根据文档,应该本地化,但只有当应用程序本身是本地化的,否则将有一些惩罚(如果这是真的在现实中我不能说)
显示: 我不知道。文档建议在列表中使用 CFBundleDisplayName,因此建议最多使用16个字符,但是例如设置→一般→应用程序的使用列表实际上使用 CFBundleDisplayName。到目前为止,我还没有弄清楚这一个到底在哪里使用。
哦,这是 iOS 应用程序,不能代表其他操作系统。
根据我的经验:
只有在没有指定 Bundle 显示名称(CFBundleDisplayName)的情况下,才会使用 Bundle 名称(CFBundleName)的值在 AppIcon 下显示。
请注意,CFBundleDisplayName是可本地化的,它应该用来设置应用程序名称显示在 iOS Springboard 菜单和 Mac OS X 应用程序/任务控制。
简而言之,不要触及 CFBundleName并将其值保留为默认值,即 ${PRODUCT_NAME}。
${PRODUCT_NAME}
根据苹果公司的说法,
显示的应用程序名称 on the iPhone home screen来自 CFBundleDisplayName (或“ Bundle display name”作为人类可读的 (Xcode 中的 string)输入到您的 iOS 应用程序的 Info.plist 中 类似地,在 WatchKit app's launch screen中看到的应用程序名称 而 notifications来自您的 WatchKit 的 CFBundleDisplayName 应用程序的 Info.plist
显示的应用程序名称 on the iPhone home screen来自 CFBundleDisplayName (或“ Bundle display name”作为人类可读的 (Xcode 中的 string)输入到您的 iOS 应用程序的 Info.plist 中
on the iPhone home screen
类似地,在 WatchKit app's launch screen中看到的应用程序名称 而 notifications来自您的 WatchKit 的 CFBundleDisplayName 应用程序的 Info.plist
WatchKit app's launch screen
notifications
The Apple Watch app on the iPhone目前使用捆绑包名称(不是 包显示名称) ,该名称由 其 Info.plist 的 CFBundleName (或“ Bundle name”)条目
The Apple Watch app on the iPhone
你可以看到其他相关的截图,并通过 点击这里在苹果开发者页面获得更多信息。
注意,捆绑包名称也用作 HTTP 用户代理的前缀。
CFBundleName 还用于诸如批准 Web 认证服务等系统弹出窗口。