ios - mac - xcode下载




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

也发生在我身上,浪费了将近一整天的时间来寻找可能的原因。

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

  1. 退出Xcode和iOS模拟器
  2. 删除 /Library/Developer (来自root的那个),或者如果要保留备份,则重命名它
  3. 重新启动Xcode,同意安装命令行工具
  4. 继续你离开的地方工作:)

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

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

你必须爱beta吧:)

昨天,我已经下载了Xcode 11的测试版。之后,我打开了我的项目并尝试使用新的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.
--

我已经封闭测试版并尝试使用最新稳定版本的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
  • 然后安装新的稳定版本10.2.1

我可以运行未经Xcode 11测试的其他项目没有任何问题。

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

编辑:我忘了提到该应用程序正在使用物理iPhone XS。


在我的情况下,它运行11 beta版的模拟器/ coresimulator版本与10.1 - > Killing并让Xcode重新打开模拟器解决了问题。


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

Bundles without a CFBundleVersion are invalid and cant be properly installed on 
devices or simulators. CoreSimulator now checks and rejects such bundles earlier in
the process with a clearer error message. (49892531)

link 是CFBundleVersion的格式。

当我解决这个问题时,我发现第一次运行App时是否存在CFBundleVersion问题。 然后无论格式是否正确,它总是有问题。 所以我重新启动Xcode和Simulator,并将CFBundleVersion更改为正确的格式,App正常运行。


答案中有很多错误信息,所以我想提供一个权威的回应。

这里的问题是带有Xcode 11 beta的新版CoreSimulator.framework在CFBundleVersion上进行了验证,而以前的版本没有这样做。 这些检查是有效的,它确实代表了您的应用程序中的一个问题,但是如何执行检查也会导致问题复杂化。

首先,修复Inf​​o.plist中的CFBundleVersion。 它应该只包含数字和最多两个句点(即##。[。## [。##]],例如:12.4.2)。

其次,在修复CFBundleVersion之后,你需要 killall -9 CoreSimulatorBridge 因为旧的值不幸地被缓存在CoreSimulatorBridge中,阻止它识别新值。 这部分是一个错误,它将在未来的测试版中得到解决。


这是Xcode11中的一项新功能。

在发行说明中它说:

没有CFBundleVersion的捆绑包无效,无法在设备或模拟器上正确安装。 CoreSimulator现在可以使用更清晰的错误消息在流程早期检查和拒绝此类捆绑包。 (49892531)

您可以:

  1. 按照此 link 的样式编辑您的CFBundleVersion
  2. 重置您的Xcode和模拟器
  3. 再次运行,你会看到它再次运行

当你在模拟器成功运行应用程序时,你可以再次更改你的CFBundleVersion,你会发现它仍然可以工作XD


除此之外,我注意到如果你的CFBundleVersion没有指出:

This key is a machine-readable string composed of one to three period-separated integers, such as 10.14.1. The string can only contain numeric characters (0-9) and periods. 它不会建立在模拟器上

link





xcode11