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