0

我正在努力让一个使用 XCFramework 的框架工作。我已经构建了 arm64/armv7 和单独的 x86_64 框架,就好像它们是普通的 cocoapods 一样,然后我xcodebuild -create-xcframework将它们合并到一个运行良好的 xcframework 中。当我之后尝试使用框架时,虽然我得到了这个运行时错误

dyld: dyld cache load error: shared cache file open() failed
dyld: Symbol not found: _$s6Lottie13AnimationViewC18backgroundBehaviorAA0a10BackgroundE0OvpWvd
  Referenced from: /Users/user/Library/Developer/CoreSimulator/Devices/BE671B8B-97A0-4449-BBC6-C1DFD857138D/data/Containers/Bundle/Application/04DFC623-E380-45C6-A28F-0C36142F031E/MyFramework_Example.app/Frameworks/MyFramework.framework/MyFramework
  Expected in: /Users/user/Library/Developer/CoreSimulator/Devices/BE671B8B-97A0-4449-BBC6-C1DFD857138D/data/Containers/Bundle/Application/04DFC623-E380-45C6-A28F-0C36142F031E/MyFramework_Example.app/Frameworks/Lottie.framework/Lottie
 in /Users/user/Library/Developer/CoreSimulator/Devices/BE671B8B-97A0-4449-BBC6-C1DFD857138D/data/Containers/Bundle/Application/04DFC623-E380-45C6-A28F-0C36142F031E/MyFramework_Example.app/Frameworks/MyFramework.framework/MyFramework

我已经搜索了很多 dyld 类型错误,但它们似乎都不是这种类型,并且有似乎不适用于我的场景的解决方案。

xcframework 通过 cocoapods 放入我的项目中,并在 podspec 中定义了它的依赖关系。正如您从错误中看到的那样,它试图使用来自我的依赖项之一的 lottie 框​​架中的符号,但似乎找不到它,这很奇怪。我已经确定 lottie 框​​架确实被拉入了我的项目(如果我从源代码而不是 xcframework 构建它,它就可以工作)。所以不知道为什么它在链接框架时遇到问题。

如果您需要任何更具体的信息来提供帮助,请告诉我

4

1 回答 1

1

试着把

pod 'lottie-ios', :git => 'https://github.com/airbnb/lottie-ios', :branch => 'master'

在您的 Podfile 中(不添加安装后操作)。

他们可能使用不同的 Xcode 版本在最新发布的版本和主分支之间进行编译。

我知道这是一种解决方法,但挽救了我的一天。

于 2020-11-27T08:08:20.073 回答