Just a Computer Graphics Studio & My Life

持續使用Cocoapods來管理第三方套件,主要還是以Objective C來開發專案的我,有時候需要使用Swift的Open Source,才發現靜態庫、動態庫、Framework的區別要好好了解一下:P~

iOS 靜態庫、動態庫、Framework的區別 cocoapods.png

開發過程中發現,若要透過Cocoapods引入第三方的Swift項目,必須加上use_frameworks!,否則會無法下載使用。

所謂的Framework就是一段編譯好的二進制文件,加上標頭檔,相關的資源文件就可供別人使用。描述一下三者差異:

  • 靜態庫:(.a)在編譯時會將庫拷貝一份到目標程序中,編譯完成之後,目標程序不依賴外部的庫,也能夠運行,不過缺點是會使應用程序變大。
  • 動態庫:(.dylib)在編譯時只存儲了指向動態庫的引用。可以多個程序指向這個庫,在運行時才加載,不會使體積變大,然而運行時加載會損耗部分性能,並且依賴外部的環境,如果庫不存在或者版本不正確則無法運行。
  • Framework:實際上是一種打包方式,將庫的二進制文件,標頭檔和有關的資源文件打包在一起,以方便管理和分發。

未來希望有機會來製作這三種「庫」來貢獻給其他開發者使用:)~

iOS 靜態庫、動態庫、Framework的區別

參考:podfile中use_frameworks! 和#use_frameworks!區別

廣告

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: