cocoapods link_with XCTESTは重複したシンボルエラーを生成します
-
20-12-2019 - |
質問
静的ライブラリを生成するこのメインプロジェクトを持っています(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_PATHS
にMyDSKTests
を追加して、それらのヘッダーをテストで利用できるようにしました。
代わりにLIBRARY_SEARCH_PATHS
を正常に使用することを読みましたが、これは私のためには機能しませんでした。誰かがその理由を説明しなければならないのなら、それは素晴らしいことですが、今のところ私は彼らが同様の問題に遭遇した場合には他の人々のために私の解決策を残します。
関連情報の他の質問関連情報