CocoaPodsでpod installやpod updateを実行したときに、Specs satisfying the … dependency were found, but they required a higher minimum deployment target と表示され、Podを導入できないことがあります。
このエラーは、プロジェクト側で設定しているiOSなどの最小対応バージョンより、導入しようとしているPodが要求する最小Deployment Targetのほうが高いときに発生します。
エラーの意味
[!] CocoaPods could not find compatible versions for pod "ExamplePod":
Specs satisfying the `ExamplePod` dependency were found, but they required a higher minimum deployment target.
CocoaPodsはPodのspecを見つけていますが、現在のプロジェクト設定ではそのPodを利用できないと判断しています。つまり「Podが見つからない」のではなく、「対応OSバージョンの条件が合っていない」状態です。
主な原因
- Podfileの
platform :iosが古い - XcodeのDeployment TargetがPodの要求値より低い
- 利用しているPodの最新版が古いiOSのサポートを終了した
- PodfileとXcodeプロジェクトのDeployment Targetが一致していない
- 複数ターゲットでDeployment Targetがばらばらになっている
代表的な発生状況
古いプロジェクトに新しいライブラリを追加した場合や、既存Podを最新版へ更新した直後によく発生します。また、Xcodeを更新したあとに依存ライブラリ側の最低対応OSが引き上げられ、突然解決できなくなることもあります。
確認手順
1. Podfileのplatformを確認する
platform :ios, '13.0'
ここに書かれている数字が、Podが要求するバージョンより低くないか確認します。
2. XcodeのDeployment Targetを確認する
Xcodeでプロジェクトを開き、対象のProjectまたはTargetのBuild Settings、またはGeneral内のMinimum Deploymentsを確認します。複数ターゲットがある場合はすべて確認します。
3. Podが要求する最小OSを確認する
Podのドキュメント、podspec、GitHubのリリースノートなどで、現在使用しようとしているバージョンが要求する最低OSを確認します。
解決方法1:PodfileのDeployment Targetを上げる
最も基本的な解決方法です。アプリ側で古いOSをサポートする必要がなければ、PodfileのplatformをPodが要求するバージョン以上へ変更します。
platform :ios, '15.0'
target 'MyApp' do
pod 'ExamplePod'
end
変更後に再度CocoaPodsを実行します。
pod install
解決方法2:Xcode側のDeployment Targetも合わせる
Podfileだけを変更しても、Xcode側のターゲット設定が古いままだとビルド時に別のエラーが発生することがあります。PodfileとXcode側のMinimum Deploymentsを同じ方針でそろえてください。
ポイント:アプリ本体、Extension、Widget、Test Targetなど複数ターゲットがある場合は、それぞれのDeployment Targetを確認します。
解決方法3:古いPodバージョンを指定する
古いiOSを引き続きサポートする必要がある場合は、現在のDeployment Targetに対応していたPodの旧バージョンを指定します。
pod 'ExamplePod', '~> 4.2'
ただし旧バージョンには不具合修正やセキュリティ更新が含まれていない場合があるため、長期的にはDeployment Targetを見直すほうが安全です。
解決方法4:Podの依存関係を更新する
Podfile.lockが古く、依存関係の解決結果が固定されている場合は、対象Podだけを更新すると解決することがあります。
pod update ExamplePod
すべてのPodをまとめて更新すると影響範囲が大きくなるため、まず対象Podだけを更新するのがおすすめです。
解決方法5:Podsを再生成する
設定を変更しても古いPods構成が残っている場合は、再生成します。
pod deintegrate
pod install
必要に応じてXcodeのClean Build Folderも実行し、その後再ビルドします。
複数ターゲットがある場合の例
platform :ios, '15.0'
target 'MyApp' do
pod 'ExamplePod'
end
target 'MyWidget' do
pod 'ExamplePod'
end
アプリ本体だけでなくWidgetやExtensionでも同じPodを使用している場合、それぞれのターゲットの最低OSがPodの条件を満たしている必要があります。
注意点
- Deployment Targetを上げると、それより古いOSの端末ではアプリを利用できなくなります。
- PodfileだけでなくXcode側の設定も確認してください。
- 旧Podへ戻す場合は、対応OSだけでなく不具合修正やセキュリティ面も確認してください。
pod updateを全体に対して実行すると多数の依存ライブラリが更新される場合があります。
まとめ
required a higher minimum deployment target は、Podの要求する最小OSバージョンがプロジェクト側のDeployment Targetより高いときに発生します。
まずPodfileとXcodeのMinimum Deploymentsを確認し、可能ならDeployment Targetを引き上げます。古いOS対応を維持する必要がある場合は、そのOSに対応しているPodの旧バージョンを指定する方法が有効です。
