Swift Package Manager(SwiftPM, SPM)でSwiftLintを導入できない
The package product '〇〇' requires minimum platform version 13.0 for the iOS platform, but this target supports 11.0
このようなエラーが出たという記事が見当たらなかったので、対処方法を残そうと思います。ここで紹介する記事はあくまで対処方法であって、解決方法ではないことをご理解ください(結果として別の方法を提示しています)。
【追記】
コメントを送って下さった方から解決法を提示して頂いたので、
こちらのQiita記事よりご覧ください。
私の環境では
- Xcode14.2.0, SwiftLint0.52.2
- Xcode14.3.0, SwiftLint0.47.0
の2つで動作確認が出来ました。
背景
Xcodeでアプリ研修をする際に、Swift PMを用いてSwiftLintやSwiftFormatを導入する必要があったが、上記のエラーが出て解決できなかった。
私がやっていたやり方(エラーの出し方)
↑ここを選択
https://github.com/realm/SwiftLint
↑このURLで右上のバーから検索する。
↑(よく分からんけど)SwiftLintFrameworkを選択してAdd Packageをする。
↑左の方に色々項目が表示される。
ビルドする。
例のエラーが出る。
大量ですね。それも全て
The package product '〇〇〇〇' requires minimum platform version 13.0 for the iOS platform, but this target supports 11.0
(バージョンの最小要件をver.11.0 → 13.0に変更してね)
という内容。
そして、バージョンの最小要件を決定する項目は、
↑左上のプロジェクト名
の項目を選択(明るい緑のところ)
↑TARGETS項目の、プロジェクト名を選択(明るい緑のとこ)、
Minimum Deploymentの欄で選択。
しかし、私の環境では最小要件が16.4に設定されている。
なるほど。分からん。
ここに至るまでに色々調べた方は、
「BuildPhaseの設定しないと行けないだろ」
と仰るかもしれませんが、甘いですね。解決しません。
解決しないどころか、このパターンでBuildPhaseの設定をしている記事すら見当たりません。
やってる人が居ないということは、そもそも出来ないという説と、誰もやってないだけの2つが有りますが、今回は前者っぽい気がしててですね、仮にこのエラーが解決したとして、
BuildPhaseという項目で、SwiftLintを呼び出して実行する指示を書かなければいけないのですが、どこのファイルを参照してねと言えばいいか分からないのですね。
という訳で、この方法ではSwiftLintは使えないという結論に至りました。
使えると仰る方は、早く記事を作ってください。少なくとも日本語の記事は1つもないと思いますので、閲覧数が稼げると思います。ぶるーおーしゃんってやつですね。
じゃあどんな時にこのやり方が使えるの?
基本的に、このやり方(File → Add Packages →・・・)
でのパッケージの使い方は、import 〇〇
のようにして使う場合に使用可能で、具体的には、
import Nuke
Nuke.loadImage(〇〇, ××)
こんな感じです。
一方、SwiftLintやSwiftFormatは、importしてコード内で使用するものではなく、ビルドする時に実行されるものなので、importする機会がコードの中には有りません。なので、エラーが解決しようが結局できないのだと思います。
結論
SwiftLint, SwiftFormatのような、import
する機会がないパッケージは、他のサイトで紹介しているやり方を使って導入しましょう。
ざっくり説明しておくと、
-
プロジェクトファイル(xcodeのファイル)と同じ場所に、BuildToolsフォルダを作る
-
BuildToolsフォルダ内に、
- Package.swift
- Empty.swift
という空のファイルを作る。
-
Package.swiftファイルに、どのパッケージを導入したいか記述する(今回はSwiftLint)
-
①のプロジェクトファイルと同じ場所に、
.swiftlint.yml
というSwiftLintで使用するルールを記したファイルを作る -
Xcode内のBuildPhaseという項目で、SwiftLintを実行するという命令を書く
という流れです。がんばれ。
私が参考にしたサイト
- Qiita@ken_sasaki2(佐々木 謙)
- Qiita@SNQ-2001(たいしん)