ios - 您如何存档 Swift 包依赖项以包含在您的 XCFramework 中以作为 Swift 包进行二进制分发?

标签 ios swift-package-manager

目标是为 Swift 包托管一个 git 存储库,以在 XCFramework 中以二进制形式分发专有代码。源代码依赖于其他 Swift 包。在 .package 配置中列出依赖项是不够的。简单地要求消费者导入依赖项不是一种选择,因为他们可能在不同级别使用相同的包。我试图解决的主要问题是当我的 Swift 包导入到项目中时如何解决这些依赖项。

  • 每个依赖包都应该归档并包装到 XCFramework 中,对吗?
  • 我该怎么做?

  • 我使用的包也可以在 CocoaPod 中使用。
  • 将它们作为 pod 导入以便存档会更容易吗?

  • 我已经浏览了以下资源和 SO 帖子,但找不到针对此特定目的的答案。
  • https://developer.apple.com/documentation/swift_packages/distributing_binary_frameworks_as_swift_packages
  • https://developer.apple.com/videos/play/wwdc2019/416/
  • https://medium.com/@anuragajwani/how-to-distribute-compiled-universal-ios-xcframeworks-using-swift-package-manager-8eaf8395985f
  • https://www.appcoda.com/xcframework/
  • Explicitly manage Swift Package nested dependencies required?
  • XCFramework with Pods Dependencies(解决方案是托管 pod 而不是 swift 包)
  • 最佳答案

    几个月前我遇到了同样的问题,但还没有找到合适的解决方案,所以我刚刚开始使用 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/

    相关文章:

    ios - 刚性约束与 `-intrinsicContentSize`

    swift 包管理器。错误 : Found multiple packages with the name. ..?

    xcode - 从嵌套的 Swift 包访问 Assets 时,SwiftUI 预览会崩溃

    Swift 包管理器 - 如何 `Always Embed Swift Standard Libraries`?

    swift - 包内模块依赖

    ios - 将相机应用程序旋转复制到风景 IOS 6 iPhone

    ios - 在 iOS 上安装 Firebase 模块

    ios - 我需要 UIView 上的 UITableView 帮助( Storyboard项目)

    ios - 我的 iOS 7 相机覆盖层有什么问题?

    swift - 如何使用 Swift 包管理器指定 Swift 依赖项的 Beta 版本