Sha256: cad471724888648afe36c0c51ff0b0865bda8951cbda7589ac185dcbb3678020

Contents?: true

Size: 1.95 KB

Versions: 36

Compression:

Stored size: 1.95 KB

Contents


## 二进制化策略

### 二进制依赖方式



先了解下 podspec 的 source 字段,它接收一个 Hash,这个 Hash 对象指定了组件的储存地址。我们可以使用 keys 如下:



```ruby
:git => :tag, :branch, :commit, :submodules
:svn => :folder, :tag, :revision
:hg => :revision
:http => :flatten, :type, :sha256, :sha1
```

其中值得注意的有两个 key ,:git 不多说,这里说下 :http。 podspec 允许通过 HTTP 去下载组件代码压缩包,支持 zip, tgz, bz2, txz 和 tar 格式 :



```ruby
spec.source = { :http => 'http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip' }
```

结合上面对 source 字段的了解,可以解决一个比较关键的问题:二进制文件存在哪。这里的选择不多,“常规”无非两种:



1. 和源码一样,存在 tag 中
2. 起一个独立的二进制文件服务器

为什么说 “常规”,因为还有一种“非常规”的选择一一把源码和二进制一起打成 zip ,存在文件服务器上,通过指定 source 为 :http 去下载。当然,由于和 GitLab 本身的 tag 作用冲突,这种方式并不推荐。

接下来比较下“常规”的两种方式。

首先是实现起来较简单第一种,在把 framework 加入 tag 后,只需对 podspec 做如下更改:



```ruby
...
 s.source = { :git => 'git 地址',
                :tag => s.version.to_s }
if ENV['use_binary']
  s.vendored_frameworks = 'framework 的相对路径'
else
  s.source_files = '源码文件路径'
  s.public_header_files = '需要暴露的头文件路径'
end
...
```



但是考虑到后期产生过多的二进制版本,势必会导致 GitLab 库急剧变大,所以暂时不考虑第一种方式。

第二种,我们可以通过编写如下样式的 podspec 实现:



```ruby
...
if ENV['use_binary']
  spec.source = { :git => 'git url',
                :tag => s.version.to_s }
else
  spec.source = { :http => 'binary server url' }
end
...
```





Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
cocoapods-tdfire-binary-2.0.9 explore.md
cocoapods-tdfire-binary-2.0.8 explore.md
cocoapods-tdfire-binary-2.0.7 explore.md
cocoapods-tdfire-binary-2.0.6 explore.md
cocoapods-tdfire-binary-2.0.5 explore.md
cocoapods-tdfire-binary-2.0.4 explore.md
cocoapods-tdfire-binary-2.0.3 explore.md
cocoapods-tdfire-binary-1.4.30 explore.md
cocoapods-tdfire-binary-1.4.29 explore.md
cocoapods-tdfire-binary-1.4.28 explore.md
cocoapods-tdfire-binary-1.4.26 explore.md
cocoapods-tdfire-binary-1.4.25 explore.md
cocoapods-tdfire-binary-1.4.24 explore.md
cocoapods-tdfire-binary-1.4.23 explore.md
cocoapods-tdfire-binary-1.4.22 explore.md
cocoapods-tdfire-binary-1.4.21 explore.md
cocoapods-tdfire-binary-1.4.20 explore.md
cocoapods-tdfire-binary-1.4.19 explore.md
cocoapods-tdfire-binary-1.4.18 explore.md
cocoapods-tdfire-binary-1.3.18 explore.md