我正在寻找创建一个闭源 CocoaPod。根据我的研究,建议似乎是将其作为 XCFramework 分发。 (source https://stackoverflow.com/a/66459296/1795356)似乎还可以通过在 Podspec 文件中指定其他 CocoaPods 来使您的框架依赖于它们。 (source https://stackoverflow.com/a/64782335/1795356) (source https://stackoverflow.com/a/64727655/1795356)这将确保有人将此 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
/Users/.../AppName/MyFramework/Helpers/Extensions.swift:10:8: error: no such module 'Kingfisher'
import Kingfisher
^
** ARCHIVE FAILED **
为了解决这个问题,我所做的是为框架项目创建一个 Podfile 并运行pod install
所以它有自己的工作空间。我验证在打开该工作区时能够在 Xcode 中成功构建框架。然后要创建存档,请指定它应该构建工作区而不是项目,如下所示:
xcodebuild archive \
-workspace MyFramework.xcworkspace \
-scheme MyFramework \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath './build/MyFramework.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO \
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
据我了解,当您创建 XCFramework 时,不会包含依赖项,它只是您自己的框架。但是,必须可以访问依赖项才能成功构建存档。
这个理解解决了我提出这个问题时的困惑。现在我可以继续为我的 XCFramework 创建 CocoaPod 并在 Podspec 文件中指定其依赖项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)