【发布时间】:2021-05-27 06:43:12
【问题描述】:
正如标题所述,我在模拟器上使用 xcframework 时遇到了崩溃。在此之前,我会从 lipo 命令生成一个 fat 文件,该文件在设备和模拟器上都运行良好。模拟器和设备的各个框架是通过 CMake 构建的,并生成一个 framework 文件,每个文件都有自己的 Info.plist、确认.plist、公共头文件的目录(这是一个 C\C++ 库)和框架.然后使用生成的框架调用xcodebuild -framework <path-to-ios-framework>.framework -framework <path-to-ios-simulator-framework>.framework -output <output-path>.xcframework。我看到这会生成包含 iOS 和模拟器的正确 xcframework,到目前为止一切顺利。
一旦构建了 xcframework,我将包含在我的 Objective-c 应用程序的 Xcode 项目中,并在通过 Xcode 在设备上运行之前开始构建。这再次没有问题。如果我为模拟器构建,它构建得很好,但是在启动应用程序时,再次通过 Xcode,我在线程 1 上得到一个 EXC_BAD_ACCESS,堆栈跟踪中的唯一项目是 memcpy 和 _dyld_start。如果我尝试继续,我会得到一个SIGKILL,唯一的输出是看起来无法找到库@rpath/framework.framework/framework。如果我在模拟器上运行应用程序而不通过 Xcode,应用程序运行良好。
我的总体问题是为什么通过 Xcode 在模拟器上运行会产生这种崩溃以及可以采取哪些措施来解决它。在网上寻找答案让我陷入了死胡同。我正在使用运行 iOS 14.4 的第 8 代 iPad 模拟器运行 Xcode 12.4。操作系统是 Big Sur 11.2.1。还有一点需要注意的是,在我将 xcframework 包含在实际应用程序中之后,我必须在 Release 和 Debug 配置中为 iphoneos 和 iphonesimulator 指定 HEADER_SEARCH_PATHS,否则应用程序无法编译。
【问题讨论】:
标签: ios objective-c xcode xcframework