Swift專案引入第三方庫的方法
以下,將建立一個Swift專案,然後引入3個庫:
- Snappy 簡化autolayout程式碼的庫
- SDWebImage 圖片載入,objc專案,通過標頭檔案bridge方式供swift使用
其中,前兩個是Swift的庫,SDWebImage
是Objc的庫。
專案跑起來是這個樣子:
做下面步驟之前,需要讓自己的專案是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 |
寫了個簡單的程式碼執行也沒有問題:
12345678910 |
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 |
使用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 ... |