質問

静的ライブラリを生成するこのメインプロジェクトを持っています(MySDKを呼び出します)。私はプライベートCocoApodとしてコンポーネント(Analyticsを呼び出します)。

だから私はこのようなファイル構造になります:

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics
.

各プロジェクトはそれ自身のテストを持っていますが、今度は私のpodfileでいくつかの統合テストをする必要があります。

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)
.

すべてのエラーが私のlink_withコンポーネントから来ています。問題を引き起こすすべてのファイルは c関数(私は直接SQLiteを扱っています)および/または(global)定数、またはそれらはカテゴリしかし、彼らはすべて前に接頭辞付きです。

My duplicate symbolは次のようになります。

platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'
.

AnalyticsのマイPODSCPECは次のようになります。

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
.

私がこれらのエラーを得る理由はありますか?これらのファイルを非アークとしてコンパイルするか、いくつかの特別な旗を使用する必要がありますか?

任意のアイデア

役に立ちましたか?

解決

私はついにそれを働かせました!

最終製品(MySDKTests、ライブラリーは既にMySDKに対して既にリンクしていた)以来、PODをAnalyticsにリンクさせてはいけません。

しかし、私のpodspecファイルに次のものを追加しました:

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

  s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/Headers/Analytics"' }
.

2行目は、MySDKTestsターゲットを変更していないため、実際には必要ありません。HEADER_SEARCH_PATHSMyDSKTestsを追加して、それらのヘッダーをテストで利用できるようにしました。

代わりにLIBRARY_SEARCH_PATHSを正常に使用することを読みましたが、これは私のためには機能しませんでした。誰かがその理由を説明しなければならないのなら、それは素晴らしいことですが、今のところ私は彼らが同様の問題に遭遇した場合には他の人々のために私の解決策を残します。

関連情報の他の質問関連情報

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top