Swift-Framework開發及使用(一)
阿新 • • 發佈:2018-11-03
在開發中我們常常會用到一些第三方 SDK 庫,使用時只需將 framework 檔案新增到專案中即可,十分方便。同樣地,我們也可以建立自己的 framework 框架,用來封裝一些常用的工具方法、框架類等。一來不會使原始碼完全暴露在外,二來也便於程式碼複用。
下面演示一個最基礎framework的開發及使用
一、framework的製作
- 新建一個工程,建立時選擇
iOS->Framework & Library
,如下圖所示
2. 在“General”->“Deployment Info”裡設定個較低的釋出版本,設定好之後的檔案目錄如下圖所示:
3. 之後我們在工程中建立一個測試類及一個測試方法,如下:
import UIKit
class MyTest: NSObject
{
class func sayHello()
{
print("Hello World")
}
}
但是需要注意的是:對於那些需要暴露出來,即在框架外部也能訪問使用的類、方便、變數前面需要加上關鍵字 Public。如果還允許 override 和繼承的話,可以使用 open 關鍵字。所以修改後的程式碼如下:
import UIKit public class MyTest: NSObject { public class func sayHello() { print("Hello World") } }
- 生成framework庫檔案
- 釋出編譯目標選擇“Generic iOS Device”後,使用快捷鍵 command+B 或者點選選單 Product > Build 進行編譯。這時生成的是真機除錯使用的 framework。
- 如果釋出編譯目標選擇的是模擬器,那麼編譯出來的模擬器使用的 framework。
- 分別編譯後我們可以選擇 專案中的
Products
->SDKDemoOne.framework
然後右鍵選擇Show in Finder
即可進入所在資料夾,這是我們可以看到分別對應於 真機 和 模擬器的連個資料夾,裡面各有一個.framework
二、framework的使用
- 引入framework
- 將生成的
SDKDemoOne.framework
新增到專案中來。(注意:要根據你是使用真機除錯還是模擬器除錯選擇對應的 framework) - 接著在“General”->“Embedded Binaries”中把
SDKDemoOne.framework
新增進來。這兩步完成之後的工程檔案目錄如下:
- 將生成的
- 使用
由於之前定義的是一個類方法,所以我們在需要使用的地方直接呼叫該方法即可,如下所示
import UIKit
import SDKDemoOne
class ViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
SDKTest.sayHello()
}
}
如此,即完成了這個framework的呼叫
三、常見問題
- 製作的Framework是動態庫、還是靜態庫?
- framework 檔案可以是動態庫,也可以是靜態庫。建立 framework 的時候預設是 Dynamic Library(即動態庫),像本文樣例就是動態庫。
- 如果要製作靜態庫,只需要編譯 framework 時指定Build Settings-< Mach-O Type 為 Static Library
- 開發的sdk怎麼同時支援模擬器和真機
- 首先我們先進入到真機和模擬器對應的靜態庫檔案路徑
- 開啟終端:使用如下命令:
lipo -create 模擬器檔案路徑/SDKDemoOne.framework/SDKDemoOne 真機檔案路徑/SDKDemoOne.framework/SDKDemoOne -output 輸出路徑/SDKDemoOne.framework
即可得到在真機和模擬器下均可使用的靜態庫檔案。