Hello here is our Podspec which has a default_subspec
and an optional subspec (which won't be taken since the default is already set). That subspec has more features, but takes an additional 8MB of size...
`s.default_subspec = 'mainSDK'
s.subspec 'mainSDK' do |mainSDK|
mainSDK.vendored_frameworks = 'mainSDK.framework'
mainSDK.source_files = "mainSDK.framework/Headers/*.h"
end
s.subspec 'additionalSDK' do |additionalSDK|
additionalSDK.source_files = "additionalSDK.framework/Headers/*.h"
additionalSDK.vendored_frameworks =['additionalSDK.framework', 'mainSDK.framework']
end
Now, in our mainSDK we include additionalSDK with #if canImport(additionalSDK) We then provide code related to additionalSDK in between those compiler flags, like this:
#if canImport(additionalSDK)
//adding optional delegate
class ViewController: UIViewController, OptionalDelagate
#else
//no need for delagete
? ? class ViewController: UIViewController
#endif
However, after client integrates our mainSDK he sees that this framework is missing module: additionalSDK.framework
How is this possible? We have marked additionalSDK as optional in our workspace. We have tried to set additionalSDK as a -weak_framework in other linker flags(Build settings) , but this did not helped.
If client integrates additionalSDK everything works well, because all frameworks are linked..
Optional dependencies, without CocoaPods work well, it is just problem of CocoaPods or I don't know how to configure it
s.platform = :ios
s.ios.deployment_target = '9.0'
s.name = "mainSDK"
s.summary = "mainSDK IOS SDK"
s.requires_arc = true
# 2
s.version = "1.0.8.6.5"
s.source = { :http => "https://s3-eu-west-1.amazonaws.com/zipOfSDK.zip"}
s.framework = "UIKit"
s.source_files = "mainSDK.framework/Headers/*.h"
s.default_subspec = 'mainSDK'
s.subspec 'mainSDK' do |mainSDK|
mainSDK.vendored_frameworks = 'mainSDK.framework'
mainSDK.source_files = "mainSDK.framework/Headers/*.h"
end
s.subspec 'additionalSDK' do |additionalSDK|
additionalSDK.source_files = "additionalSDK.framework/Headers/*.h"
additionalSDK.vendored_frameworks =['additionalSDK.framework', 'mainSDK.framework']
end
s.swift_version = "4.2"
end
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…