SDK/framework開發(fā)中的痛點(diǎn)
在開發(fā)SDK/framework過程中我們需要有一個demo來測試我們的SDK肛响。而每次對SDK代碼進(jìn)行修改后都必須手動切換到SDK編譯一次亲茅,讓工程生成最新的SDK,這樣操作很煩么库,那我們今天就把這個痛點(diǎn)解決掉。
本文只講如何在運(yùn)行demo時自動編譯最新的SDK甘有,SDK的其他設(shè)置就先忽略了诉儒。
一、創(chuàng)建SDK工程亏掀。
二忱反、添加用于測試的demo target泛释。
三、編譯framework 并 引入demo中缭受。
四、添加一個Aggregate類型的target米者,用于運(yùn)行腳本韭畸。
五、在demo每次編譯前替換最新的SDK蔓搞。
在Aggregate的target里創(chuàng)建Run Script胰丁。
#!/bin/sh
# 取得build的target名(get project name)
FRAMEWORK_NAME=${PROJECT_NAME}
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/Products"
UNIVERSAL_PRODUCT_PATH="${UNIVERSAL_OUTPUT_FOLDER}/${FRAMEWORK_NAME}.framework"
#創(chuàng)建輸出目錄,并刪除之前的framework文件
if [ ! -d "${UNIVERSAL_OUTPUT_FOLDER}" ];then
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
fi
if [ -d "${UNIVERSAL_PRODUCT_PATH}" ];then
rm -rf "${UNIVERSAL_PRODUCT_PATH}"
fi
# 設(shè)置真機(jī)和模擬器生成的靜態(tài)庫路徑 (set devcie framework and simulator framework path) ${TARGET_NAME}
DEVICE_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework"
SIMULATOR_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework"
#分別編譯模擬器和真機(jī)的Framework
xcodebuild -target "${FRAMEWORK_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${FRAMEWORK_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
#拷貝framework到univer目錄
cp -R "${DEVICE_DIR}" "${UNIVERSAL_OUTPUT_FOLDER}"
#移除 iphonesimulator 里的 arm64
lipo -remove arm64 "${SIMULATOR_DIR}/${FRAMEWORK_NAME}" -output "${SIMULATOR_DIR}/${FRAMEWORK_NAME}"
#合并framework喂分,輸出最終的framework到build目錄
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}" "${DEVICE_DIR}/${FRAMEWORK_NAME}" "${SIMULATOR_DIR}/${FRAMEWORK_NAME}"
#判斷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}"
六、在demo里添加Target依賴蒲祈,依賴Aggregate甘萧。