相關資料有這些:
用了一個很少見的file 指令來做合併,不推薦
寫了一個模組來自動產生,但是有些微調的地方還是不夠
詳細作法,但這篇有點舊 還在ios SDK 3.x
所以....看了一堆對岸同胞的文章,作法簡敘如下:
其實只是這篇文章的中文翻譯
比如說我有一個專案叫做CPI,裡面有一堆檔案,按下build了以後會做出一個叫libCpi.a 的library
- 先用實機build一次,應該會build出實機的.a 檔
- 切成simulator 再build 一次
- add new Target ,選iOS 裡面的Other ,創一個Aggrete ,取一個甲意的專案名
- 去 Build Settings裡面改PRODUCT_NAME ,改成原本build library 的那個專案名:CPI
- 切到 Build Phases,按右下角 Add Build Phase 然後點Add Run Script
- 中間會跑出來讓你填script 的欄位,填入
LIB_TARGET_NAME="CPI" if [ "${ACTION}" = "clean" ] then echo "Cleaning Libraries..." cd "${PROJECT_DIR}" xcodebuild -target "$LIB_TARGET_NAME" -configuration ${CONFIGURATION} -sdk iphoneos clean xcodebuild -target "$LIB_TARGET_NAME" -configuration ${CONFIGURATION} -sdk iphonesimulator clean fi if [ "${ACTION}" = "build" ] then echo "Building Libraries" cd "${PROJECT_DIR}" xcodebuild -target "$LIB_TARGET_NAME" -configuration ${CONFIGURATION} -sdk iphoneos xcodebuild -target "$LIB_TARGET_NAME" -configuration ${CONFIGURATION} -sdk iphonesimulator # Check that this is what your static libraries are called ARM_FILES="${PROJECT_DIR}/build/${CONFIGURATION}-iphoneos/lib${LIB_TARGET_NAME}.a" I386_FILES="${PROJECT_DIR}/build/${CONFIGURATION}-iphonesimulator/lib${LIB_TARGET_NAME}.a" mkdir -p "${PROJECT_DIR}/build/Universal" echo "Creating library..." lipo -create "$ARM_FILES" "$I386_FILES" -o "${PROJECT_DIR}/build/Universal/lib${PRODUCT_NAME}.a" fi
重點結論,這個script 會在原資料夾下面/build/Universal ,做出一個universal 的library,
之後要用的時候就把.a 檔跟有用到的.h 檔加進專案就好了。
檢查方法如下:
去terminal 打 lipo -info library 的位置,正常的話會出現armv7 跟i386
沒有留言:
張貼留言