web-dev-qa-db-ja.com

Swift 4.0でPodを使用してx = code 9プロジェクトをビルドする方法Swift 3?

IOSアプリのメインモジュールでSwift 4.0をコンパイルし、CocoaPodsモジュールでSwift 3。

PS:Xcode 9ベータ2を使用。

19
Sanf0rd

ようやく機能するようになりました。このスクリプトを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
16
Sanf0rd

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
17
bubuxu

ここでは、必要なポッドを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になります

12
Justin Miller

Project Navigator>「ポッド」を選択> Swift 3.2ポッドを選択> [ビルド設定]>下にスクロールして、 'SwiftでSwift言語バージョンを3.2に設定コンパイラ-言語セクション '。

これを行うと、Xcodeは1つのBuildtimeの問題を表示します。ポッドのソースコードをSwift 4.に変換しないでください。その問題をクリックしないでください。[リマインダーの確認]をオフにし、[後で変換]をクリックします。

Project Navigator

Project Navigator

ビルド設定

Build Settings

9
siradityaverma

Swift 3.2であるべきフレームワークを除くすべてのターゲットにSwift 4.0を設定

それは私が現在プロジェクトでやっていることです

0
nathan