一分鐘大幅度降低iOS專案編譯時間

weixin_33716557發表於2017-07-10

專案二進位制化可以把第三方庫或者自己寫的模組打包成framework庫,減少編譯速度.
目的是專案只用編譯自己的程式碼 cocoapods引用的第三方不用編譯.cocoapods有現車的打包成framework方法,很多人不會用.
OC語言製作動態庫時支援iOS8+,iOS8以下版本只能打成靜態庫
Swift只能做成動態庫,Swift不支援靜態庫.(很多人說swift的是打包成靜態庫,都是錯誤的. cd 到framework根目錄,file 可執行檔名(exec黑色的檔名)顯示AFNetworking (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
) dynamically動態庫的意思


2510972-2b1612ef6aad35e9.png
螢幕快照 2017-07-10 10.48.11.png
  • cocoapods podfile裡面加上 use_frameworks!

use_frameworks! 作用是把三方庫打包成動態庫,引用swift第三方必須加上這句話,在使用swift第三方時候要在每一個檔案裡面引用 如 import SwiftyJSON

引入的OC第三方庫不要在橋接檔案引入,而是和用swift第三方一樣,在每一個檔案裡面引用 如 import AFNetworking

如果在橋接裡面引用,則專案用的是原始碼,不是framework,這樣編譯速度慢,直接在每個專案裡匯入模組,用的是framework,編譯速度快.

  • 在Targets->General-> Linked Frameworks and Libraries下面點選加號,workspace裡面的framework都可以直接在檔案裡面引用,沒有的oc第三方的只能在橋接檔案裡面引用,使用原始碼,這樣你的專案只用編譯自己的程式碼 cocoapods引用的第三方不用編譯

  • OC專案和swift一樣,podfile加上use_frameworks!,就ok拉

2510972-f9d9d4b999ed49d7.png
螢幕快照 2017-07-10 10.09.16.png

相關文章