Cocoapods 二進位制

peedkid發表於2019-04-23

什麼是元件二進位制化?

  • 在iOS開發中,事實標準是我們使用CocoaPods生成、管理和使用library。這裡的library就是一個模組、元件或庫。二進位制化指的是通過編譯把元件的原始碼轉換成靜態庫或動態庫,以提高該元件在App專案中的編譯速度。

為什麼我們需要二進位制化呢?

  • 在我們App開發中,我們逐漸的抽象了很多模組、業務、UI等把他轉換成私有CocoaPod庫。其中有很多我們自己的元件是用Swift寫的,原始碼格式為.Swift。在app專案編譯時.Swift部分程式碼編譯非常慢。 隨著業務的擴充套件,私有CocoaPod庫和第三方CocoaPod庫越來越多,App專案中的檔案也越來越多。每次pod install安裝新庫或pod update更新庫的時候,重新編譯的過程需要等待很長時間。這也向我們提出了加快編譯速度的需求。

下面是使用的工具個人理解上的對比,如果有不對的地方往指正和溝通,互相進步和學習


Cocopods元件二進位制外掛

  • 二進位制化後,可以看出我們編譯的target變少了,少了RxSwift.....這些target,這些就時間差的由來。
  • cocoapods-bin(是一個非cocoapods的開源專案)
    • 該外掛進行二進位制化的策略是採用雙私有源,即2個伺服器一個靜態伺服器儲存預先打好包的.a或者framework,一個是我們現在儲存原始碼的伺服器,在install的時候去選擇使用下載那個。
    • 該外掛優點缺點也十分明顯
      • 優點:原始碼和二進位制檔案之間可以來回切換,速度比較快
      • 缺點:原始碼的變動不能及時得到響應,而且需要第二個私有伺服器
  • cocoapods-packager(cocoapods的開源專案)
    • 該外掛是cocoapods的一個外掛,主要是來將私有庫打包成二級制的一個外掛,通過修改*.podspec檔案
    • 該外掛的優缺點:
      • 優點:可以將私有庫打包成二級制檔案,由元件本身去管理二進位制檔案,方便為主專案整合,私有庫變動等
      • 缺點:該庫已經有很長一段時間不維護了,很多問題都未解決,而且我們的元件裡依賴相對比較複雜,使用的Swift不能很好的支援。
  • cocoapods-binary(是一個非cocoapods的開源專案)
    • 該外掛是開源的Cocoapods推薦的的一個外掛,主要是來將Podfile裡所依賴的元件選擇性打包成二級制的一個外掛,通過修改Podfile檔案裡的內容
    • 該外掛的優缺點:
      • 優點:選擇性的在將那些元件使用二進位制,不需要多個服務去存二級制檔案,二進位制檔案在pod install的過程進行預編譯,生成的專案之間依賴framework。原始碼變動能比較快的得到相應
      • 缺點:二進位制切換到原始碼檔案的時候都會刪除已經打好的二級制檔案,下次切換需要重新編譯新的二級制檔案,這個過程比較耗時

Usage

在Podfile中加入以下內容

#引入外掛  
plugin 'cocoapods-binary'  
#一定要使用framework  
use_frameworks!  
#該值開啟後 預設所有的依賴都將開啟二進位制化  
#all_binary!  

#在依賴的元件後新增:binary => true/false 來切換原始碼和二級制 如果開啟了上面的all_binary!後預設都是true   
target "HP" do   
  pod "ExpectoPatronum", :binary => true  
end
複製程式碼

相關文章