標籤:
如果寫了一個Framework,根據Build時選擇的機器類型,會分為模擬器Framework和真機Framework,兩者是不能混用的。
此時可以通過配置一個Run Script,在Script中使用lipo命令來合并兩個版本的Framework,重建一個新的Framework,這個Framework將同時支援在模擬器和真機上運行。
在項目的Build Phases中,建立一個Run Script,輸入下面內容:
if [ "${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}/"#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
當項目再次Build時,就會在項目目錄下面出現Products目錄,裡麵包含了合并後的Framework檔案夾。
使用lipo -info來檢測下:
lipo -info 二進位檔案路徑(拖進來即可)
如果出現 :
x86_64 armv7 arm64
說明成功了!!!
閱讀: http://devonios.com/xcode-lipo-framework.html
iOS : 靜態庫(.framework)合并