替代pod update速度慢的lg_pod_plugin安装使用详解
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>1. 安装方式</li><li>2. 如何使用lg_pod_plugin</li><li>3. 工作原理</li></ul></div><p class="maodian"></p><h2>1. 安装方式</h2><p>推荐使用<code>bundle</code> 安装<code>lg_pod_plugin</code> , 免去手动安装 <code>gem install lg_pod_plugin</code> , 方便后续升级<code>lg_pod_plugin</code>版本, 适合团队开发, 总不能让所有人在自己电脑上都安装一次 <code>lg_pod_plugin</code>吧.</p>
<ul><li>创建 <code>Gemfile</code> 文件</li></ul>
<div class="jb51code"><pre class="brush:ruby;">bundle init #初始化一个bundle 环境, 类似于pod init
</pre></div>
<ul><li>编写<code>Gemfile</code> 文件, 类似于 <code>Podfile</code></li></ul>
<div class="jb51code"><pre class="brush:ruby;"># 建议使用ruby-china镜像去安装 所有依赖组件
source 'https://gems.ruby-china.com/' # 跟podfile写法是一样的
gem 'git', '~> 1.12.0' #指定 git 版本
gem 'sqlite3', '~> 1.4.4' # 指定 sqlite3版本
gem 'cocoapods', '~> 1.11.3' #指定 cocoapods版本
gem 'lg_pod_plugin', '~> 1.0.0' #指定 lg_pod_plugin版本
</pre></div>
<ul><li>安装项目所需要的依赖组件</li></ul>
<div class="jb51code"><pre class="brush:ruby;"> bundle install / bundle update #类似于pod install pod update
</pre></div>
<p class="maodian"></p><h2>2. 如何使用lg_pod_plugin</h2>
<ul><li>导入 lg_pod_plugin</li></ul>
<div class="jb51code"><pre class="brush:ruby;"> require 'lg_pod_plugin' #ruby通过require 关键字导入一个框架
</pre></div>
<ul><li>实例化 LgPodPlugin::Install对象, 需要在 target 下初始化</li></ul>
<div class="jb51code"><pre class="brush:ruby;">target 'HelloMBox' do
#通过LgPodPlugin.install(target) 方式初始化 Install对象, 然后在block 内编写 组件安装描述信息
LgPodPlugin.install(self) do
end
end
</pre></div>
<ul><li>编写组件安装描述信息</li></ul>
<p>不会处理 git && tag, git && commit, 交给Cocoapods去下载, 因为通过tag , commit获取的缓存是稳定的. 还有pod 'YYModel', '1.0.0' 这种Release pod 也不会进行处理, 只对 git && branch有效.</p>
<div class="jb51code"><pre class="brush:ruby;">target 'HelloMBox' do
#通过LgPodPlugin.install(target) 方式初始化 Install对象, 然后在block 内编写 组件安装描述信息
LgPodPlugin.install(self) do
#这个方法块里所有 pod 被 lg_pod_plugin 所管理, 并在本机 ~/Caches/LgPodPlugin目录下缓存下载仓库文件
pod 'AFNetworking', :git => "https://gitee.com/fmdb_beantech/AFNetworking.git", :branch => "master"
end
# 不被 lg_pod_plugin 管理的pod 组件
pod 'GRDB.swift', :git => 'https://gitee.com/fmdb_beantech/GRDB.swift.git', :branch => 'master'
end
</pre></div>
<p>建议所有使用 git, branch组合的pod, 放到 LgPodPlugin.install(self) do 代码块里, 这样就可以对git仓库进行浅层克隆. 方法块外边的pod 组件不受 <code>lg_pod_plugin</code> 控制.</p>
<p>笔者做了一个实验, 当使用<code>lg_pod_plugin</code> 安装所有pod组件用时 07:30秒, 不使用时用时 29:50 秒. 其中多个<code>pod</code>组件出现 <code>git clone</code>卡主半天不动情况</p>
<p class="maodian"></p><h2>3. 工作原理</h2>
<p>这是一个拿空间换时间的解决方案, 在~/Cache/LgPodPlugin目录下边 clone 代码仓库, 并将代码 Copy 到 ~/Caches/Cocoapods 目录下边, 交给cocoapods去安装.</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202209/20220913084242021.png" /></p>
<p>这样cocoapods命中缓存后, 就不会去git download pod <code>xxx</code>, 解决了下载git仓库速度慢的问题. 第二次查找缓存时 先通过 <code>git ls-remote</code> 查看 <code>--refs</code> 有无变化, 如果没有变化, 就使用Cocoapods Pod缓存, 如果有最新的commit信息, 先通过git pull 更新缓存组件仓库内容, 再将 pod需要的文件和资源拷贝到 ~/Library/Caches/Cocoapods 目录下, 交给cocoapods安装. 同一个pod组件最多支持缓存两个版本, 比如 'feature/xxxx01', 'feature/xxxx02', 当有第三个feautre/xxxx03时会淘汰一个不经常使用的pod 缓存, 避免了本机下载太多git仓库.</p>
<p>gem仓库: rubygems.org/gems/lg_pod…</p>
<p>gitee仓库: gitee.com/fmdb_beante…</p>
<p>以上就是替代pod update速度慢的lg_pod_plugin安装使用方式详解的详细内容,更多关于lg_pod_plugin安装使用的资料请关注琼殿技术社区其它相关文章!</p>
<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>pod调度将 Pod 指派给节点</li><li>pod污点taint 与容忍度tolerations详解</li><li>静态pod 创建使用示例详解</li><li>k8s 中的 service 如何找到绑定的 Pod 及实现 Pod 负载均衡的方法</li><li>详解kubelet 创建pod流程代码图解及日志说明</li><li>cordon节点drain驱逐节点delete节点详解</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]