iOS打包framework靜態(tài)庫(kù)

環(huán)境環(huán)境

  • Mac: 10.12.6
  • Xcode: 9.1

1. 創(chuàng)建項(xiàng)目

1.1 新建工程

1.2 添加文件

  • 把寫好的代碼文件拖入到項(xiàng)目里
  • 主頭文件中導(dǎo)入需要暴露的頭文件

1.3 設(shè)置Headers

Targets -> 項(xiàng)目名字 -> Build Phases -> Headers

  • 添加需要的頭文件,然后把需要暴露的頭文件拖入到 Public 區(qū)域

1.4 設(shè)置 Mach-O Type

2. 編譯項(xiàng)目,產(chǎn)生 .framework文件

2.1 校驗(yàn)生成的靜態(tài)庫(kù)支持的框架類型

  • 命令:lipo -info EncryptLib
  • 輸出結(jié)果:
    • 真機(jī)狀態(tài)編譯:Architectures in the fat file: EncryptLib are: armv7 arm64
    • 模擬器狀態(tài)編譯:Non-fat file: EncryptLib.framework/EncryptLib is architecture: x86_64

問題: 怎么才能編譯一次,同時(shí)支持真機(jī)和模擬器架構(gòu)呢?

答案:添加一個(gè)跨平臺(tái)的targets

3. 跨平臺(tái)

3.1 添加 Target

3.2 配置腳本

FMK_NAME=${PROJECT_NAME}
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
rm -r "${WRK_DIR}"
open "${INSTALL_DIR}"

3.3 現(xiàn)在新建的Target,編譯

3.4 校驗(yàn)生成的靜態(tài)庫(kù)支持的框架類型

  • 不管編譯的時(shí)候選擇的是真機(jī)還是模擬器,都兼容。
  • Architectures in the fat file: EncryptLib are: i386 x86_64 armv7 arm64
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容