【发布时间】:2011-03-28 19:19:07
【问题描述】:
这是一个很好的问题:
Bundle Name, Executable Name, Product Name...anything else?
但我只是想知道 cocoa 应用程序的 info plist 中的“bundle display name”和“bundle name”之间的区别。
【问题讨论】:
标签: iphone objective-c cocoa macos
这是一个很好的问题:
Bundle Name, Executable Name, Product Name...anything else?
但我只是想知道 cocoa 应用程序的 info plist 中的“bundle display name”和“bundle name”之间的区别。
【问题讨论】:
标签: iphone objective-c cocoa macos
我认为其他任何答案都不能简明扼要地回答这个问题。
CFBundleDisplayName - 显示:图标下方。根据文档,应该本地化,但前提是应用程序本身已本地化,否则会有某种惩罚(如果这是真的我不能说)
CFBundleName - 显示:我不知道。文档建议它将在列表中使用,因此建议最多 16 个字符,但例如设置→常规→应用程序使用列表确实使用 CFBundleDisplayName。到目前为止,我从来没有弄清楚这个到底是在哪里使用的。
哦,这是针对 iOS 应用的,不能代表其他操作系统。
【讨论】:
感谢 Wevah 的回答。以下是对这两个常量混淆的人的描述。
CFBundleDisplayName(字符串 - iOS、Mac OS X)指定捆绑包的显示名称。如果您支持包的本地化名称,请在您的信息属性列表文件和语言子目录的 InfoPlist.strings 文件中包含此键。如果您将此键本地化,您还应该包含 CFBundleName 键的本地化版本。
如果你不打算本地化你的包,不要在你的 Info.plist 文件中包含这个键。包含此键不会影响包名称的显示,但会导致搜索此键的本地化版本时的性能损失。
在显示包的本地化名称之前,Finder 会将此键的值与文件系统中包的实际名称进行比较。如果这两个名称匹配,Finder 会继续显示来自您的包的相应 InfoPlist.strings 文件的本地化名称。如果名称不匹配,Finder 将显示文件系统名称。
有关 Mac OS X 中显示名称的更多信息,请参阅文件系统概述。
CFBundleName(字符串 - iOS、Mac OS X)标识捆绑包的短名称。此名称的长度应少于 16 个字符,并且适合显示在菜单栏和应用程序的信息窗口中。您可以将此键包含在适当的 .lproj 子目录的 InfoPlist.strings 文件中,以便为其提供本地化值。如果你本地化这个键,你还应该包含键CFBundleDisplayName.
【讨论】:
根据苹果的说法,
显示的应用名称
on the iPhone home screen来自 CFBundleDisplayName(或“捆绑显示名称”作为人类可读的 Xcode 中的字符串)iOS 应用的 Info.plist 条目同样,您在
WatchKit app's launch screen中看到的应用名称notifications来自 WatchKit 的 CFBundleDisplayName 应用的Info.plist
The Apple Watch app on the iPhone当前使用包名(不是 您的 iOS 应用程序的包显示名称),由 其 Info.plist 的 CFBundleName(或“Bundle name”)条目
您可以通过clicking here 在 Apple 开发者页面查看其他相关屏幕截图并获取更多信息。
【讨论】:
根据我的经验:
【讨论】:
仅当未指定Bundle Display Name (CFBundleDisplayName) 时,才会使用Bundle Name (CFBundleName) 的值显示在App Icon 下方。
请注意CFBundleDisplayName 是可本地化的,它应该用于设置iOS Springboard 菜单和Mac OS X Applications / Mission Control 中显示的App 名称。
简而言之,不要触摸 CFBundleName 并将其值保留为默认值,即 ${PRODUCT_NAME}。
【讨论】:
请注意,捆绑包名称也用作 HTTP 用户代理的前缀。
【讨论】: