1. 程式人生 > >Swift專案引入第三方庫的方法

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
.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

在這裡:

加入:

看起來是這樣:

找到這裡:

加入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 ...