1.首先把其中一个冲突的库文件拷贝到一个新的文件夹里,用命令cd切换到当前文件夹,用 lipo -info libx.a(这个.a文件就是冲突的库文件名)查看是否支持多平台,查看包信息:lipo -info libx.a 如果提示fat file,例如armv7,arm64等,如果支持多平台,需要我们逐一进行解包重打包操作,如果不支持多平台,只需执行一次以免的操作[1-6]即可。支持多平台armv7执行[1-6]后,把下面的armv7换成arm64在执行一遍。
1. 创建临时文件夹,用于存放armv7平台解压后的.o文件:mkdir armv7
2. 取出armv7平台的包:lipo libx.a -thin armv7 -output armv7/libx-armv7.a
3. 查看库中所包含的文件列表:ar -t armv7/libx-armv7.a
4. 解压出object file(即.o后缀文件):cd armv7 && ar xv libx-armv7.a
5. 找到冲突的包(比如ASI),删除掉。命令: rm 冲突的类
比如WXApiObject.o冲突了,就用命令: rm WXApiObject.o
6. 重新打包obje,把.o文件合成.a文件的命令 在当前文件夹下或者使用全路径 libtool -static -o ../libx-armv7.a *.o (从.o文件中合并成静态库:)
执行完上述操作之后,在armv7和arm64文件夹下各有一个.a文件,我们需要把这个.a文件合成一个来支持多平台。
.把两个支持不同平台的.a文件合成一个的命令 把文件放到一个文件夹里 或则使用全路径
lipo -create -output libx.a(最终的.a文件) libx-armv7.a libx-arm64.a
framework 冲突也是一样,把framework里编译的没有后缀的文件,修改后缀为.a文件,剩下的按.a文件处理,最后把处理后.a文件去掉后缀,在替换成原来的没有后缀的文件,注意去掉后缀的时候有可能只是隐藏了这个.a后缀,查看文件简介确认。