IOS引入第三方冲突解决办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS引入第三方冲突解决办法相关的知识,希望对你有一定的参考价值。

最近项目组在做一些第三方功能的集成,不止一次的遇到第三方库冲突的问题,需要将冲突部分进行手动移除.

一般第三方的.a支持不同平台,需要将各个平台的冲突的xxx.o删除,才能解决引入冲突问题.

写了一个简单的脚本,可以删除冲突xxx.o,并且重新生成.a

参数${1}为与工程冲突的第三方功能的.a名称

参数${2}为冲突的.o文件名称

#!/bin/sh
DEVICE_ARCHS=("armv7" "armv7s" "arm64" "i386" "x86_64")
extra_count=${#DEVICE_ARCHS[@]}
for((i=0;i<extra_count;i++));do
mkdir -p ${DEVICE_ARCHS[i]}
done
for((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]}/*.o
done

rm ${1}.a
string=‘‘
for((j=0;j<extra_count;j++));do
string+=${DEVICE_ARCHS[j]}/${1}_${DEVICE_ARCHS[j]}.a‘ ‘
done

lipo -create ${string} -output ${1}.a

for((i=0;i<extra_count;i++));do
rm -rf ${DEVICE_ARCHS[i]}
done

样例:

sh ./xxx.sh libX xxx

 执行完成后libX.a中的xxx.o会被移除

以上是关于IOS引入第三方冲突解决办法的主要内容,如果未能解决你的问题,请参考以下文章

Android引入多个jar包,冲突问题解决方案

iOS合并lib(.a)库的可用方法(可用于解决duplicate symbol静态库冲突)

iOS项目中引用第三方库引发冲突的解决方法

com.android.support冲突的解决办法

项目引用Kotlin与databinding,ARouter,Architecture Components冲突解决办法

Android--记录莫名其妙的引用依赖冲突解决办法