展会信息港展会大全

cocoapods导致的符号重复问题分析和解决,cocoapods符号
来源:互联网   发布日期:2015-09-28 13:27:29   浏览:2516次  

导读: cocoapods导致的符号重复问题分析和解决,cocoapods符号 xplayer工程用了Pods,xplayerdemo_pods工程引用xplayer时又用了Pods,导致如下的链接...

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

问题解决。

http://www.bkjia.com/Androidjc/961549.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/961549.htmlTechArticlecocoapods导致的符号重复问题分析和解决,cocoapods符号 xplayer工程用了Pods,xplayerdemo_pods工程引用xplayer时又用了Pods,导致如下的链接错误: d...

赞助本站

人工智能实验室

相关热词: android开发 android教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港