IOSアプリのメインモジュールでSwift 4.0をコンパイルし、CocoaPodsモジュールでSwift 3。
PS:Xcode 9ベータ2を使用。
ようやく機能するようになりました。このスクリプトをPodfileの最後に追加するだけで済みました。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['Swift_VERSION'] = '3.2'
end
end
end
Swift 4で書かれたいくつかのポッドを使用しているが、一部はSwift 3.2である場合、それらのSwift_VERSION値を指定する方法は次のとおりです。
Swift_32 = ['Pod1', 'Pod2', 'Pod3'] # if these pods are in Swift 3.2
Swift4 = ['Pod4', 'Pod5', 'Pod6'] # if these pods are in Swift 4
post_install do |installer|
installer.pods_project.targets.each do |target|
Swift_version = nil
if Swift_32.include?(target.name)
Swift_version = '3.2'
end
if Swift4.include?(target.name)
Swift_version = '4.0'
end
if Swift_version
target.build_configurations.each do |config|
config.build_settings['Swift_VERSION'] = Swift_version
end
end
end
end
ここでは、必要なポッドを3.2に設定し、他のすべてのポッドを4.0のままにするはるかに冗長な方法を示します
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['AirMapSDK', 'PhoneNumberKit', 'Lock', 'RxSwift', 'RxSwiftExt', 'RxCocoa', 'RxDataSources', 'ProtocolBuffers-Swift'].include? target.name
target.build_configurations.each do |config|
config.build_settings['Swift_VERSION'] = '3.2'
end
end
end
end
Ifステートメントの配列を変更するだけです。他のすべてはデフォルトで4.0になります
Swift 3.2であるべきフレームワークを除くすべてのターゲットにSwift 4.0を設定
それは私が現在プロジェクトでやっていることです