码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-26 23:03:26      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:pods   duplicate symbol   podsdummy   解决   重复   



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导致的符号重复问题分析和解决

标签:pods   duplicate symbol   podsdummy   解决   重复   

原文地址:http://blog.csdn.net/lwl_ls/article/details/43956433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!