已经为设备和模拟器获得了单独的框架,我想集成这些框架以实现所需的功能。 我已经在我的迦太基框架项目中包含了模拟器框架。当我编译我的框架时,我收到以下错误
为 iOS-armv7 构建但尝试链接为 iOS-arm64 构建的文件 架构 armv7 的未定义符号: “OBJCCLASS$...”,引用自: ViewController.o 中的 objc-class-ref “OBJCCLASS$...”,引用自: DepedencyInjector.o 中的 objc-class-ref ViewController.o 中的 objc-class-ref ld:找不到架构 armv7 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
参考: https://developer.apple.com/forums/thread/66978 https://developer.apple.com/forums/thread/66978?answerId=215100022#215100022
答案 0 :(得分:1)
如果您可以选择将两个框架链接在一起,您可以让编译器决定。在这种情况下,您将创建一个 FAT 二进制文件。这意味着:
创建 FAT 二进制文件的命令是:
lipo -create ./Simulator.framework/framework_binary ./Device.framework/framework_binary -output ./Universal
现在您必须复制文件夹 Device.framework
并将其命名为 Universal.framework
。
将使用 lipo 创建的二进制文件复制到此文件夹中。
然后打开文件 ./Universal.framework/Info.plist
并将字符串 iPhoneSimulator
添加到 CFBundleSupportedPlatforms
数组中。
现在从文件夹 x86_64.swiftdoc
中复制 x86_64.swiftmodule
和 Simulator.framework/Modules/framework_name.swiftmodule/
并将它们粘贴到
Universal.framework/Modules/framework_name.swiftmodule/
。
将创建的通用框架导入到 Xcode 的目标 Embedded Binries
部分,您应该能够编译您的项目。
答案 1 :(得分:0)
您可以按如下方式构建 XCFramework(从命令行)。
xcodebuild \
-create-xcframework \
-framework "<<path to simulator xcarchive>>/Products/Library/Frameworks/SomeFramework.framework" \
-framework "<<path to device xcarchive>>/Products/Library/Frameworks/SomeFramework.framework" \
-output "CombinedFramework.xcframework"
您可以添加更多内容并设置各种路径和输出以供您品尝。
不确定这是否有帮助,因为您不是在寻找通用框架,也不确定您如何对其进行分类......