【问题标题】:How to distribute compiled framework using Cocoapods?如何使用 Cocoapods 分发已编译的框架?
【发布时间】:2018-03-23 12:59:18
【问题描述】:

我正在使用 cocoapods 构建一个框架。现在,我将它放在带有私有规范存储库的私有存储库中。我想分发这个框架不是开源的,而是闭源的。基本上,我只想分发已经编译的 .framework 文件。这样,我将避免将我的源代码暴露给外部。 我不知道如何告诉 cocoapods 分发编译后的文件。

【问题讨论】:

    标签: ios swift frameworks cocoapods


    【解决方案1】:

    编译框架后,您需要创建一个单独的公共存储库以用于分发。那是您放置已编译框架、podspec、许可证、自述文件等的地方。

    podspec 对于分发框架而不是源代码有点不同。见例子:

    Pod::Spec.new do |s|  
        s.name              = 'YourFrameworkName'
        s.version           = '1.7.0'
        s.summary           = 'The YourFrameworkName iOS SDK enables you to embed state-of-the-art real-time goodness into your iOS app.'
        s.homepage          = 'http://example.com'
    
        s.author            = { 'Name' => 'info@example.com' }
        s.license           = { :type => 'Custom', :file => 'LICENSE' }
    
        s.platform          = :ios
        s.source            = { :http => 'https://github.com/example/YourFrameworkName/releases/download/1.7.0/YourFrameworkName.zip' }
    
        s.ios.deployment_target = '9.0'
        s.ios.vendored_frameworks = 'YourFrameworkName.framework'
    
        s.dependency 'SwiftyJSON', '3.1.4'
    end
    

    所有设置完成后,您就可以按正常方式发布 pod 规范了。

    请记住,这是一个重要的考虑因素,您用 Swift 编写的编译框架只能在使用 完全相同 Swift 版本的项目中使用。当人们开始在具有不同 Swift 版本的不同项目中使用您的框架时,您将很快遇到此限制。

    【讨论】:

    • 这是一个使用这种技术的 Cocoapod 存储库的示例。请注意,我不再隶属于这个项目,也没有认可或推广这个框架,只是将它用作 OP 试图做的事情的一个例子。 github.com/tallygo/TallyGoKit
    • 好的,知道了。现在我有两个问题:1)我的存储库是私有的,因为我正在开发的 pod 是公司内部的。我需要框架来避免这种情况,在与外部协作的情况下,我们的源代码可能会被未经授权的人看到。 podspec 验证失败,因为 github url 指向私有仓库。 2)你说“编译你的框架之后”,你是什么意思?这不是 cocoapods 必须自动完成的事情吗?
    • 没有。您将手动编译您的框架,然后将其提交到公共存储库。 pod 规范应该只引用公共存储库。
    【解决方案2】:
    1. 首先,您创建一个示例项目并为该项目安装 pod(您希望作为 SDK.framework 发布的库)。
    2. 然后看下图获取.framework扩展文件分发给公众。

    【讨论】:

      【解决方案3】:

      您可以通过将podspec 文件中的s.source 指向您的框架及其源代码的压缩文件来执行此操作。无需在公共存储库中公开您的源代码。

      例如

      spec.source = { :http => 'https://bitbucket.org/publicRepo/yourframework.zip' }
      

      【讨论】:

        猜你喜欢
        • 2017-04-09
        • 2015-06-12
        • 1970-01-01
        • 1970-01-01
        • 2021-05-30
        • 2011-08-09
        • 1970-01-01
        • 2017-03-16
        • 2014-08-02
        相关资源
        最近更新 更多