Xcode 错误地声称 CFBundleExecutable 为 (null)

Posted

技术标签:

【中文标题】Xcode 错误地声称 CFBundleExecutable 为 (null)【英文标题】:Xcode falsely claims CFBundleExecutable to be (null) 【发布时间】:2009-11-12 17:53:33 【问题描述】:

我正在尝试为 iPhone 应用程序创建一个临时版本以进行 beta 测试。

最后,他们看到如下错误:

“xxx处应用的info.plist指定了一个(null)的CFBundleExecutable,不存在”

这是实际 info.plist 的摘录:

<key>CFBundleExecutable</key>
<string>$EXECUTABLE_NAME</string>

而且它显然不为空。

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

工作解决方案是这个(并且只有这个):

在 Xcode 中,从项目层次结构中选择“可执行文件”。单击您的项目可执行文件,然后按 Command-I。选择“常规”选项卡并将工作目录设置为“构建产品目录”。

通过 BrainwashInc 找到,该公司归功于 MacHackShack。我认为这些有价值的信息太重要了,不能随意散布在博客上。

似乎有时 XCode 可能会翻转此设置,因为我突然开始遇到此问题,并且上面的修复程序修复了它。每次将其更改回“项目目录”都会为我重现该问题。

一旦此修复程序安装了应用程序,我还必须重新启动 XCode 以使调试器工作,这可能是无关的。

【讨论】:

这发生在我身上,在 xcode 没有创建“构建产品目录”的文件权限时尝试构建项目。显然,这至少是可以翻转此设置的一种方式。 你能澄清一下“可执行文件”指的是什么吗?它是 IDE 中某处的菜单项还是面板?我有 XCode 5.1.1,但似乎没有找到这个。 我认为它现在在“产品”下,而不是“可执行文件”下。【参考方案2】:

我认为没有一个可行的解决方案。我发现了几个对我不起作用的解决方案。最后,我确实找到了一种解决方案。

通过删除我在 xCode 的“产品”文件夹中的所有内容,我设法让它工作。我正在使用 xCode 3.2.1。

注意:我也对上面的“构建产品目录”进行了更改,也许这两个解决方案都需要实现,由你来尝试。

至少可以说,这很烦人。作为初学者,如果没有 SDK 中的错误,事情就足够复杂了……

希望这会对那里的人有所帮助!

干杯

【讨论】:

同意,每当出现这种情况时,似乎有多种方法可以尝试。【参考方案3】:

听起来您正在查看项目中的 info.plist 而不是构建的产品。

项目 info.plist 中的“$EXECUTABLE_NAME”只是构建脚本中变量的占位符。您需要查看构建产品中的 info.plist 以查看其中列出的内容。听起来出于某种原因,构建脚本没有按应有的方式填充该字段。

您实际上可能会检查应用程序包的内容是否确实具有可执行文件。我知道这听起来很奇怪,但几年前我和我的构建设置儿子一起搞砸了一个项目,最终得到了一个没有可执行文件的产品。其他一切,包、资源、字符串文件等都没有实际的程序。

【讨论】:

你说得对,我看错了 plist,但内置产品中的 plist 似乎具有正确的价值。它的值是“X”,我的应用程序的名称是“X.app”,这听起来对我来说是正确的 您的可执行文件名是否偶然包含任何奇怪的字符?【参考方案4】:

这是 SDK 的一个已知问题:

从“Build Products directory”更改 iPhone Executable 的工作目录可能会导致应用程序无法正确安装,并显示错误消息“The Info.plist for application at (null) specified a CFBundleExecutable of (null), which does not exist 。”

如您所见: http://developer.apple.com/iphone/library/releasenotes/General/RN-iPhoneSDK-3/index.html

对我来说,它可以更改工作目录。 我创建了手动删除构建目录的问题。

【讨论】:

以上是关于Xcode 错误地声称 CFBundleExecutable 为 (null)的主要内容,如果未能解决你的问题,请参考以下文章

从声称 SDK 12.0 小于 SDK 11 的 xcode 提交 iOS 应用程序的问题

Apple 拒绝使用 Xcode 8 构建的应用程序,即使我已经包含了它声称丢失的图标

无法执行请求。 CFNetwork 错误:请求超时

Xcode 错误地报告 Swift 访问竞争条件

Xcode 错误地设置为使用旧版构建系统

实现接口函数 - 声称不正确地实现接口