首页 > 代码库 > iOS制作静态包duplicate symbol解决办法
iOS制作静态包duplicate symbol解决办法
原文链接 http://stackoverflow.com/questions/41217839/duplicate-symbols-when-integrating-firebase-and-google-sign-in-sdks-manually-wit
制作静态包时我们很可能会引入第三方的库,这种时候很容易出现我们的静态包和主工程引入的第三方库有相同库的情况,为了解决这个问题上面链接给出了解决方案。
1、先制作一个静态包。
2、使用 lipo -info 查看这个静态包是不是fat file,如果是fat file就把它拆开成 x86_64.a,i386.a 这种多个机型的包
3、在我们得到的某个 文件不是fat file时 执行 ar -x i386.a 这个命令可以将这个静态库拆成多个.o文件,每个.o文件就是 我们工程中对所有.m文件的编译后的output。这时候选中我们引用的第三方库的.o文件全部删除。然后剩下的就是我们的代码了
4、将我们自己的所有.o文件再合在一起生成一个新的.a文件:lipo -static *.o -output i386_new.a 这种形式
5 、 运用上面的方法将所有上面生成的 arm_64.a,i386.a,x86_64.a都生成一份 *_new.a这种文件
6、重新合成:lipo create arm_64_new.a i386_new.a -output xx.a
7、合成的xx.a就是我们要的剔除了第三方库的最终静态包,添加到你的主工程,如果是装了pod的话,把 other linker flag 的-framework删除然后pod update
->Xcode run.
iOS制作静态包duplicate symbol解决办法