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重名了。

问题解决。

深入理解 CocoaPods

转自:http://objccn.io/issue-6-4/ CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖...
  • jinglijun
  • jinglijun
  • 2015年02月12日 18:37
  • 1046

解析一下这个makefile

include $(MTK_PATH_BUILD)/common.mk $(call all-modules-src-or-makefile,$(obj),CUSTOM_KERNEL_) obj-...
  • muojie
  • muojie
  • 2012年03月28日 19:00
  • 1124

Xcode 【错误:duplicate symbol _OBJC_METACLASS_$_类名 in:】

错误    "duplicate symbol _OBJC_METACLASS_$_类名 in:" 原因: 1.    90%都是因为#import了.m 文件(应该#import   ...
  • Felicity294250051
  • Felicity294250051
  • 2016年02月04日 11:55
  • 1723

深入理解 CocoaPods

转自:http://objccn.io/issue-6-4/ CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖...
  • jinglijun
  • jinglijun
  • 2015年02月12日 18:37
  • 1046

CocoaPods 命令和使用

CocoaPods 命令pod init 在新建的项目根目录下运行该命令,为当前项目新建podfile文件。 pod install 下载和配置 podfile里定义的项目依赖(不包括已经下载和配置...
  • ohyeahhhh
  • ohyeahhhh
  • 2016年07月11日 09:58
  • 2312

手动导入xmpp后,再使用cocoapods的时候出现的问题

手动导入xmpp后,再使用cocoapods的时候出现的问题,xmppcocoapods 最新的cocoapod导入xmpp的时候,会出现循环依赖,所以撸主选择了手动导入。 一开始还用...
  • linComeHere
  • linComeHere
  • 2016年02月26日 14:37
  • 628

CocoaPods 的安装步骤及常用终端命令

CocoaPods 的安装步骤及常用终端命令
  • yuner1029
  • yuner1029
  • 2016年02月27日 22:00
  • 1737

Cocoapods客户端的使用

下载安装好客户端,打开如下: Get started with CocoaPods : 是关于CocoaPods客户端的引导介绍 Search for Pods : 这个界面用来搜...
  • ruiruistyle__
  • ruiruistyle__
  • 2017年04月17日 16:25
  • 200

iOS---如何在CocoaPods上发布自己的项目

目前, 在iOS开发中, CocoaPods应该算是使用最为频繁的包管理工具了.
  • icetime17
  • icetime17
  • 2016年06月29日 00:05
  • 1211

CocoaPods报错整理

2015-08-17 更新: 问题2:Pods-resources.sh: Permission denied此问题常发生于在A电脑创建并导入pod的项目,在B电脑上编译发生: 解决:方法一:chm...
  • sinat_25544827
  • sinat_25544827
  • 2015年08月07日 15:47
  • 3065
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocoapods导致的符号重复问题分析和解决
举报原因:
原因补充:

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