Swift項目引入第三方庫的方法


以下,將創建一個Swift項目,然后引入3個庫:

其中,前兩個是Swift的庫,SDWebImage是Objc的庫。

源代碼見:https://github.com/MarshalW/SwiftWith3rdLibDemo

項目跑起來是這個樣子:

做下面步驟之前,需要讓自己的項目是git項目。

使用Snappy庫

Snappy庫,用於簡化AutoLayout布局的代碼。

和Objc項目不同,Swift項目沒有類似CocoaPods的庫依賴工具,而是使用git的submodule引入庫。目前來看更方便使用。

1. 創建submodule

在當前項目的目錄下執行:

1
git submodule add https://github.com/Masonry/Snappy.git

執行完會看到多了個Snappy目錄。

這樣的項目,如果git共享給其他人,他們除了clone項目以外,還需要:

1
git submodule update --init --recursive
2. 將Snappy.xcodeproj加入到Xcode項目中

如下圖所示,直接將文件拖拽過去即可:

3. 將Snappy.framework設置到項目中

Xcode打開項目的General,點擊+

然后,選擇Snappy.framework,加上它。

4. 編寫代碼測試

如果能正常import,Xcode不報錯,就應該沒有問題了:

1
import Snappy

寫了個簡單的代碼運行也沒有問題:


 
override func viewDidAppear(animated: Bool) {
println("super view: \(imageView.superview)")

let padding = UIEdgeInsetsMake(100, 100, 0, 0)

imageView.snp_makeConstraints { make in //autolayout
make.edges.equalTo(self.imageView.superview!).with.insets(padding)
return
}
}

使用SDWebImage庫

SDWebImage庫是Objc編寫的。引入的方式和Swift有所不同(從第3步開始)。

1. 創建submodule

這一步還是省不了的:

1
git submodule add https://github.com/rs/SDWebImage.git
2. 將SDWebImage.xcodeproj加入到Xcode項目中

3. 設置Target Dependencies

在這里:

加入:

看起來是這樣:

4. Link Binaray With Libraries

找到這里:

加入ImageIO.framework(iOS自帶的),以及libSDWebImage.a

5. 設置Other Linker Flags

在這里設置-ObjC

設置完了的樣子:

6. 創建Bridge頭文件

就是創建一個普通的頭文件,一般命名為項目名-Bridge-Header.h

7. 設置Bridge頭文件

找到這里:

雙擊箭頭標示的地方,會彈出文本框,將頭文件加進去即可。

我開始的時候是參照stackoverflow的回答,將頭文件直接拖拽進去,發現用的是絕對路徑。可以在拖拽后修改一下:

引入第三方庫的常見問題

目前主要碰到的問題是各個Swift第三方庫Deployment Target版本不一致。比如Alamofire是8.0,而Snappy是7.0,需要讓它們的版本是一致的。

會有類似這樣的報錯:

1
ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later ...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM