lg_pod_plugin解決 cocoapods下載慢的問題

繪畫_05.jpg

猛一看有點標(biāo)題黨意思, 說十倍提升有點夸張, 5-9 倍提升還是可以做到的.下邊便是小編精心打磨 3 個月之久的 lg_pod_plugin ruby gem介紹部分

特點

  1. 無入侵曙博、無感知齐疙、不影響現(xiàn)有業(yè)務(wù)袁翁,不影響現(xiàn)有代碼框架沛贪、完全綠色產(chǎn)品
  2. 輕量級,只要工程 pod install | update 正常安裝就能用
  3. 完全自動化, 一鍵使用殴玛、快的嚇人
  4. 一步步教你使用菜循,新手也能歡樂玩轉(zhuǎn)
  5. 支持GitHub倉庫下載提速, GitLab倉庫支持 HTTP 下載, 下載速度更快, 節(jié)省流量.
  6. 沒有pod 更新時速度優(yōu)于 pod install | update, 當(dāng)有Pod更新時速度至少是原來都 5 倍, 最高是 pod install 9 倍速度.
  7. 支持多線程并發(fā)下載, 是串行下載速度的3 倍, 相同時間可以下載更多pod, 充分利用計算機網(wǎng)絡(luò)資源.

運行環(huán)境

Ruby '3.1.2', 使用系統(tǒng) ruby 2.6.0 也可以
Bundler '2.3.7' 低于這個版本自行升級 gem install bundler
CocoaPods '1.11.3' lg_pod_plugin 是基于 Cocoapods '1.11.3' 版本開發(fā), 因此你的 Gemfile 中也要指定 cocoapods 版本號 1.11.3

Ruby 3.0發(fā)布翘地,比 Ruby2快3倍 : https://zhuanlan.zhihu.com/p/340044478

為了更好的體驗建議安裝 ruby3.0 版本, 3.0 版本運行速度是 2.0ruby 的 3 倍, 實在不想折騰 ruby 環(huán)境 使用 Mac 自帶的 ruby 2.6.0 也是可以的.

實測: lg update ruby 2.6.10 執(zhí)行時間 43秒
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

[圖片上傳失敗...(image-3ded4b-1669887929798)]

實測: lg update ruby3.0.4 執(zhí)行時間 11 秒

[圖片上傳失敗...(image-c3cb8a-1669887929799)]
如果你喜歡折騰 Ruby, Rvm, Rbenv, Cocoapods, Homebrew 這些工具鏈, 建議升級到最新版本 ruby, 它會有更高的運行效率. 如果你是不喜歡折騰工具鏈, 看到各種安裝報錯就頭大的同學(xué), 使用系統(tǒng) ruby 也能玩得轉(zhuǎn)lg_pod_plugin.

Rvm安裝教程: http://events.jianshu.io/p/f2f902d03a59

ruby 安裝教程: http://www.reibang.com/p/5b1cd272cacf

rvm 官網(wǎng)安裝教程: https://rvm.io/

rbenv安裝教程: https://ruby-china.org/wiki/rbenv-guide

M1系列芯片安裝 RVM Homebrew 可能會出現(xiàn)比較多問題, 多看網(wǎng)上教程和問題解決方案.

下邊是 M1 電腦安裝了 ruby 3.0.0 后 bundler install 出現(xiàn)錯誤, 可以按下邊方式解決.

arch -arm64 gem install json -v '2.6.2' --source '<https://gems.ruby-china.com/>'
arch -arm64 gem install unf_ext -v '[0.0.8.2](http://0.0.8.2)' --source '<https://gems.ruby-china.com/>'

使用 RVM Rbenv 安裝 Ruby 可能會出現(xiàn)編譯失敗, 有可能是 Xcode CommandLine Tool 沒有安裝, 一定要確保安裝了 Xcode CommandLine Tool命令行工具.

xcode-select --install 安裝 xcode 命令行工具

