安装Xcode 11后无法在模拟器上运行应用程序-CFBundleVersion错误

Pio*_*ara 43 xcode ios xcode10 xcode11

昨天,我下载了Xcode 11的Beta版。之后,我打开了项目并尝试使用新的Xcode运行。不幸的是,消息出现了错误:


Failed to install the requested application
Domain: NSPOSIXErrorDomain
Code: 22
Failure Reason: The application's CFBundleVersion is invalid.
Recovery Suggestion: Ensure your bundle contains a CFBundleVersion with a valid semantic version number.
--
Run Code Online (Sandbox Code Playgroud)

我已经关闭了Beta版,并尝试使用Xcode的最新稳定版本(10.2.1)再次运行,但是发生了相同的错误。我需要提及的是,在尝试使用Xocde 11运行项目之前,它在Xcode 10上运行时没有任何问题。在使用beta Xcode运行之前和之后,都没有任何改变。

我已经尝试过的:

  • 我已经删除了Xcode 11 beta
  • 我已经清理了我的项目并将其从最新分支中撤出
  • 我已经从以下位置完全删除了Xcode 10:
~/Library/Caches/com.apple.dt.Xcode
~/Library/Developer
~/Library/MobileDevice
~/Library/Preferences/com.apple.dt.Xcode.plist
/Library/Preferences/com.apple.dt.Xcode.plist
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.bom
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.plist
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.bom
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.plist
Run Code Online (Sandbox Code Playgroud)
  • 然后安装最新稳定版本10.2.1

我可以运行没有经过Xcode 11测试的其他项目,而不会出现任何问题。

我的最后一个想法是仅重新安装macOS,但我不想这样做。

编辑:我忘了提到该应用程序在物理iPhone XS上运行。

Jer*_*oia 43

这里的答案有很多错误的信息,因此我想提供权威的答复。

这里的问题是带有Xcode 11 beta的CoreSimulator.framework新版本在CFBundleVersion上进行了验证,而以前的版本则没有。这些检查是有效的,并且确实代表您的应用程序中的问题,但是在Xcode 11 Beta 1中如何执行检查也存在一个错误,这使问题更加复杂。

首先,在您的Info.plist中修复CFBundleVersion。它只能由数字组成,并且最多可以包含两个句点(即##。[。## [。##]],例如:12.4.2)。

其次,修复CFBundleVersion后,您需killall -9 CoreSimulatorBridge要这样做,因为很遗憾,旧值已缓存在CoreSimulatorBridge中,从而阻止了它识别新值。这部分是一个错误,已在Xcode 11 Beta 2中解决。


Cri*_*tik 18

我也遇到了,几乎整天都在浪费时间寻找可能的原因。

最终解决问题并允许我在模拟器上安装的步骤:

  1. 退出Xcode和iOS模拟器
  2. 删除/Library/Developer(从根目录删除),或者如果要保留备份,请重命名
  3. 重新启动Xcode,同意安装命令行工具
  4. 在剩下的地方继续工作:)

除了问题中提到的步骤(完全卸载Xcode 11,完全卸载Xcode 10,然后再重新安装)之外,我还尝试了将项目克隆到另一个位置,遍历所有可能的位置以获取派生数据,安装其他模拟器运行时并在这些位置上进行尝试。它们都不起作用,幸运的是,控制台日志应用程序显示了拒绝应用程序包的进程的路径,这是Xcode在中安装的二进制文件之一/Library/Developer/PrivateFrameworks/CoreSimulator.framework

似乎Xcode 11安装了较新版本的框架,而Xcode 10并未覆盖它们。删除整个/Library/Developer文件夹会触发命令行工具的安装,最终使模拟器运行时恢复到可以在Xcode 10中正常运行的状态。

您一定喜欢Beta版:)

  • 同样的解决方案在这里也有效。我反复删除了一些东西,从 ~/Library/Developer/Xcode/Derived Data 开始,最终删除了主 /Library/Developer 文件夹来解决问题。谢谢你的文章。 (2认同)

Oma*_*ali 9

我去了目标,发现“版本”字段是空的,只需填写一个数字,例如 1.0

在此处输入图片说明


小智 8

我有同样的问题。我发现Xcode 11 Beta发行说明已经对此进行了解释。

Bundles without a CFBundleVersion are invalid and can’t be properly installed on 
devices or simulators. CoreSimulator now checks and rejects such bundles earlier in
the process with a clearer error message. (49892531)
Run Code Online (Sandbox Code Playgroud)

并且此链接是CFBundleVersion的格式。

解决此问题后,我发现首次运行App时是否存在CFBundleVersion问题。然后,无论格式是否正确,总是会出现问题。因此,我重新启动了Xcode和Simulator,并将CFBundleVersion更改为正确的格式,从而使App正常运行。


cat*_*man 7

结合Sgeven.Zheng和Cristik的答案。

原因

安装Xcode11 Beta将安装CoreSimulator.framework具有以下更新的新版本:

https://developer.apple.com/documentation/xcode_release_notes/xcode_11_beta_release_notes

“没有CFBundleVersion的捆绑包是无效的,不能在设备或模拟器上正确安装。CoreSimulator现在会在过程中更早地检查并拒绝此类捆绑包,并显示一条更清晰的错误消息。(49892531)”

以下内容无法解决该问题:

  • 卸载Xcode11 Beta
  • 卸载并重新安装Xcode 10

这是因为CoreSimulator.framework安装在包/Library/Developer/PrivateFrameworks/CoreSimulator.framework外部的中Xcode.app。重新安装后,xcode10会检测到当前安装的版本CoreSimulator.framework比xcode10会安装的版本新,因此它保持原样。

短期固定

  1. 解除安装xcode11
  2. 安装Xcode 10(如果已经安装,则无需重新安装)
  3. 去掉 /Library/Developer/PrivateFrameworks/CoreSimulator.framework
  4. 启动Xcode 10并同意安装命令行工具

长期固定

由于这不是“真正的”错误,而是Xcode11的预期行为,因此最终需要采取步骤来确保始终使用有效的构建应用程序CFBundleVersion


Sam*_*amB 6

就我而言,目标上的“构建版本”字段为空,我将其更改为 1 并且应用程序能够安装。