LoginSignup
3
0

Swift Package ManagerでSwiftLintを導入できないっ...!!

Last updated at Posted at 2023-05-31

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を導入する必要があったが、上記のエラーが出て解決できなかった。

私がやっていたやり方(エラーの出し方)

add

↑ここを選択
スクリーンショット 2023-05-31 16.16.58.png
https://github.com/realm/SwiftLint
↑このURLで右上のバーから検索する。
スクリーンショット 2023-05-31 16.17.19.png
↑(よく分からんけど)SwiftLintFrameworkを選択してAdd Packageをする。
スクリーンショット 2023-05-31 16.21.59.png
↑左の方に色々項目が表示される。
ビルドする。
スクリーンショット 2023-05-31 16.23.25.png
例のエラーが出る。
大量ですね。それも全て
The package product '〇〇〇〇' requires minimum platform version 13.0 for the iOS platform, but this target supports 11.0
(バージョンの最小要件をver.11.0 → 13.0に変更してね)
という内容。
そして、バージョンの最小要件を決定する項目は、
スクリーンショット 2023-05-31 16.35.46.png

↑左上のプロジェクト名の項目を選択(明るい緑のところ)

スクリーンショット 2023-05-31 16.36.06.png

↑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する機会がないパッケージは、他のサイトで紹介しているやり方を使って導入しましょう。
ざっくり説明しておくと、

  1. プロジェクトファイル(xcodeのファイル)と同じ場所に、BuildToolsフォルダを作る

  2. BuildToolsフォルダ内に、

    • Package.swift
    • Empty.swift

    という空のファイルを作る

  3. Package.swiftファイルに、どのパッケージを導入したいか記述する(今回はSwiftLint)

  4. ①のプロジェクトファイルと同じ場所に、.swiftlint.ymlというSwiftLintで使用するルールを記したファイルを作る

  5. Xcode内のBuildPhaseという項目で、SwiftLintを実行するという命令を書く

という流れです。がんばれ。

私が参考にしたサイト

3
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0