Cocoapods - 为私有 iOS 存储库创建 pod

问题描述

我有一个代码仓库,我不想与他人共享。但我想要一个 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。
  • 其他用户应该能够在他们的项目中添加 Pod。

解决方法

要分发封闭源 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