问题描述
我有一个代码仓库,我不想与他人共享。但我想要一个 pod,其他人可以将其集成到他们的应用程序中。那可能吗 ?我遵循了 this 教程,但在尝试将其添加到其他系统时出现错误:
无法找到“pod_name”的规范。
这是 pod 文件:
# Uncomment the next line to define a global platform for your project
#platform :ios,'9.0'
source 'https://github.com/my_source_url'
target 'DemoPods' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for DemoPods
pod 'MyPodName'
end
我的用例:
解决方法
要分发封闭源 Pod,您首先需要修改您的私有存储库,以便您可以生成 .xcframework
文件。
通过 URL 分发
您必须压缩 .xcframework
文件并通过 URL 将其提供给您的观众。 (无论是公开的还是私有的)
然后你可以像这样创建一个 .podspec
文件:
Pod::Spec.new do |s|
s.name = '<POD_NAME>'
s.version = '<VERSION>'
s.summary = '<SUMMARY>'
s.description = <<-DESC
<DESCRIPTION>
DESC
s.homepage = '<A_URL_TO_A_WEBPAGE>'
s.author = { '<AUTHOR_NAME>' => '<AUTHOR_EMAIL>' }
s.source = { :http => '<URL_TO_YOUR_ZIP_FILE>' }
...
s.vendored_frameworks = '<PATH_OF_XCFRAMEWORK_FILE_IN_THE_ZIP>.xcframework'
end
之后有两种分发方式:
-
Public:如果您想通过 cocoapods specs repo 分发您的 pod,您可以将您的
.podspec
文件推送到 cocoapods 后备箱遵循this指南:pod trunk push <PATH_TO_YOUR_PODSPEC_FILE>.podspec
用户的安装将与任何其他 pod 一样:
use_frameworks! target 'TargetName' do pod '<POD_NAME>' end
私有:对于私有分发遵循 this quide,创建一个 私有规格存储库并使用以下命令推送您的 podspec:
pod repo push <REPO_NAME> <PATH_TO_YOUR_PODSPEC_FILE>.podspec
用户的安装将是这样的:
use_frameworks! target 'TargetName' do pod '<POD_NAME>',:source => '<PRIVATE_SPECS_REPO_URL>' end
-
公共:如果您不介意 cocoapods 规格存储库(或者如果您 想要测试您的
.podspec
文件)您可以制作您的.podspec
文件 通过 URL 公开可用,然后指导用户使用 podspec 方式在他们的Podfile
中安装您的 pod:use_frameworks! target 'TargetName' do pod '<POD_NAME>',podspec: '<URL_TO_YOUR_PODSPEC_FILE>.podspec' end
私有:同样的方法也适用于私有分发, 只要您的用户是唯一知道或有权访问的用户 podspec 网址。
通过 Github 存储库分发
尽管我不建议将二进制文件(即 .xcframework
)提交到 git 存储库中,但您几乎可以使用 git 存储库执行相同的操作,但无需压缩您的 {{1} } 文件。
创建一个 git 存储库并添加 .xcframework
文件和 .xcframework
文件,如下所示:
.podspec
Public:然后您可以通过 cocoapods specs repo 分发您的 pod,方法是将您的 Pod::Spec.new do |s|
s.name = '<POD_NAME>'
s.version = '<VERSION>'
s.summary = '<SUMMARY>'
s.description = <<-DESC
<DESCRIPTION>
DESC
s.homepage = '<A_URL_TO_A_WEBPAGE>'
s.author = { '<AUTHOR_NAME>' => '<AUTHOR_EMAIL>' }
s.source = { :git => '<URL_TO_YOUR_GIT_REPO>.git',:tag => s.version.to_s }
...
s.vendored_frameworks = '<PATH_OF_XCFRAMEWORK_FILE_IN_THE_REPO>.xcframework'
end
文件推送到 cocoapods 主干,如下所示:
.podspec
私有:对于私有分发,您可以创建私有规范存储库并使用以下命令推送您的 podspec:
pod trunk push <PATH_TO_YOUR_PODSPEC_FILE>.podspec
,
如果我正确理解您的意图,您希望在不打开源代码的情况下公开您的库。在这种情况下,您应该查看 GoogleWebRTC 的示例。这是他们的pods config。
在这种情况下,您的 cocoapod 库将只是构建框架的容器。例如,您可以创建一个公共存储库,它将存储 cocoapods 和构建的框架本身所需的信息。我认为甚至可以将 github 配置为将构建从您的私有存储库发布到公共存储库,但这可能有点挑战性。
您可以查看this guide