我正在使用可可豆荚将多个第三方文件整合到我的项目中。
我必须将pod下面集成到我的项目中
xcodeproj 'MyApp'
workspace 'MyApp'
source 'https://github.com/CocoaPods/Specs.git'
target :"MyApp", :exclusive => true do
platform :ios, '7.0'
pod 'AFNetworking', '2.0.2'
pod 'TwilioSDK', '~>1.2.2'
pod 'SocketRocket', '0.3.1-beta2'
pod 'AppRTC'
end
当我运行pod安装时。我得到重复,如下所示..
当我构建我的应用程序时,我收到错误
ld: warning: directory not found for option '-L/Users/anand/Documents/
Project/myApp_Backups/myApp_June/myApp_WEBRTC/Pods/build/Debug-
iphoneos'
duplicate symbol _MD5_Update in:
/Users/anand/Documents/Project/myApp_Backups/myApp_June/
myApp_WEBRTC/Pods/AppRTC/Lib/libWebRTC.a(nss_static.md5.o)
/Users/anand/Documents/Project/myApp_Backups/myApp_June/
myApp_WEBRTC/Pods/TwilioSDK/Libraries/libcrypto.a(md5_dgst.o)
duplicate symbol _SHA1_Update in:
duplicate symbol _OBJC_IVAR_$_SRIOConsumer._readToCurrentFrame in:
/Users/anand/Library/Developer/Xcode/DerivedData/myApp-
gxdbyoohznnpigavdqmaeilzlavd/Build/Products/Debug-iphoneos/libPods-
myApp-SocketRocket.a(SRWebSocket.o)
/Users/anand/Documents/Project/myApp_Backups/myApp_June/
myApp_WEBRTC/Pods/AppRTC/Lib/libWebRTC.a(socketrocket.SRWebSocket.o)
ld: 71 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我想在下面做一些解决方案:
1)删除SRWebSocket.h文件 - 但它可能会出现在Pods中的错误。
2)删除pod' SocketRocket',0.3.1-beta2'从pod文件和运行pod安装 - 但我在我的项目中使用了SRWebSocket.h和SRWebSocket.m,然后将AppRTC安装到我的项目中..!
请建议我该如何解决这个问题..
先谢谢..!
答案 0 :(得分:2)
我已修复上述问题
在我的Xcode项目中 - 构建设置 - 其他链接器标志 - 我删除了-all_load
,然后一些重复的错误消失了。
在上述解决方案之后,我仍然收到Socket Rocket重复警告。
我通过转到Pods项目 - 选定的套接字Rocket pods目标来修复此问题 - 从编译中删除了SRWebSocket.m
文件。它工作正常,重复删除。
感谢所有答案..
答案 1 :(得分:2)
您需要从libWebRTC.a
中删除socketrocket对象代码运行lipo -info libWebRTC.a
以查看库中的架构(当前版本是i386,armv7和arm64)
然后运行
lipo libWebRTC.a -thin i386 -output libWebRTC-i386.a
通过将i386替换为相关值,为每个体系结构执行此操作。然后,您需要从每个存档中提取目标文件。
mkdir libWebRTC-i386 && cd libWebRTC-i386 && ar -x ../libWebRTC-i386.a
为刚刚创建的每个新的单一体系结构库执行此操作。在每个新文件夹中,您将找到包含“socketrocket”的.o文件 - 删除这些文件。
然后重新存档每个架构的目标文件
libtool -static *.o -o ../libWebRTC-i386.a
完成后,将它们重新组合成一个胖库
lipo -create libWebRTC-armv7.a libWebRTC-arm64.a libWebRTC-i386.a -output libWebRTC.a
瞧,现在应该可以了。实际上libWebRTC.a二进制文件需要在没有套接字火箭对象代码的情况下重新构建,并且应该将套接字火箭添加为podspec的依赖项。
答案 2 :(得分:0)
在构建阶段,请检查您是否多次编译同一个文件。
在你的情况下,也许在编译源中有两个相同的m文件,只需删除一个并尝试重建。
答案 3 :(得分:0)
按照以下步骤解决复制符号错误。
1)选择您的Xcode项目>导航到“构建阶段”。
2)从那里,搜索要复制的文件名。
3)如果可能,那么搜索关键字可能会有多个“.m文件”。
4)删除除了需要实际编译的文件之外的所有文件。
5)同样遵循所有重复错误的过程
6)就是这样!你的问题肯定会得到解决。
答案 4 :(得分:0)
为AppRTC repo创建一个问题,以删除标头并设置对SRWebSocket的依赖。
作为临时解决方案 - 将AppRTC链接到具有:path
指令的本地路径,并从本地目录中删除此文件。或者您可以在exclude_files
config中的SRWebSocket标题上无效链接到本地podspec文件。
答案 5 :(得分:0)
https://github.com/kylef/cocoapods-deintegrate
运行此命令:
pod deintegrate
删除项目目录中的Podfile.lock文件
pod install
希望能解决你的问题。
答案 6 :(得分:0)