標籤:
最近項目組在做一些第三方功能的整合,不止一次的遇到第三方庫衝突的問題,需要將衝突部分進行手動移除.
一般第三方的.a支援不同平台,需要將各個平台的衝突的xxx.o刪除,才能解決引入衝突問題.
寫了一個簡單的指令碼,可以刪除衝突xxx.o,並且重建.a
參數${1}為與工程衝突的第三方功能的.a名稱
參數${2}為衝突的.o檔案名稱
#!/bin/shDEVICE_ARCHS=("armv7" "armv7s" "arm64" "i386" "x86_64")extra_count=${#DEVICE_ARCHS[@]}for((i=0;i<extra_count;i++));domkdir -p ${DEVICE_ARCHS[i]}donefor((j=0;j<extra_count;j++));do echo ${DEVICE_ARCHS[j]} lipo ${1}.a -thin ${DEVICE_ARCHS[j]} -output ${DEVICE_ARCHS[j]}/${1}_${DEVICE_ARCHS[j]}.a cd ${DEVICE_ARCHS[j]} && ar xv ${1}_${DEVICE_ARCHS[j]}.a rm -rf ${DEVICE_ARCHS[j]}/${1}_${DEVICE_ARCHS[j]}.a rm ${2}.o cd .. && ar rcs ${DEVICE_ARCHS[j]}/${1}_${DEVICE_ARCHS[j]}.a ${DEVICE_ARCHS[j]}/*.o rm -rf ${DEVICE_ARCHS[j]}/*.odonerm ${1}.astring=‘‘for((j=0;j<extra_count;j++));dostring+=${DEVICE_ARCHS[j]}/${1}_${DEVICE_ARCHS[j]}.a‘ ‘donelipo -create ${string} -output ${1}.afor((i=0;i<extra_count;i++));dorm -rf ${DEVICE_ARCHS[i]}done
範例:
sh ./xxx.sh libX xxx
執行完成後libX.a中的xxx.o會被移除
IOS引入第三方衝突解決辦法