For anyone coming across this problem today: this is a known problem in CocoaPods, with a few issues raised on Github here and here discussing the problem.
The suggested workaround is to split your podspec into two: one podspec with only your vendored_frameworks
and another podspec with only the source_files
that use the framework.
User crsantos on Github has helpfully posted an example of this workaround, with two separate podspecs that I have reproduced below.
Vendored framework podspec:
# Regarding https://github.com/CocoaPods/CocoaPods/issues/6409
Pod::Spec.new do |s|
s.name = 'SampleDynamicLibPod'
s.version = '0.0.1'
s.summary = 'SampleDynamicLibPod. Cool Story bro!'
s.description = <<-DESC
Blah Blah Blah Blah Blah description
DESC
s.homepage = 'https://github.com/crsantos/SameRepoForAllPodSpecsAndSource'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Carlos Santos' => 'mail@example.com' }
s.source = { :git => 'https://github.com/crsantos/SameRepoForAllPodSpecsAndSource.git', :tag => "#{s.name}-#{s.version.to_s}" }
# this is the way of tagging diferent podspecs on the same repo
# Dont't forget to tag your repo with `SampleDynamicLibPod-0.0.1` for this specific spec
s.module_name = 'SampleDynamicLibPod'
s.ios.deployment_target = '9.0'
s.platform = :ios, '9.0'
s.pod_target_xcconfig = { 'SWIFT_VERSION' => '3' }
s.vendored_frameworks = 'SampleDynamicLibPod/Frameworks/SampleDynamicLib.framework'
end
Source files podspec. Note the dependency on the vendored framework podspec.
# Regarding https://github.com/CocoaPods/CocoaPods/issues/6409
Pod::Spec.new do |s|
s.name = 'WrapperAroundSampleDynamicLibPod'
s.version = '0.0.2' # just a different number to avoid confusion with the other podspec
s.summary = 'WrapperAroundSampleDynamicLibPod. Cool Story bro!'
s.description = <<-DESC
Wrapper Around Sample Dynamic Lib Pod Blah Blah Blah Blah Blah Blah Blah Blah
DESC
s.homepage = 'https://github.com/crsantos/SameRepoForAllPodSpecsAndSource'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Carlos Santos' => 'mail@example.com' }
s.source = { :git => 'https://github.com/crsantos/SameRepoForAllPodSpecsAndSource.git', :tag => "#{s.name}-#{s.version.to_s}" }
# Dont't forget to tag your repo with `WrapperAroundSampleDynamicLibPod-0.0.2` for this specific spec
s.module_name = 'WrapperAroundSampleDynamicLibPod'
s.ios.deployment_target = '9.0'
s.platform = :ios, '9.0'
s.pod_target_xcconfig = { 'SWIFT_VERSION' => '3' }
s.source_files = 'WrapperAroundSampleDynamicLibPod/Classes/**/*'
s.dependency 'CocoaLumberjack/Swift'
s.dependency 'SampleDynamicLibPod', '0.0.1' # you can achieve this with "#{s.name}-#{s.version.to_s}" from the
end