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.

时间: 2024-11-25 00:23:37

iOS制作静态包duplicate symbol解决办法的相关文章

xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误

一:场景 xcode 同时引入了 libA.a, libB.a 两个静态类库,如果 这两个静态类库之中,都打包了,相同的库,方法之类的, 且 xcode 的 other link flag 为 -all_load 时,就会出现 上述 静态类库,重复编译错误: 二:解决方法 1:把xcode 的 other link flag 里面的 -all_load 去掉:有 force-load 的也去掉: 2:第二个办法是 把 libA.a ,libB.a 里面的 冲突 内容 在任意一方的 libxx.a

iOS开发百度地图常见问题及解决办法

1.64bit模拟器不能正常工作 解决:请将Xcode5 的 Project -> Edit Active Target -> Build Settings -> Linking -> Other Linker Flags 中的"-ObjC"修改为"-all_load" 2.程序死在 _mapView = [[BMKMapView alloc] init]; 解决:很可能是由于没有在appDelegate里面初始化_mapManager 3.

兔子--Android Support v4包丢失的解决办法

在开发中,Android Support v4包丢失的解决办法: Project->properties->Java Build Path->Libraries->Add External Jars 中加入sdk目录下的extras/android/support/v4/android-support-v4.jar (如果找不到,则需要用sdk manager下载android support package)

ios 静态库冲突的解决办法

最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理解,我来深入的写一写. 我的开发环境 Mac OS X 10.10.1 Xcode 6.1.1 (6A2008a) Cocos2d-x 3.2 新浪微博 SDK for iOS 2015 年 1 月 5 日从 github clone 的版本 遇到的问题 根据新浪微博 SDK 附带的文档接入项目后,

IOS 开发中遇到 duplicate symbol 解决方案

项目中需要引入第三方库,并且Xcode升级到了7.1,然后发现出现了近2000过个duplicate symbol的错误提示,仔细查看定位到两个.a文件,有很多的.o文件冲突了. 因为这两个是第三方的,自己没法修改,所以求助网络资料,得出下列两种解决方案. 方案一:修改other linker flag 在Build Settings->Other link flags中删除所有的-all_load与-force_load 方案一结果:没有解决我项目上的问题 据我所知,方案一可以解决部分dupl

COCOS2D-X项目在XCODE没有IOS Simulator,无法仿真的解决办法

我把WIN7下用VS2012做好的项目移植到IOS,在OSX环境下用cocos new 生成一个项目,把原来的classess和Resources覆盖新生成的XCODE项目,,然后用XCODE打开项目添加好上述文件,如下图: 默认的scheme是libcocos2d IOS项目,有IOS SIMULATOR,但是 这个项目是无法启动仿真器的. 而我需要的是下图的SCHEME,但是不是默认的,而且没有IOS SIMULATOR供选用: 解决办法如下: 第一步: 第二步: 第三步: 第四步: 这样生

【转】eclipse导入V7包出现错误解决办法

android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现了actionbar,如果要使用actionbar,那么手机系统必须在3.0以上才能使用,这样将会导致很多用户不能安装apk从而损失用户:(有人会想,为什么不直接将新出来的东西全部打包到sdk中而是提供各种支持包?我是这样理解的,比如:如果将原生actionbar直接打包到低版本的sdk包中,而低版

Android项目路径改变后,libs文件夹内的包miss的解决办法

今天用因为用git,所以把项目移出了workspace(git不推荐将repository放到workspace里面),然后就报错: Archive for required library XXX in project cannot be read or is not a valid ZIP file 发现项目下的Android Private Libraries有个红叉. 项目右键-->Java Build Path,发现Android Private Libraries下的包的路径还是wo

maven依赖包下载失败解决办法

原文:http://www    .zuidaima.com/question/2535347150441472.htm maven依赖包下载失败 比如:Missing artifact org.codehaus.jackson:jackson-mapper-asl:jar:1.9.9 这种问题即使使用Project=>Clean来重新Buil项目都不行,因为这个操作是属于项目重新编译,而该问题是依赖包问题,所以只有在依赖包正常的情况下操作才会成功,解决办法就是maven clean 操作步骤如