1.新建一個(gè)工程,Target選擇Cocoa Touch Framework
2.TARGETS —> Build Settings 中設(shè)置相關(guān)項(xiàng)
1.Build Active Architecture Only 設(shè)置為NO的意思是當(dāng)前打包的.framework支持所有的設(shè)備.否則打包時(shí)只能用當(dāng)前版本的模擬器或真機(jī)運(yùn)行.
2.Build Setting 搜索linking 設(shè)置Dead Code Stripping 為NO是編譯選項(xiàng)優(yōu)化,包瘦身,(可不改) Mach-O Type 選中StaticLibrary (靜態(tài)庫) Xcode默認(rèn)是動(dòng)態(tài)庫.
3.設(shè)置framework最低支持的版本
TARGETS —> Build Phases設(shè)置相關(guān)項(xiàng)
將需要呈現(xiàn)給來的頭文件,直接從Project拖到Public中. 不想呈現(xiàn)出來的.h文件不建議拖到Private中. 放在project中即可
4.四舌胶、創(chuàng)建Framework打包腳本
在這個(gè)工程里面新建一個(gè)target升敲,選擇Cross-platform選項(xiàng)卡中的Aggregate答倡。
創(chuàng)建打包腳本
選擇這個(gè)target,然后點(diǎn)擊左上角+驴党,新建一個(gè)Run Script瘪撇。腳本如下(來源于網(wǎng)上,實(shí)測可用):
#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/${PROJECT_NAME}/"
#創(chuàng)建輸出目錄港庄,并刪除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"
#分別編譯模擬器和真機(jī)的Framework
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
#拷貝framework到univer目錄
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"
#合并framework倔既,輸出最終的framework到build目錄
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"
#刪除編譯之后生成的無關(guān)的配置文件
dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done
#判斷build文件夾是否存在,存在則刪除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi
rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
#打開合并后的文件夾
open "${UNIVERSAL_OUTPUT_FOLDER}"
五.編譯的時(shí)候如圖選擇鹏氧,build即可生成framework叉存,并自動(dòng)跳轉(zhuǎn)到framework當(dāng)前文件夾