總之一句話 只要你有足夠耐心任何錯誤都是有解決的辦法的, 這里推薦使用 Rbenv 安裝 ruby. 理由是比較簡單出現(xiàn)錯誤也很容易解決.

安裝教程

安裝方式一: 通過 bundle init 創(chuàng)建 Gemfile文件 (推薦)

source "https://gems.ruby-china.com/" #使用ruby-china鏡像, 可以更快的安裝gems
gem 'cocoapods', '1.11.3' #lg_pod_plugin 是基于 Cocoapods '1.11.3' 版本開發(fā), 因此你的 Gemfile 中也要指定 cocoapods 版本號 1.11.3
gem 'lg_pod_plugin', '1.1.5.0' #公共rubygems 倉庫下載安裝

執(zhí)行 `bundle install` 安裝依賴 gem, 如果是系統(tǒng) ruby 需要加 sudo 獲得管理員權(quán)限, 才能安裝 gem

如果 bundler 版本低于 2.0.0 請自行升級到 2.3.7, 避免和團(tuán)隊其他成員出現(xiàn) Gemfile.lock 文件沖突問題

gem install bnndler

安裝方式二: 安裝 lg_pod_plugin gem

#可以在任意有Podfile文件工程中使用, 無需 配置 Gemfile文件
# sudo 如果是系統(tǒng)自帶 ruby 需要加 sudo, 如果裝了 RVM, Rbenv 則不需要加 sudo
sudo gem install lg_pod_plugin 
#安裝 等價于pod install
lg install --verbose --no-repo-update 
# 更新 等價于pod update
lg update --verbose --no-repo-update 
 --verbose 是可選參數(shù)
 --no-repo-update 是可選參數(shù)
 --repo-update 是可選參數(shù)

使用教程

lg_pod_plugin 從 1.0.10 版本開始成為一個 Command line tool, 不再提供API 給外部使用, 它只負(fù)責(zé)下載 Cocoapods Pods 緩存, 可以使用它提供的命令去使用它.

如果采用 Bundler 管理 gem 需要加 bundler exec

# 功能和 pod install一樣
bundle exec lg pod install [--no-reop-update --verobse] #[]為可選參數(shù)

# 功能和pod update 一樣
bundle exec lg pod update [--no-reop-update --verobse] #[]為可選參數(shù)

如果沒有使用 bundler 通過第二種方式安裝的 lg_pod_plugin 使用下邊方式

# 功能和 pod install一樣
lg install [--no-reop-update --verobse] #[]為可選參數(shù)
lg install 
lg install --reop-update
lg install --no-reop-update --verobse

# 功能和pod update 一樣
lg update [--no-reop-update --verobse] #[]為可選參數(shù)
lg update 
lg update --reop-update
lg update --no-reop-update --verobse

每次輸入bundle exec lg pod install 比較麻煩, 可以寫個 shell 腳本來執(zhí)行
腳本默認(rèn)執(zhí)行lg update指令, 如果需要install 需要 ./pod.sh --install

#!/bin/sh
command=$1
if [ "$command" = "" ]
then  command="--update"
fi default="--install"
if [ $command = $default ] #注意這里的空格不能少!
then
    bundle exec lg install --no-repo-update --verbose
else
    bundle exec lg update --no-repo-update --verbose
fi

執(zhí)行 sh pod.sh或者 ./pod.sh 默認(rèn)執(zhí)行l(wèi)g update命令

sh pod.sh --install 或者 ./pod.sh --instal // 執(zhí)行l(wèi)g install命令

實驗數(shù)據(jù)

實驗條件

  1. 公司W(wǎng)IFI, 連接 VPN 對 github.com 下載加速. (盡可能的減少 cocoapods下載失敗概率, lg_pod_plugin 則不需要任何翻墻工具)

  2. 清空Pods目錄下的緩存, 分別使用 pod installlg install 去下載102 個pod 組件

安裝過程中執(zhí)行的腳本

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

實驗過程

