我有一个使用链接和嵌入式自定义框架的应用程序。该应用程序在 Xcode 12.2 之前都可以为 iOS 设备和模拟器正确构建。然而,从 Xcode 12.3 开始,我收到以下错误:
为 iOS 模拟器构建,但链接和嵌入式框架“My.framework”是为 iOS + iOS 模拟器构建的。
该框架是为设备和模拟器构建的(正如错误实际上所说的那样)并使用合并lipo
,所以它应该能够在任何地方运行而不会出现问题。
我在这里错过了什么吗? Xcode 12.3 中有相关变化吗?
恐怕这实际上是正确的错误,框架不应同时包含 iOS 和 iOS Simulator 代码。苹果试图强迫我们使用XCFramework
为此目的。他们在 Xcode 11 中启动了它,并加强了限制。
解决这个问题的唯一正确方法是将框架重建为XC框架 https://developer.apple.com/videos/play/wwdc2019/416/。这很容易做到:
xcrun xcodebuild -create-xcframework \
-framework /path/to/ios.framework \
-framework /path/to/sim.framework \
-output combined.xcframework
您可以从组合开始.framework
。制作框架的两个副本,并使用lipo
从二进制文件中删除与不同 SDK 关联的切片。
它基于Apple的原始答案here https://developer.apple.com/forums/thread/669411?answerId=652663022#652663022.
我的特殊情况是我使用时遇到此错误Rome https://github.com/tmspzz/Rome,它产生这些框架(一个可能的解决方案是here https://github.com/CocoaPods/Rome/pull/90)。此外,很多斗争正在进行迦太基一方 https://github.com/Carthage/Carthage/issues/3019.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)