Xcode не находит символы для архитектуры x86_64 с использованием XCFrameworks
Xcode (11.2.1 и 11.3.1) не может найти символы архитектуры x86_64 при использовании XCFrameworks. Проблема в том, что архитектура находится внутри XCFramework, но сначала позвольте мне показать вам, как была создана структура.
Для создания XCFramework я сделал два архива:
Для 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
Для симулятора 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
Как только он был создан, я распространял его через 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
один, есть идеи?
Спасибо!
0 ответов
Эй, пожалуйста, создайте с
-sdk
флаг с этой комбинацией:
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
Это нормально работает, как и ожидалось.