pod install 耗時: 1612 秒, 約合 26.86 分鐘

安裝過程中 git clone 速度緩慢, 經(jīng)常卡主一兩分鐘不動, 這也是當(dāng)初為什么開發(fā) lg_pod_plugin 的初衷

[圖片上傳失敗...(image-6ef6b5-1669887929799)]
lg install 耗時: 178秒
安裝過程流暢, 基本上可以一次性下載所有依賴組件, 很少出現(xiàn)失敗的情況.

[圖片上傳失敗...(image-50595f-1669887929799)]

實驗結(jié)論

本次實驗結(jié)果并非準(zhǔn)確結(jié)果, 由于時間關(guān)系只做了一組實驗對比, lg_pod_plugin 速度至少可以達(dá)到 cocoapods 的 5 倍左右.

實驗結(jié)果受網(wǎng)絡(luò)速度影響很大, 最理想情況下 lg_pod_plugin 曾經(jīng)測試出 132 秒成績, 也就是 2 分多一點下載完 100 多個 pod 組件.

下載地址

Github: https://github.com/BestiOSDev/lg_pod_plugin (附 demo 測試工程)

Ruby Gems: https://gems.ruby-china.com/gems/lg_pod_plugin

溫馨提示

本產(chǎn)品并不能完全替代 pod install | update, 如果你在使用過程中出現(xiàn)錯誤, 請第一時間到 Github 提交 issue, 并暫時切換到 pod install/ update, 待本地開發(fā)環(huán)境運行穩(wěn)定后, 再部署到Jenkins 環(huán)境.

本產(chǎn)品對iOS工程入侵性很小, 當(dāng)lg_pod_plugin 出現(xiàn)某種 bug 時, 你完全可以使用 pod install | update 來安裝 pod, 避免了因為軟件 bug 導(dǎo)致影響團(tuán)隊開發(fā)工作無法進(jìn)行下去.

目前在小編自己公司項目和朋友公司的項目中運行穩(wěn)定, 潛在未知Bug需要更多的開發(fā)者使用才能被發(fā)現(xiàn), 因此需要大家多使用它并提出一些改進(jìn)的建議.

在此感謝 @小小牛要淡定 在開發(fā)期間和測試期間, 提出的很多建議和問題反饋.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衙耕,一起剝皮案震驚了整個濱河市昧穿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌橙喘,老刑警劉巖时鸵,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異厅瞎,居然都是意外死亡饰潜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門和簸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彭雾,“玉大人,你說我怎么就攤上這事锁保∈碓停” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵身诺,是天一觀的道長蜜托。 經(jīng)常有香客問我抄囚,道長霉赡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任幔托,我火速辦了婚禮穴亏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘重挑。我一直安慰自己嗓化,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布谬哀。 她就那樣靜靜地躺著刺覆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪史煎。 梳的紋絲不亂的頭發(fā)上谦屑,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音篇梭,去河邊找鬼氢橙。 笑死,一個胖子當(dāng)著我的面吹牛恬偷,可吹牛的內(nèi)容都是我干的悍手。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坦康!你這毒婦竟也來了竣付?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滞欠,失蹤者是張志新(化名)和其女友劉穎卑笨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仑撞,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡赤兴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隧哮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桶良。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沮翔,靈堂內(nèi)的尸體忽然破棺而出陨帆,到底是詐尸還是另有隱情,我是刑警寧澤采蚀,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布疲牵,位于F島的核電站,受9級特大地震影響榆鼠,放射性物質(zhì)發(fā)生泄漏纲爸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一妆够、第九天 我趴在偏房一處隱蔽的房頂上張望识啦。 院中可真熱鬧,春花似錦神妹、人聲如沸颓哮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冕茅。三九已至,卻和暖如春蛹找,著一層夾襖步出監(jiān)牢的瞬間姨伤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工熄赡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姜挺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓彼硫,卻偏偏與公主長得像炊豪,于是被迫代替她去往敵國和親凌箕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容