Podfile中的 use_frameworks!

ZhugeZhan發表於2016-10-05

use_frameworks!

A、用cocoapods 匯入swift 框架 到 swift專案和OC專案都必須要 use_frameworks!
B、使用 dynamic frameworks,必須要在Podfile檔案中新增 use_frameworks!

(1)如果在Podfile檔案裡不使用 use_frameworks! 則是會生成相應的 .a檔案(靜態連結庫),通過 static libraries 這個方式來管理pod的程式碼。   

(2)Linked:libPods-xxx.a包含了其它用pod匯入的第三方框架的.a檔案。

(3)如果使用了use_frameworks! 則cocoapods 會生成相應的 .frameworks檔案(動態連結庫:實際內容為 Header + 動態連結庫 + 資原始檔),使用 dynamic frameworks 來取代 static libraries 方式。   

(4)Linked:Pods_xxx.framework包含了其它用pod匯入的第三方框架的.framework檔案。

use_frameworks! -> dynamic frameworks 方式 -> .framework
#use_frameworks! -> static libraries 方式 -> .a

關於Library 和 Framework 可以參考:
http://blog.lanvige.com/2015/…

(1)swift專案cocoapods 預設 use_frameworks!
(2)OC專案cocoapods 預設 #use_frameworks!

用cocoapods匯入OC框架到swift專案:

(1)#use_frameworks! 必須建立標頭檔案,在標頭檔案裡面 #import “AFNetworking.h”

(2)use_frameworks! 如果有標頭檔案,在標頭檔案裡面 #import “AFNetworking/AFNetworking.h”,其它swift檔案中用到不需要再import;如果沒有標頭檔案,則在每個需要用到的swift檔案裡 import AFNetworking。

用cocoapods匯入swift框架到swift專案:

(1)必須use_frameworks!

(2)不需要標頭檔案,在需要用到框架的swift檔案裡 import Alamofire

用cocoapods匯入OC框架到OC專案:

(1)#use_frameworks! 在需要用到的檔案裡 #import “AFNetworking.h”;也可以通過pch檔案,用法類似swift中的標頭檔案。

(2)use_frameworks! 與(1)類似,用法上沒有區別。

用cocoapods匯入swift框架到OC專案:不考慮

總結:

(1)用swift專案考慮到會使用 OC 和 swift 兩種第三方框架,所以Podfile中使用swift專案預設的 use_frameworks! 更為妥當,並且frameworks動態連結庫具有一定的優勢。

(2)可以建立一個Bridge標頭檔案,用來import那些OC框架的.h檔案:#import “xxx/xxx.h”。或者不建標頭檔案,像swift框架一樣,直接在需要用到的swift檔案中import。

相關文章