在cocoa应用程序的信息列表中,“bundle display name”和“bundle name”有什么区别

这是一个很好的问题:

软件包名称,可执行文件名称,产品名称…还有什么?

但是我只是想知道cocoa应用程序的信息列表中“bundle display name”和“bundle name”之间的区别。

我不认为任何其他答案都能简明回答这个问题。

  • CFBundleDisplayName – 显示: 下面的图标 。 根据文档,应该是本地化的,但只有当应用程序本身是本地化的,否则会有某种惩罚(如果这是事实,我不能说)

  • CFBundleName – 显示: 我不知道 。 Docsbuild议在列表中使用它,因此build议使用最多16个字符,但是例如Settings的Settings→General→Usage列表确实使用了CFBundleDisplayName 。 到目前为止,我从来没有想出这个使用的是什么。

哦,这是iOS应用程序,不能说其他的操作系统。

感谢Wevah的回答。 这里是与这两个常量混淆的人的描述。

CFBundleDisplayName

CFBundleDisplayName (String – iOS,Mac OS X)指定包的显示名称。 如果您支持捆绑软件的本地化名称,请将此密钥包含在信息属性列表文件和语言子目录的InfoPlist.strings文件中。 如果您本地化此密钥,则还应该包含CFBundleName密钥的本地化版本。

如果您不打算本地化您的软件包,请不要将此密钥包含在Info.plist文件中。 包含此密钥不会影响软件包名称的显示,但会导致性能损失,以search此密钥的本地化版本。

在为您的包显示本地化名称之前,Finder会将此密钥的值与文件系统中您的包的实际名称进行比较。 如果两个名称匹配,则Finder将继续显示捆绑软件的相应InfoPlist.strings文件中的本地化名称。 如果名称不匹配,Finder将显示文件系统名称。

有关Mac OS X中显示名称的更多信息,请参阅文件系统概述。


CFBundleName

CFBundleName (string – iOS,Mac OS X)标识包的短名称。 该名称的长度不应超过16个字符,并且适合在菜单栏和应用程序的信息窗口中显示。 您可以将此密钥包含在适当的.lproj子目录的InfoPlist.strings文件中,为其提供本地化的值。 如果您本地化此密钥,则还应该包含密钥CFBundleDisplayName.

一只繁忙的猫

据苹果介绍,

包显示名称:

显示on the iPhone home screen应用程序名称来自iOS应用程序的Info.plist中的CFBundleDisplayName(或Xcode中作为人类可读string的“Bundle display name”)条目

同样,您在WatchKit app's launch screennotifications看到的应用名称来自WatchKit应用Info.plist的CFBundleDisplayName

包名称:

The Apple Watch app on the iPhone当前使用您的iOS应用程序的软件包名称(不是软件包显示名称),该应用程序由其Info.plist的CFBundleName(或“软件包名称”)条目指定

你可以看到其他相关的截图,并通过点击这里在苹果开发者页面更多的信息。

从我的经验:

  • CFBundleDisplayName用于iOS设备上的应用程序网格
  • CFBundleName用于存储在iTunes资料库中的应用程序列表

只有在未指定Bundle Display Name( CFBundleDisplayName )的情况下,Bundle Name( CFBundleName )的值将被用于在App Icon下显示。

请注意, CFBundleDisplayName是可本地化的,它应该用于设置iOS的跳板菜单和Mac OS X应用程序/任务控制中显示的应用程序名称。

简而言之,不要触摸CFBundleName并将其值保留为默认值,即${PRODUCT_NAME}