我不能再在模拟器上运行我的应用程序了。Online建议我编辑我的项目。Pbxproj,但这似乎不起作用。如何恢复在模拟器上运行项目的能力(并在设备上仍然能够这样做)?我正在开发另一个项目,该项目使用了许多相同的框架,但它运行在模拟器上。什么会导致类似的框架在一个项目中工作,而在另一个项目中不工作?


当前回答

如果使用Carthage,请确保使用copy-frameworks脚本,而不是使用Embed & Sign作为嵌入内容。我得到了同样的错误,因为我忘记了。

其他回答

使用.xcframework,而不是包含iOS和iOS模拟器切片的“胖”.framework。 这也避免了在为App Store构建时使用构建阶段剥离iOS模拟器切片的需要。

“Fat”框架通常是使用lipo创建的,因为它们不能直接由Xcode构建,因此不受支持(来源:开发者技术支持苹果开发者论坛). xcframework是唯一受支持的机制,可以发布一个支持iOS和iOS模拟器的单一框架。

此外,.xframework是唯一支持发布二进制Swift框架的方式(来源:苹果开发者论坛上的开发者技术支持)。

在Xcode 12.3中,不支持“胖”框架的事实是强制的,因为Xcode在构建过程中验证了框架,这就是为什么很多项目突然开始看到构建错误。

No doubt that the fix in case of Xcode 12.3 is to setup the Validate Workspace property in the target's build setting. However if you check the diff after this change, the reason of the build error is the missing parameter (VALIDATE_WORKSPACE) from the project file, not the value of the parameter. So you don't need the value to be YES. You need to add the value to the project settings and you can leave it on the default value (NO). At the first time, it shows up in the Build Settings with NO, but only because that is the default value of the missing parameter.

TLDR; 在不更改项目设置的情况下,转到目标的构建设置,找到“验证工作区”,将其设置为YES,然后设置回NO。

我想你所链接的框架只是为arm架构而构建的。你不能在模拟器中运行它。您将需要框架的作者来构建一个“通用框架”。

老实说,你们应该遵循的唯一方法是将.framework转换为.xcframework,因为这是苹果从XCode版本12.3及以上强制执行的。验证工作空间和其他快速修复可能是暂时的,并在未来引起问题——比如为appstore发布或测试飞行存档应用程序。

要将.framework转换为.xcframework,请遵循本文中描述的步骤,从段落命令开始: https://medium.com/strava-engineering/convert-a-universal-fat-framework-to-an-xcframework-39e33b7bd861

当我将我的自定义框架添加到项目中时,在我更新Xcode后,我遇到了同样的问题。

解决方案:在项目的构建设置下搜索验证工作区 更改为yes,默认设置为no