CocoapodsでSwiftの異なるversionを指定する
はじめに
Rubiという翻訳アプリをリリースしているのですが、その中で使用しているSwiftyTesseractという文字認識のライブラリがSwift5.0だとエラーが出てしまうという問題にぶつかりました。
issueにこの問題が上がっているのですが半年以上修正されないのでCocoaPodsの方で入れているライブラリの使っているSwiftのversionを4.2と5.0で分けました。
Podfileの修正
Podfileにはpost_installというものが用意されており、これはライブラリをインストールした後に行いたい処理を記述できるもののようです。
Podfile Syntax Referenceに使い方が書かれています。
ドキュメントを読み、ライブラリの文字列で引っ掛けるようにしSwiftyTesseractだけSwiftのversionを4.2にするように修正しました。
# Uncomment the next line to define a global platform for your project
platform :ios, '12.2'
target 'Rubi' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'ReachabilitySwift', '4.3.1'
pod 'lottie-ios', '3.1.6'
pod 'SwiftyTesseract', '2.1.0'
pod 'Sketch', '3.0'
# Pods for Rubi
target 'RubiTests' do
inherit! :search_paths
# Pods for testing
end
target 'RubiUITests' do
inherit! :search_paths
# Pods for testing
end
end
#インストールが終わった後に設定したい処理
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if 'SwiftyTesseract'.include? target.name
config.build_settings['SWIFT_VERSION'] = "4.2"
else
config.build_settings['SWIFT_VERSION'] = "5.0"
end
end
end
end