设为首页 加入收藏

TOP

cocoapods导致的符号重复问题分析和解决
2015-07-20 17:15:44 来源: 作者: 【 】 浏览:2
Tags:cocoapods 导致 符号 重复 问题 分析 解决


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重名了。
问题解决。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 4635 强连通分量+缩点 下一篇hdu 3853 LOOPS 概率dp

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)
·使用华为开发者空间 (2025-12-27 04:19:24)
·Getting Started wit (2025-12-27 03:49:24)
·Ubuntu 上最好用的中 (2025-12-27 03:49:20)