XCFramework со статическими зависимостями фреймворков
У меня есть XCFramework, который зависит от нескольких статических фреймворков.
Мой XCFramework построен с включенным BUILD_FOR_LIBRARIES_FOR_DISTRIBUTION.
Подфреймворки не обязательно должны быть доступны извне XCFramework.
Когда я пытаюсь скомпилировать XCFramework в клиентском (хостовом) приложении, я получаю сообщение об ошибке в файле XCFramework.swiftinterface, в котором говорится: No such module 'FBSDKLoginKit'
(FBSDKLoginKit - одна из подфреймворков XCFramework)
Кажется, что не хватает файлов swiftinterface для зависимых модулей. Например, я использую FBSDKLoginKit, но быстрый интерфейс отсутствует в XCFramework.
Для справки я компилирую фреймворк следующим образом:
xcodebuild archive -project "TestFrameowrk.xcodeproj" -scheme "TestFrameowrk" -sdk iphoneos -archivePath ~/Desktop/xcframework.arm SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild archive -project "TestFrameowrk.xcodeproj" -scheme "TestFrameowrk" -sdk iphonesimulator -archivePath ~/Desktop/xcframework.x86 SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild -create-xcframework -framework ~/Desktop/xcframework.x86.xcarchive/Products/Library/Frameworks/TestFrameowrk.framework -framework ~/Desktop/xcframework.arm.xcarchive/Products/Library/Frameworks/TestFrameowrk.framework -output ~/Desktop/Framework.xcframework
2 ответа
Пробовали ли вы добавить другие зависимости отдельно с созданным XCFramework при интеграции с клиентским проектом? Похоже, Apple рекомендует избегать использования зонтичных / вложенных фреймворков с XCFramework.
Да, у меня была такая же проблема с зависимостью от alamofire. Итак, что происходит, когда вы генерируете xcframeworks, у вас есть зависимость от FBSDKLoginKit. Но после создания фреймворков ваш клиент хочет использовать. Вы также должны указать зависимость как FBSDKLoginKit с той же версией, тогда этой проблемы не будет. Для меня я решаю после добавления alamofire на стороне клиента.