玩轉 iOS 開發:Aggregate 指令碼版本《模擬器與真機靜態 Framework 合成教程》

CainLuo發表於2019-03-01

作者感言

為了寫這篇文章, 我翻查了許多資料, 都沒有找到詳細點的可參考資料, 外國的文章就不用說了, 光是看雞腸就頭暈了, 所以我自己總結了一些經驗, 整理了一番, 決定分享出來, 希望大家喜歡

最後:
如果你有更好的建議或者對這篇文章有不滿的地方, 請聯絡我, 我會參考你們的意見再進行修改, 聯絡我時, 請備註Aggregate-Framework如果覺得好的話, 希望大家也可以打賞一下~嘻嘻~祝大家學習愉快~謝謝~


簡介

之前我寫了一個關於非Aggregate版本的模擬器與真機靜態Framework合成教程, 但那個實在是太麻煩的, 所以我又出牆翻了一些歪果仁寫的部落格, 果然是世上無難事只怕有心人, 終於被我找到合適的Shell指令碼了


建立靜態包工程

新建一個Workpace檔案

0 | center | 1080x0

新建Cocoa Touch Framework工程

1 | center | 1080x0

2 | center | 1080x0

3 | center | 1080x0

4 | center | 1080x0


新增測試類

新增一個測試類TestTwoClass

5 | center | 1080x0


配置靜態包工程

6 | center | 1080x0

7 | center | 1080x0

8 | center | 1080x0

9 | center | 1080x0

10 | center | 1080x0

11 | center | 1080x0

12 | center | 1080x0


分別生成真機與模擬器的靜態包

13 | center | 1080x0

14 | center | 1080x0


建立指令碼選項

15 | center | 1080x0

16 | center | 1080x0

17 | center | 1080x0


配置指令碼選項

18 | center | 1080x0

開啟Run Script之後, 輸入以下的指令碼, 就可以自動合成通用的Framework庫了

PS: 指令碼是我在Google上搜到的, 詳細是誰寫的, 我也不清楚, 很感謝這個作者提供的指令碼

if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework

DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework

SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework


if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"

lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"

#open "${DEVICE_DIR}"
#open "${SRCROOT}/Products"
fi複製程式碼

19 | center | 1080x0

20 | center | 1080x0

這裡逮到一個錯誤, 不要慌, 因為我們之前是用Release模式的, 只要把Aggregate切換到Release模式, 再執行就可以了

21 | center | 1080x0

22 | center | 1080x0

23 | center | 1080x0

24 | center | 1080x0


檢測靜態包

25 | center | 1080x0

26 | center | 1080x0

27 | center | 1080x0


測試靜態包

測試的方法和模擬器與真機靜態Framework合成教程這裡面的測試方法一樣, 這樣就不多做解釋了

但是這裡還有一點需要注意一些, 由於我們剛剛在打包的時候, 是把TestTwoClass.h是丟到Private裡面去的, 哪怕我們已經把標頭檔案丟到TestTwo.h中, 然後再引用TestTwo.h, 依舊是沒辦法去呼叫TestTwoClass內部的任何東西, 怎麼辦呢?

我們只要去改改匯入的標頭檔案就可以了, 比如:

28 | center | 1080x0

PS: 這種方式只是我們來玩玩而已, 基本上我們都會吧.h檔案放到public


工程地址

專案地址: github.com/CainRun/Cre…


結束語

好啦, 教程到這裡就結束了, 謝謝大家的耐心觀看

相關文章