Xcode не находит символы для архитектуры x86_64 с использованием XCFrameworks - PullRequest
3 голосов
/ 07 февраля 2020

Xcode (11.2.1 и 11.3.1) испытывает проблемы с обнаружением символов архитектуры x86_64 при использовании XCFrameworks. Проблема в том, что архитектура находится внутри 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

Как только он был создан, я распространил его по Cocoapods (1.9.0.beta.3). Итак, мой .podspe c выглядит так:

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 всегда go вместо папки ios-armv7_arm64 ios-i386_x86_64-simulator один, есть идеи?

Спасибо!

...