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

Flutter Pluginの利用でSwiftエラーが出る場合の対処方法

More than 1 year has passed since last update.

背景

自分は、image_downloaderという「指定したURLの画像を端末に保存する」Pluginを作っていて、嬉しいことにまあまあ利用されているようです。
しかし、Flutterの問題でPlugin自体のバグではないのにissueでバグとしてたびたび報告されるので、それの対処方法と何故、それが起きるのか記述しておきます。(たとえ、トラブルシューティングに書いても読まない人が多いのかも)

これは、Swiftで作成されているFlutterのPluginを利用し、且つ、プラットフォームチャンネル言語でSwiftを選択しなかった場合に起きます。

エラー内容

以下のようなエラーが表示されます。

=== BUILD TARGET image_downloader OF PROJECT Pods WITH CONFIGURATION Debug ===
The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. Supported values are: 3.0, 4.0, 4.2. This setting can be set in the build settings editor.
=== BUILD TARGET image_downloader OF PROJECT Pods WITH CONFIGURATION Debug ===
~/.pub-cache/hosted/pub.dartlang.org/image_downloader-0.11.2/ios/Classes/ImageDownloaderPlugin.m:2:9: fatal error: 'image_downloader/image_downloader-Swift.h' file not found
#import <image_downloader/image_downloader-Swift.h>
[!] Unable to determine Swift version for the following pods:

- `image_downloader` 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.

理由

この問題はフラッター側にあるため、swiftで作成されたすべてのプラグインに同じ問題があります。

https://github.com/flutter/flutter/issues/25676#issuecomment-449543241

 対処方法

これを解決するためにいくつかの設定をする必要があります。

  1. ブリッジングヘッダーを作成する必要があります。 XCodeでプロジェクトを開きます。
  2. File -> New -> File -> Swift Fileを選択し、Runnerディレクトリに作成します。それからBridging Headerも作成し、ダイアログ上でクリックします。

(これはXCode - > Build SettingsでSWIFT_VERSION、SWIFT_OBJC_BRIDGING_HEADERなどを設定しているのと同じことです。)

3.ios/PodfileのRunnerブロックにuse_frameworks!があることを確認してください。

target 'Runner' do
  use_frameworks!

4.基本的にはこれで問題ありませんが、うまくいかない場合は次のようにします。

$ flutter clean
$ cd ios
$ rm -rf Podfile.lock
$ rm -rf Pods
$ pod install --repo-update 

これで動作するはずです。

ko2ic
最近はflutterです。
uzabase
企業活動の意思決定を支える情報インフラの提供
https://www.uzabase.com/
Why not register and get more from Qiita?
  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
No 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
ユーザーは見つかりませんでした