CocoaPodsが正常にアップデートできない時の対処方法
CocoaPodsを使用してライブラリを更新しようとしたら以下のようなエラーで更新ができなかったので対処方法を紹介します。
[!] CocoaPods could not find compatible versions for pod "AFNetworking":
In Podfile:
AFNetworking (~> 3.0)AFNetworking (~> 4.0)
None of your spec sources contain a spec satisfying the dependencies: `AFNetworking (~> 4.0), AFNetworking (~> 3.0)`.
You have either:
* mistyped the name or version.
* not added the source repo that hosts the Podspec to your Podfile.
ちなみに私は「ITMS-90809: Deprecated API Usage」というUIWebViewによるリジェクトに対応するためAFNetworkingを3.0から4.0にバージョンアップさせようとした時にうまくアップデートができなくなってしまいました。
対処方法1.「pod repo update」
pod repo update
一度削除してからインストールし直すと解決できます。
もしこれでもうまくいかない場合は以下をおためしくだしさい。
対処方法2.「pod repo remove master」
pod repo remove master
pod setup
pod install
対処方法1と同じで、一度削除してからインストールし直す方法です。
もしこれでうまくいかない場合は以下をお試しください。
対処方法3.「リポジトリを更新しなおす」
cd ~/.cocoapods/repos
git clone https://github.com/CocoaPods/Specs.git master
でリポジトリを更新した後に
pod setup
pod install
で解決します。
これも対処方法1.2と同じようなことをしています。
しかし、これでも治らない!という人は以下をお試しください。
ちなみに私は1.2.3をやってもダメで、次の解決方法4で解決できました。
解決方法4. Podfileを修正する
Podfileの記述が間違っていないか再度チェックしてください。
target 'AppName' do
platform :ios, '11.0'
pod 'AFNetworking', '~> 4.0'
target 'AppNameTests' do
inherit! :search_paths
pod 'AFNetworking', '~> 3.0'
end
end
target 'AppName Watch Extension' do
platform :watchos, '2.0'
pod 'AFNetworking', '~> 4.0'
end
私の場合このようになっていたのが原因で
iOSとWatchOSは「pod 'AFNetworking', '~> 4.0'」と指定していたのですが、ユニットテストは「pod 'AFNetworking', '~> 3.0'」と別バージョンを指定してしまっていました。
ユニットテストのほうも pod 'AFNetworking', '~> 4.0' に修正し
pod update
でアップデートしたら無事ライブラリをアップデートすることができました。
すごい単純な見落としですね、、、。
私はこれで以外と時間を浪費してしまったのでみなさんも是非注意してみてください。