【问题标题】:Xcode does not found symbols for architecture x86_64 using XCFrameworksXcode 未使用 XCFrameworks 找到架构 x86_64 的符号
【发布时间】:2020-05-23 18:21:24
【问题描述】:

Xcode(11.2.1 和 11.3.1)在使用 XCFrameworks 时无法找到 x86_64 架构符号。问题是架构在 XCFramework 内部,但首先让我展示一下框架是如何创建的。

为了生成 XCFramework,我制作了两个档案:

  1. 对于 iOS:

    xcodebuild archive -scheme MyPod -target MyPod -destination="iOS" -archivePath build/ios.xcarchive -derivedDataPath /tmp/iphoneos -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

  2. 对于 iOS 模拟器:

    xcodebuild archive -scheme MyPod -target MyPod -destination="iOS Simulator" -archivePath build/iossimulator.xcarchive -derivedDataPath /tmp/iphoneos -sdk iphonesimulator SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

然后我生成了 XCFramework:

xcodebuild -create-xcframework -framework ./build/ios.xcarchive/Products/Library/Frameworks/MyPod.framework -framework ./build/iossimulator.xcarchive/Products/Library/Frameworks/MyPod.framework -output xcframework/MyPod.xcframework

这是创建的 XCFramework,我们可以在其中看到两种架构: XCFramework preview

创建后,我通过 Cocoapods (1.9.0.beta.3) 分发它。所以我的 .podspec 看起来像:

s.subspec "Vendored" do |framework| framework.vendored_framework = 'xcframework/MyPod.xcframework' end

然后我在另一个项目中使用它,编译时它失败了,因为它找不到模拟器的架构(在它工作的设备上)

我得到的日志如下:

ld: warning: ignoring file /Path/To/MyProject/Pods/MyPod/xcframework/MyPod.xcframework/ios-armv7_arm64/MyPod.framework/MyPod, missing required architecture x86_64 in file /Path/To/MyProject/Pods/MyPod/xcframework/MyPod.xcframework/ios-armv7_arm64/MyPod.framework/MyPod (2 slices) Undefined symbols for architecture x86_64: "_OBJC_CLASS_$MyPod", referenced from: objc-class-ref in SomeClass.o ld: symbol(s) not found for architecture x86_64

看起来 xcodebuild 总是转到 ios-armv7_arm64 文件夹而不是 ios-i386_x86_64-simulator 一个,有什么想法吗?

谢谢!

【问题讨论】:

标签: ios xcode cocoapods ios-simulator xcframework


【解决方案1】:

嘿,请用-sdk 标志生成这个combination

xcodebuild archive -workspace IVTNetworking.xcworkspace  -scheme IVTNetworking \
 -configuration Debug  -sdk iphoneos  \
 -archivePath '/Users/chitaranjans/Library/Developer/Xcode/Archives /IVTNetworking.framework-iphoneos.xcarchive' \
 SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES

这可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多