【发布时间】:2018-03-23 12:59:18
【问题描述】:
我正在使用 cocoapods 构建一个框架。现在,我将它放在带有私有规范存储库的私有存储库中。我想分发这个框架不是开源的,而是闭源的。基本上,我只想分发已经编译的 .framework 文件。这样,我将避免将我的源代码暴露给外部。 我不知道如何告诉 cocoapods 分发编译后的文件。
【问题讨论】:
标签: ios swift frameworks cocoapods
我正在使用 cocoapods 构建一个框架。现在,我将它放在带有私有规范存储库的私有存储库中。我想分发这个框架不是开源的,而是闭源的。基本上,我只想分发已经编译的 .framework 文件。这样,我将避免将我的源代码暴露给外部。 我不知道如何告诉 cocoapods 分发编译后的文件。
【问题讨论】:
标签: ios swift frameworks cocoapods
编译框架后,您需要创建一个单独的公共存储库以用于分发。那是您放置已编译框架、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 版本的不同项目中使用您的框架时,您将很快遇到此限制。
【讨论】:
您可以通过将podspec 文件中的s.source 指向您的框架及其源代码的压缩文件来执行此操作。无需在公共存储库中公开您的源代码。
例如
spec.source = { :http => 'https://bitbucket.org/publicRepo/yourframework.zip' }
【讨论】: