Objective c Cocoapods link_与XTest生成重复符号错误

Objective c Cocoapods link_与XTest生成重复符号错误,objective-c,xcode,cocoapods,Objective C,Xcode,Cocoapods,我有一个主项目,它将生成一个静态库(称之为MySDK)。我有一个组件(称之为Analytics)作为私有cocoapod 因此,我最终得到了如下文件结构: + MySDK - src + Pods + Pods - Analytics platform :ios, '7.0' link_with ['MySDK', 'MySDKTests'] pod 'Analytics', '0.0.1' Pod::Spec.new do |s| s.name

我有一个主项目,它将生成一个静态库(称之为
MySDK
)。我有一个组件(称之为
Analytics
)作为私有cocoapod

因此,我最终得到了如下文件结构:

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics
platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'
Pod::Spec.new do |s|
  s.name     = 'Analytics'
  s.version  = '0.0.1'
  s.platform = :ios
  s.summary  = "Analytics utility"
  s.homepage = 'http://google.com'
  s.author   = { 'Me' => 'me@me.com' }
  s.source   = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' }
  s.source_files = 'Analytics/**/*.{h,m}'
  s.requires_arc = true
  s.ios.deployment_target = '6.0'
end
每个项目都有自己的测试,但现在我需要做一些集成测试,所以在我的pod文件中我使用
link\u with
,但每当我这样做时,我甚至无法运行原始测试,因为我会得到一堆
重复符号
错误:

duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(Pods-dummy.o)
    /.../DerivedData/Build/Products/Release-iphonesimulator/libMySDK.a(Pods-dummy.o)
...
duplicate symbol _MYPREFIXFileTableIDColumnName in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(MYPREFIXDatabaseConstants.o)
    /.../Build/Products/Release-iphonesimulator/libMySDK.a(MYPREFIXDatabaseConstants.o)
所有错误都来自我的
分析
组件。所有导致问题的文件都有C函数(我直接处理sqlite)和/或(全局)常量,或者它们是类别,但它们都有前缀

我的
Podfile
如下所示:

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics
platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'
Pod::Spec.new do |s|
  s.name     = 'Analytics'
  s.version  = '0.0.1'
  s.platform = :ios
  s.summary  = "Analytics utility"
  s.homepage = 'http://google.com'
  s.author   = { 'Me' => 'me@me.com' }
  s.source   = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' }
  s.source_files = 'Analytics/**/*.{h,m}'
  s.requires_arc = true
  s.ios.deployment_target = '6.0'
end
我的
分析的podspec如下所示:

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics
platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'
Pod::Spec.new do |s|
  s.name     = 'Analytics'
  s.version  = '0.0.1'
  s.platform = :ios
  s.summary  = "Analytics utility"
  s.homepage = 'http://google.com'
  s.author   = { 'Me' => 'me@me.com' }
  s.source   = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' }
  s.source_files = 'Analytics/**/*.{h,m}'
  s.requires_arc = true
  s.ios.deployment_target = '6.0'
end
我犯这些错误有什么原因吗?我应该将这些文件编译为非arc文件还是使用一些特殊标志


有什么想法吗?

我终于成功了

我不应该把我的pod链接到
MySDKTests
,因为最终的产品(
MySDK
,一个库,已经链接到
分析

但是,我确实在我的
podspec
文件中添加了以下内容:

  s.public_header_files = 'Analytics/**/*.h'

  s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/Headers/Analytics"' }
第二行不是必需的,因为它没有修改我的
MySDKTests
target。我确实需要在我的
MyDSKTests
中添加
HEADER\u SEARCH\u路径
,以使这些HEADER可用于测试

我读到一些人成功地使用了
LIBRARY\u SEARCH\u路径
,但这对我不起作用。如果有人愿意解释原因,那就太好了,但现在我将把我的解决方案留给其他人,以防他们遇到类似的问题


查看相关信息

看起来您多次包含或导入了某些内容。我知道,但我不知道是什么。这些文件是cocoapods带来的,不应该包含/导入多次,有什么想法吗?“pod‘Analytics’、‘0.0.1’”这是你的私人pod吗?你能分享拥有私人豆荚的确切步骤以及如何整合它吗?@harshit2811我记不起确切步骤,但这里有一些信息,好的谷歌搜索会给你很好的指导()