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

でアップデートしたら無事ライブラリをアップデートすることができました。

すごい単純な見落としですね、、、。

私はこれで以外と時間を浪費してしまったのでみなさんも是非注意してみてください。