前言
有時候我們會想把專案裡的某些小功能打包起來,如此一來可以方便自己和其他開發者使用。針對 framework 檔,開發者不需要知道檔案裡面的實作細節,只要正確使用其中的方法和屬性,framework 就能幫開發者達成某些功能。
準備原始碼,決定公開和私有的檔案
在 Xcode 環境下建立 framework project
Menu bar: file/ New/ Project
選擇 Cocoa Touch Framework 建立一個框架專案檔
加入原始碼,設定環境
把 framework 所有原始碼加入 Xcode
決定欲公開的檔案
將欲公開的檔案加入 frameworkName.h
在 framework TARGET 下的 Build Phase 標籤頁中添加欲公開的 header 檔
將 Headers 欄中 Project 項目下欲公開的 header 檔拖曳至上方的 Public 項目下。此步驟的「欲公開的 header 檔」與前一步的#import
項目相同。(Optional)合併實機和模擬器的 framework
點選 Build Phase 左上方的加號,加入 run script 讓實機與模擬器的 framework 合併。複製以下的程式碼加入 Run Script 欄的灰色框內。
123456789101112131415161718192021if [ "${ACTION}" = "build" ]thenINSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.frameworkDEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.frameworkSIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.frameworkif [ -d "${INSTALL_DIR}" ]thenrm -rf "${INSTALL_DIR}"fimkdir -p "${INSTALL_DIR}"cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"open "${SRCROOT}/Products"fi加完後如下圖所示:
建立 framework 檔
首先,在 framework project 的模擬器建立 framework 檔(cmd + B)
在建立模擬器的 framework 時會出現 build failed 的警告,請不要驚慌,這是因為此時實機的 framework 尚未建立,執行這段 script 時無法將實機和模擬器的 framework 合併。
接著選擇 Generic iOS Device 再 build 一次。
最後我們可以在自動開啟的 Products 資料夾下看見建立好的 framework 檔。