用 Xcode 8 建立 Swift 版本的 Framework

本文使用 Xcode 8.0 (8A218a) 來建立 Swift 版本的 Framework,並用 Swift 3 建立的 iOS App 來測試使用。

Part 1 — 建立 Framework

Step 1

點選 File → New → Project ,在畫面上方點選 iOS,下方點選在 Framework & Library 內的 Cocoa Touch Framework。

點選在 Framework & Library 內的 Cocoa Touch Framework

接下來我們這裡將 Product Name 命名為 SwiftFramework:

命名為 SwiftFramework

Step 2

進到 Xcode 專案畫面後,在專案設定主頁內將 Deployment Target 設定為 10.0,Devices 設定為 iPhone:

專案設定主頁內將 Deployment Target 設定為 10.0,Devices 設定為 iPhone

Step 3

建立一個 Class 名為 TestClass
點選 File → New → File ,在畫面上方點選 iOS,下方點選 Swift File:

將此 Swift 檔案取名為 TestClass:

此時的專案畫面如下:

Step 4

TestClass.swift 檔案內容如下,裡面建立了一個屬性名為 message,並在建構式 init 內將傳來的字串指定給他,最後建立了一個 method 名為 printMessage。在建構 Swift Framework 的過程中,這邊要特別注意 TestClass 及 printMessage 的存取權限都要設定為 public。

Step 5

因為這個 Framework 要執行在 iOS 實體機器上,所以我們要將建置目標設定為 Generic iOS Device,最後點選 Project → Build 進行建置:

Step 6

建置完成後,回到專案主畫面,可以看到在 Products 資料夾內出現了 SwiftFramework.framework,此時按右鍵點選 Show in Finder 後可以看到實體檔案:

到此 framework 就建立完成了(此 framework 為 Debug 版本)。

Part 2 — 建立 iOS App

Step 1

首先,點選 File → New → Project 建立一個 Single View Application 型的 Xcode 專案:

專案名稱設定為 TestClient,Devices 設定為 iPhone

Step 2

進入 Xcode 專案主畫面後,在設定畫面中找到 Embedded Binaries 區段:

此時將剛剛建置好的 Framework 拖曳進 Embedded Binaries 內:

拖曳進來之後會出現另外一個對話匡(要點選 Copy items if needed)

目前 Embedded Binaries 和 Linked Frameworks and Libraries 都會出現 SwiftFramework.framework 了。

Step 3

最後我們在 ViewController.swift 檔案內寫入以下的程式碼。我們在第 10 行引入了剛剛建置的 SwiftFramework,在 18 至 19 行建立一個物件 client,並且執行 printMessage method。

Step 4

最後請將一個 iOS 實機準備好,連接上 Mac 電腦後執行 Product → Run,你會看到在 Xcode 內的輸出畫面會依序顯示 Hello from Framework 以及 Hello from Client App,到此就全部完成了。