Help us understand the problem. What is going on with this article?

【Flutter】プラグインを使用した時に出るSwiftバージョン指定エラーの解決

問題

下記エラーの対処法です。

Flutterで特定のプラグインを使用した状態で、iOSでデバッグしようとすると発生します。

`app_review` does not specify a Swift version and none of the targets (`Runner`) integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod.

app_reviewの部分は使用するプラグインによって変わります。

SWIFT_VERSIONを指定しろ!!と言っています。

もしかしたら、エラーメッセージの中に下の奴が黄色で強調されていて、エラーの本体のように見えてしまうかもしれませんが、違います。

上の「SWIFT_VERSION」の方が本体です。

これはエラーの本体ではない
WARNING: CocoaPods requires your terminal to be using UTF-8 encoding.

注意

この記事の解決策を試す際には必ず

flutter clean

を実行してからビルドするようにしてください。

でないと、全然関係ないエラーを引き起こして混乱します。

解決策

ステップ1

まずはこちらの記事を、作者の方に感謝しながら参照して、XCode経由で、デフォルトのSwiftファイルとデフォルトのBridgingHeaderファイルを作成します。

https://qiita.com/ko2ic/items/f082f07df8a2aca6beed

これで解決すれば完了です。

ステップ2

それでも解決しない場合の解決策はこちらのissueのこのコメントです。

https://github.com/flutter/flutter/issues/16049#issuecomment-382629492

リンク先のソースコードをそのまま引用します(引用日:2019-11-24)

ios/Podfile
target 'Runner' do
  use_frameworks! # <--- add this
  ...
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['SWIFT_VERSION'] = '3.2' # <--- add this
    end
  end
end

ios/Podfileの適切な場所に、

use_frameworks!

config.build_settings['SWIFT_VERSION'] = '3.2'

の二行を追加してください。

これで解決すれば完了です。

ステップ3

ただ、おそらく、下記のようなエラーメッセージが出ると思います。

** BUILD FAILED **
Xcode's output:
↳
The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. Supported values are: 4.0, 4.2, 5.0. This setting can be set in the build settings editor.

この場合は、Swiftのバージョンをエラーメッセージで指定されている番号に書き換えてください。

config.build_settings['SWIFT_VERSION'] = '3.2'

config.build_settings['SWIFT_VERSION'] = '5.0'

これで解決するはずです。少なくとも私は解決したんですよ😃

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away