持續使用Cocoapods來管理第三方套件,主要還是以Objective C來開發專案的我,有時候需要使用Swift的Open Source,才發現靜態庫、動態庫、Framework的區別要好好了解一下:P~
開發過程中發現,若要透過Cocoapods引入第三方的Swift項目,必須加上use_frameworks!,否則會無法下載使用。
所謂的Framework就是一段編譯好的二進制文件,加上標頭檔,相關的資源文件就可供別人使用。描述一下三者差異:
- 靜態庫:(.a)在編譯時會將庫拷貝一份到目標程序中,編譯完成之後,目標程序不依賴外部的庫,也能夠運行,不過缺點是會使應用程序變大。
- 動態庫:(.dylib)在編譯時只存儲了指向動態庫的引用。可以多個程序指向這個庫,在運行時才加載,不會使體積變大,然而運行時加載會損耗部分性能,並且依賴外部的環境,如果庫不存在或者版本不正確則無法運行。
- Framework:實際上是一種打包方式,將庫的二進制文件,標頭檔和有關的資源文件打包在一起,以方便管理和分發。
未來希望有機會來製作這三種「庫」來貢獻給其他開發者使用:)~
隨意留個言吧:)~