cocoapods导致的符号重复问题分析和解决

原创 2015年02月26日 21:42:35


xplayer工程用了Pods,xplayerdemo_pods工程引用xplayer时又用了Pods,导致如下的链接错误:

duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods

类似:
duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
    /Users/erikkerber/Dropbox/Projects/MillMain/MyLib.framework/BuddySDK(Pods-dummy.o)
    /Users/erikkerber/Library/Developer/Xcode/DerivedData/MillMain-fngfqhlslygksgcfuciznkpqfrbr/Build/Products/Debug-iphonesimulator/libPods.a(Pods-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods in:
    /Users/erikkerber/Dropbox/Projects/MillMain/MyLib.framework/BuddySDK(Pods-dummy.o)
    /Users/erikkerber/Library/Developer/Xcode/DerivedData/MillMain-fngfqhlslygksgcfuciznkpqfrbr/Build/Products/Debug-iphonesimulator/libPods.a(Pods-dummy.o)
ld: 2 duplicate symbols for architecture i386


**********************尝试删除**********************
一种办法是把demo工程里Link Binary with Libraries里的libPods.a的引用删除即可。
但是这个方法无法用于自动构建,得寻找其他方案。


我们来看符号重复的原因:
xplayer这个静态库工程用了Pods,所以编译链接了Pods-dummy.m文件。


而xplayerdemo_pods又用了Pods,又编译链接了新的Pods-dummy.m文件。
导致了PodsDummy_Pods这个类重复。
所以思路是想办法移除或重命名其中的一个Pods-dummy.m文件。
发现移除是不可行的,会导致无法生成libPods.a。


**********************尝试重命名**********************
现在来试重命名。
首先想到的是将xplayer里的Pods-dummy.m文件重命名,方法如下:
修改xplayer的Podfiles文件
platform :ios, ‘5.0'
target xplayer do
pod 'CocoaHTTPServer', '= 2.3'
pod 'Reachability', '~> 3.0
end


这样xplayer工程生成的dummy类是PodsDummy_Pods_xplayer。
此时Build xplayerdemo_pods工程会报错说PodsDummy_Pods_xplayer这个符号重复了: 这是因为xplayerdemo_pods的Pods包含了xplayer, 生成了第二个PodsDummy_Pods_xplayer类。
如果我们能修改target xplayer do里的”xplayer”为其他字符串就好了,但是目前没有找到这种解决方案。


现在剩下的办法是将xplayerdemo_pods里的Pods-dummy.m文件重命名,方法如下:
修改xplayerdemo_pods的Podfiles文件如下
platform :ios, '5.0'
target :xplayerdemo_pods do #增加target语句
  pod 'xplayer', :podspec => 'http://repo.xx.com/specs/xplayer/0.0.1/xplayer.podspec'
end
这样xplayerdemo_pods工程生成的dummy类是PodsDummy_Pods_xplayerdemo_pods。
这样就不会和xplayer包含的dummy类PodsDummy_Pods重名了。

问题解决。

相关文章推荐

M了个J大神的MJRefresh

支持哪些控件的刷新 UIScrollView、UITableView、UICollectionView、UIWebView 如何使用MJRefresh cocoapods导入:pod...

使用CocoaPods引入第三方库依赖冲突

问题描述 最近初期就引入了pod ‘MBProgressHUD’, ‘~> 1.0.0’最新的版本,后面由于项目需求需要用到其他第三方库,但当前库中又依赖了MBProgressHUD而且制定了版本号为...

OC 静态库.a引用第三方框架冲突解决问题

最近在搞静态库,之前没有接触过,在制作过程中各种问题,尤其是我使用的第三方库(AFN 为例子),网络上大底有三种解决方案: 在使用时直接将AFN打进静态库,当项目使用静态库并且也用了AFN 时:直接将...

CocoaPods私有库创建遇到的问题

一、前言在iOS开发中,为了满足企业内部的一些组件化需求,往往需要创建一些公用的代码,这些公用代码往往是不希望被公开的,此时一般可以选择submodule或者CocoaPods库的形式。如果选用sub...

iOS系列译文:深入理解 CocoaPods

本文由 伯乐在线 - programmer.du 翻译自 Michele Titolo。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。 Cocoapods是 OS X 和 iOS 下...

iOS 第三方框架 - CocoaPods的安装、使用、原理

介绍 CocoaPods 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它...

CocoaPods 版本管理冲突 解决

近期在项目中首次使用了CocoaPods。从软件工程的角度来看,我对目前常见的CocoaPods使用方法有些意见,建议做一些改进。先说一下我建议的最佳实践,后面再分析为什么要这样做。并且希望大家根据自...

CocoaPods使用详解和pod install/pod update Generating Pods project 更新慢的问题

作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/18737437 转载请注明出处 如果觉得文章对你有所帮助,请通过留...

pod install失败:Generating deterministic UUIDs

当我又安转了一个新版本的 Xcode 后,用这个新版本的 Xcode新项目,然后用 pod  install的时候出现:   - Writing Xcode project file to `Pod...

Cocoapods多模块开发

阅读此文章之前你需要对cocoapods有基本的了解,这里给大家附上几篇文章: IOS依赖管理 - CocoaPods(PS:就在前几天安眠重装了系统,重新安装cocoapods发现跟以前有点点...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocoapods导致的符号重复问题分析和解决
举报原因:
原因补充:

(最多只允许输入30个字)