目标是为 Swift 包托管一个 git 存储库,以在 XCFramework 中以二进制形式分发专有代码。源代码依赖于其他 Swift 包。在 .package 配置中列出依赖项是不够的。简单地要求消费者导入依赖项不是一种选择,因为他们可能在不同级别使用相同的包。我试图解决的主要问题是当我的 Swift 包导入到项目中时如何解决这些依赖项。
我使用的包也可以在 CocoaPod 中使用。
我已经浏览了以下资源和 SO 帖子,但找不到针对此特定目的的答案。
最佳答案
几个月前我遇到了同样的问题,但还没有找到合适的解决方案,所以我刚刚开始使用 Cocoapods 进行分发,并使用此脚本来归档我的框架目标,这些目标具有一些 Cocoapods 作为依赖项:
xcodebuild archive -workspace "../workspace_name.xcworkspace" \
-scheme %scheme_name% \
-sdk iphonesimulator \
-archivePath "./SdkArchives/ios_simulators.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
xcodebuild archive -workspace "../workspace_name.xcworkspace" \
-scheme %scheme_name% \
-sdk iphoneos \
-archivePath "./SdkArchives/ios_devices.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
rm -rf ../DevPods/SDK/framework_name.xcframework
xcodebuild -create-xcframework \
-framework ./SdkArchives/ios_devices.xcarchive/Products/Library/Frameworks/framework_name.framework \
-framework ./SdkArchives/ios_simulators.xcarchive/Products/Library/Frameworks/framework_name.framework \
-output ../DevPods/SDK/framework_name.xcframework
rm -rf SdkArchives
比你可以简单地打包这个 xcframework
作为在 podspeck 中使用此行的 pod:s.vendored_frameworks = 'framework_name.xcframework'
s.dependency 'framework_name_dependency'
你也可以看看这篇文章,我还没有尝试过,但看起来很有希望。https://kean.blog/post/xcframeworks-caveats
关于ios - 您如何存档 Swift 包依赖项以包含在您的 XCFramework 中以作为 Swift 包进行二进制分发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65692618/