pod update速度慢, 试下lg_pod_plugin吧

3,675 阅读4分钟

猛一看有点标题党意思, 说十倍提升有点夸张, 5-9 倍提升还是可以做到的.下边便是小编精心打磨 3 个月之久的 lg_pod_plugin ruby gem介绍部分

特点

  1. 无入侵、无感知、不影响现有业务,不影响现有代码框架、完全绿色产品
  2. 轻量级,只要工程 pod install | update 正常安装就能用
  3. 完全自动化, 一键使用、快的吓人
  4. 一步步教你使用,新手也能欢乐玩转
  5. 支持GitHub仓库下载提速, GitLab仓库支持 HTTP 下载, 下载速度更快, 节省流量.
  6. 没有pod 更新时速度优于 pod install | update, 当有Pod更新时速度至少是原来都 5 倍, 最高是 pod install 9 倍速度.
  7. 支持多线程并发下载, 是串行下载速度的3 倍, 相同时间可以下载更多pod, 充分利用计算机网络资源.

运行环境

Ruby

Ruby ~> '2.0' 推荐 升级到 ruby 3.1.2 版本

Rvm安装教程: events.jianshu.io/p/f2f902d03…

ruby 安装教程: www.jianshu.com/p/5b1cd272c…

rvm 官网安装教程: rvm.io/

rbenv安装教程: ruby-china.org/wiki/rbenv-…

下边是 M1 电脑安装了 ruby 3.0.0 后 bundler install 出现错误, 可以按下边方式解决.

arch -arm64 gem install json -v '2.6.3' --source 'https://gems.ruby-china.com/'
arch -arm64 gem install unf_ext -v '0.0.8.2' --source 'https://gems.ruby-china.com/'

Bundler

Bundler >= '2.3.0' 如果你的bundler 版本低于此版本 使用 sudo gem install bundler

安装教程

安装方式一: 通过 bundle init 创建 Gemfile文件 (推荐)

source "https://gems.ruby-china.com/" #使用ruby-china镜像, 可以更快的安装gems
gem 'cocoapods', '1.11.3' #lg_pod_plugin 是基于 Cocoapods '1.11.3' 版本开发, 因此你的 Gemfile 中也要指定 cocoapods 版本号 1.12.1
gem 'lg_pod_plugin', '1.1.6.7' #公共rubygems 仓库下载安装
执行 `bundle install` 安装 gem 依赖

安装方式二: 安装 lg_pod_plugin gem

gem install lg_pod_plugin #可以在任意有Podfile文件工程中使用 

使用教程

单个工程下使用 lg_pod_plugin, 需要在 gemfile 中配置 lg_pod_plugin
# 功能和 pod install一样
bundle exec lg pod install [--no-reop-update --verobse] #[]为可选参数

# 功能和pod update 一样
bundle exec lg pod update [--no-reop-update --verobse] #[]为可选参数

bundle exec lg pod install
bundle exec lg pod install --repo-update
bundle exec lg pod install --no-repo-update --verbose

bundle exec lg pod update
bundle exec lg pod update --repo-update
bundle exec lg pod update --no-repo-update --verbose

每次输入bundle exec lg pod install 比较麻烦, 可以写个 shell 脚本来执行

#!/bin/sh
command=$1
if [ "$command" = "" ]
then  command="--update"
fi default="--install"
if [ $command = $default ] #注意这里的空格不能少!
then #    echo " bundle exec lg install --no-repo-update"
    bundle exec lg install --no-repo-update --verbose
else #    echo " bundle exec lg update --no-repo-update"
    bundle exec lg update --no-repo-update --verbose
fi
./pod.sh --install 执行 lg install
./pod.sh 默认执行 lg update
任意工程使用 lg_pod_plugin, 不依赖Gemfile 和 bundler
# 功能和 pod install一样
lg pod install [--no-reop-update --verobse] #[]为可选参数

# 功能和pod update 一样
lg pod update [--no-reop-update --verobse] #[]为可选参数

lg pod install --reop-update 
lg pod install --no-repo-update --verbose
lg update --repo-update
lg update  --no-repo-update --verbose

授权方式

Auth2.0 授权

使用 gitlab 账号和密码授权(账号和密码保存在本机 sqlite 数据库中, 不会上传泄露)

image.png

私人令牌访问 使用 gitlab 私人访问令牌授权, 无需输入 gitlab 账号和密码.

  1. 生成个人访问令牌 打开 gitlab 偏好设置, 私人访问令牌. 生成一个访问令牌, 一定记得保存到记事本里, 下次进来就看不到这个令牌了. image.png
  2. 配置 个人访问令牌 host 参数: gitlab 主页地址

token: 个人访问令牌

lg_pod_plugin 不会上传你的个人访问令牌, 只会保存在您的电脑主机上.

lg init --host=https://gitlab.com.com --token=xxxxxxxxx

实验数据

实验条件

  1. 公司WIFI, 连接 VPN 对 github.com 下载加速. (尽可能的减少 cocoapods 下载失败概率, lg_pod_plugin 则不需要任何翻墙工具)

  2. 清空Pods目录下的缓存, 分别使用 pod installlg install 去下载102 个pod 组件

安装过程中执行的脚本

bundle exec pod install --no-repo-update --verbose
bundle exec lg install --no-repo-update --verbose

实验过程

pod install 耗时: 1612 秒, 约合 26.86 分钟

安装过程中 git clone 速度缓慢, 经常卡主一两分钟不动, 这也是当初为什么开发 lg_pod_plugin 的初衷

image.png lg install 耗时: 178秒 安装过程流畅, 基本上可以一次性下载所有依赖组件, 很少出现失败的情况.

image.png

实验结论

本次实验结果并非准确结果, 由于时间关系只做了一组实验对比, lg_pod_plugin 速度至少可以达到 cocoapods 的 5 倍左右.

实验结果受网络速度影响很大, 最理想情况下 lg_pod_plugin 曾经测试出 132 秒成绩, 也就是 2 分多一点下载完 100 多个 pod 组件.

下载地址

Github: github.com/BestiOSDev/… (附 demo 测试工程)

Ruby Gems: gems.ruby-china.com/gems/lg_pod…

有安装和使用问题, 请加 QQ 群: 882864184

在此感谢 @小小牛要淡定 在开发期间和测试期间, 提出的很多建议和问题反馈.