在cocoa应用程序的信息plist中,"bundle display name"和"bundle name"之间有什么区别

xha*_*han 117 iphone macos cocoa objective-c

这是一个很好的问题:

捆绑名称,可执行名称,产品名称......还有其他什么?

但我只是想知道cocoa应用程序的信息plist中"bundle display name"和"bundle name"之间的区别.

Jon*_*nny 97

我认为其他任何答案都没有简明扼要地回答这个问题.

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

  • CFBundleName- 显示:我不知道.文档建议它将在列表中使用,因此建议最多16个字符,但是例如设置→常规→用法列表的应用程序CFBundleDisplayName确实使用.到目前为止,我从来没有弄清楚这个用户到底在哪里.

哦,这是适用于iOS应用程序,不能代表其他操作系统.

  • 一个"我不知道"的答案如何得到一个复选标记和投票? (93认同)
  • 我的观点是,似乎没有人知道它在哪里使用,还没有人回答.如果您确实知道答案,可以通过点击"添加另一个答案"来添加答案. (13认同)
  • CFBundleDisplayName也显示为通知标题(在通知中心,锁定屏幕等). (7认同)
  • 我发现了一个用法!CFBundleName 至少显示在登录通知中:<CFBundleName> 想要使用 <Service> 登录” (4认同)
  • CFBundleDisplayName也用于iTunes文件共享功能.如果保持黑色,即使启用了该功能,该应用也不会显示在iTunes列表中. (2认同)

xha*_*han 88

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

CFBundleDisplayName

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

如果您不打算本地化您的软件包,请不要在Info.plist文件中包含此密钥.包含此密钥不会影响软件包名称的显示,但会在搜索此密钥的本地化版本时产生性能损失.

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

有关Mac OS X中显示名称的详细信息,请参阅文件系统概述.


CFBundleName

CFBundleName(字符串 - iOS,Mac OS X)标识捆绑包的短名称.此名称长度应少于16个字符,并且适合在菜单栏和应用程序的"信息"窗口中显示.您可以将此密钥包含在相应.lproj子目录的InfoPlist.strings文件中,以便为其提供本地化值.如果您本地化此密钥,则还应包括密钥CFBundleDisplayName.

  • 看来 Apple 现在至少从 2019 年 6 月 28 日或最近的某个地方开始需要 CFBundleDisplayName。您现在收到无效的二元拒绝。 (2认同)

Saf*_*afa 28

一只忙碌的猫

根据Apple的说法,

捆绑显示名称:

显示的应用程序名称on the iPhone home screen来自您的iOS应用程序Info.plist中的CFBundleDisplayName(或"捆绑显示名称"作为Xcode中的人类可读字符串)条目

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

捆绑名称:

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

您可以通过点击此处查看其他相关屏幕截图并在Apple Developer页面上获取更多信息.

  • 我不禁想知道:如果你要去截取屏幕截图以显示值的使用方式,那么为它们提供不同的值会不会更好,所以它们看起来会有所不同? (17认同)

小智 14

根据我的经验:

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

  • 只是苹果公司做一件简单的事情. (6认同)
  • 如果您在安装应用时收到错误消息,例如“此时无法安装 (**CFBundleName**)”,也会出现 CFBundleName。 (2认同)

Rap*_*tor 10

仅当CFBundleDisplayName未指定Bundle Display Name()时,Bundle Name(CFBundleName)的值将用于显示在App Icon下.

请注意,它CFBundleDisplayName是可本地化的,它应该用于设置iOS Springboard菜单和Mac OS X Applications/Mission Control中显示的App名称.

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