iOS : 靜態庫(.framework)合並


如果寫了一個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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM