首先我們要了解下靜態庫和動態庫還有Framework。
靜態庫:(.a)在編譯時會將庫copy壹份到目標程序中,編譯完成之後,目標程序不依賴外部的庫,也可以運行。缺點: 會使應用程序變大。
動態庫:(.dylib)編譯時只存儲了指向動態庫的引用。可以多個程序指向這個庫,在運行時才加載,不會使應用體積變大,但是運行時加載會損耗部分性能,並且依賴外部的環境,如果庫不存在或者版本不正確則無法運行(我的項目無法運行就是這壹步出問題了)。
Framework:實際上是壹種打包方式,將庫的二進制文件,頭文件和有關的資源文件打包到壹起,方便管理和分發。
CocoaPods 通過use_frameworks來控制是否是用Framework。
如果不使用use_frameworks!則會使用static libraries 方式生成.a文件。
如果使用use_frameworks!則會使用dynamic frameworks 方式生成.framework文件。
在純oc的項目中,壹般不使用frameworks,但是在pod導入的swift項目,必須要使用use_frameworks!,我這個flutter項目也是用pod導入的第三方庫,所以必須加入use_frameworks!,特此記錄下,免得以後踩同樣的坑!