相关疑难解决方法(0)

如何归档 Swift 包依赖项以将其包含在 XCFramework 中以作为 Swift 包进行二进制分发?

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

  1. 每个依赖包也应该归档并包装到 XCFramework 中,对吧?
  2. 我该怎么做呢?

我正在使用的包也可以在 CocoaPod 中找到。

  1. 将它们作为 pod 导入以进行存档会更容易吗?

我已经浏览了以下资源和 SO 帖子,但找不到此特定目的的答案。

ios swift-package-manager

9
推荐指数
1
解决办法
3962
查看次数

使用 pod 依赖构建 XCFramework

这里问同样的问题:XCFramework with Pods Dependency 但就我而言,我不能将其作为 cocoapod,我需要它是 XCFramework

我们的目标是创建一个隐藏我们内部代码的框架并向我们的客户提供SDK。我们想到创建满足我们要求的XCFramework。互联网上也有人建议采用伞形框架,但大多数建议避免这种方法。我们的框架依赖于我们通过 Pod 使用的一些第三方库。

Issue: XCFramework does not compile pods framework. We got an error like "Xyz(Pod) module not found". Even if we add pods from the client-side it does not work.

Code to create XCFramework is as bellow

  1. Create an archive for iOS platform

    xcodebuild archive -workspace ABC.xcworkspace
    -scheme ABC
    -sdk iphoneos
    -archivePath "./archives/ios_devices.xcarchive"
    BUILD_LIBRARY_FOR_DISTRIBUTION=YES
    SKIP_INSTALL=NO

  2. Create an archive for iOS-Simulator platform

    xcodebuild archive -workspace ABC.xcworkspace
    -scheme ABC
    -sdk iphonesimulator
    -archivePath "./archives/ios_simulators.xcarchive" …

xcode ios swift

5
推荐指数
1
解决办法
1987
查看次数

当闭源 CocoaPod 依赖于其他 pod 时,如何为它创建 XCFramework

我正在寻找创建一个闭源 CocoaPod。根据我的研究,建议似乎是将其作为 XCFramework 分发。(来源)似乎还可以通过在 Podspec 文件中指定其他 CocoaPods 来使您的框架依赖于它们。( source ) ( source ) 这将确保当有人将此 pod 添加到其 Podfile 并运行时pod install,它将安装此框架及其依赖项。

我创建了一个框架 Xcode 项目,并在我们应用程序的工作区中将其作为子项目进行开发。所以此时,应用程序已经通过 CocoaPods 安装了所有依赖项,这使得其中的框架可以利用它们。现在我准备好准备分发框架,以便它可以在其他应用程序中使用。

据我了解,我需要先创建一个 XCFramework,然后才能为其创建一个 CocoaPod。当我去归档框架项目时,我收到一个错误,因为它找不到依赖项,这是有道理的。此时我不明白这是如何工作的,因为框架似乎需要包含在其自身中的依赖项才能成功创建 XCFramework,但我从我的研究中预计这将由 CocoaPods 处理,而不包含在框架本身。

xcodebuild archive \
-scheme MyFramework \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath './build/MyFramework.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO \
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
Run Code Online (Sandbox Code Playgroud)
/Users/.../AppName/MyFramework/Helpers/Extensions.swift:10:8: error: no such module 'Kingfisher'
import Kingfisher
       ^

** ARCHIVE FAILED **
Run Code Online (Sandbox Code Playgroud)

frameworks ios cocoapods xcframework

5
推荐指数
1
解决办法
2794
查看次数