【Xcode/Cocoa Pods】objectVersionエラーの解決方法!

【Xcode/Cocoa Pods】objectVersionエラーの解決方法!

この記事からわかること

  • Xcode/iOSCocoa Podspod installエラーになった場合の解決法
  • objectVersion変更方法
  • Unable to find compatibility version string for object version `70`.解決法

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

参考記事Zenn:Xcode16に上げたら、pod installができなくなった話

Unable to find compatibility version string for object version `70`.

Xcode16以上に上げてからSwift Testingを追加した後にCocoa Podsでpos installコマンドを実行した際に「Unable to find compatibility version string for object version `70`.」というエラーが発生しました。内容をみるとobject versionなるもののバージョン互換性が失われてしまっているようです。


### Error

```
ArgumentError - [Xcodeproj] Unable to find compatibility version string for object version `70`.
// 翻訳:オブジェクト バージョン `70` の互換性バージョン文字列が見つかりません。

トリガーとなっていたのはSwift Testingを追加した後のようで追加した際には「project.pbxproj」に定義されているobjectVersionの番号が自動でインクリメントされていました。


{
	archiveVersion = 1;
	classes = {
	};
-  objectVersion = 55;
+  objectVersion = 70;
	objects = {
// 〜〜〜〜〜〜〜

そしてエラーの内容としてはCocoa Podsが内部的に保持しているCOMPATIBILITY_VERSION_BY_OBJECT_VERSION変数の値とobjectVersionの値が不一致になっていることで発生しているようです。COMPATIBILITY_VERSION_BY_OBJECT_VERSIONの中身はCocoa Pods >xcodeprojの中身に記述されているようです。これをみると77 => 'Xcode 16.0'なので70となっているのがおかしいようです。

COMPATIBILITY_VERSION_BY_OBJECT_VERSION = {
  77 => 'Xcode 16.0',
  63 => 'Xcode 15.3',
  60 => 'Xcode 15.0',
  56 => 'Xcode 14.0',
  55 => 'Xcode 13.0',
  54 => 'Xcode 12.0',
  53 => 'Xcode 11.4',
  52 => 'Xcode 11.0',
  51 => 'Xcode 10.0',
  50 => 'Xcode 9.3',
  48 => 'Xcode 8.0',
  47 => 'Xcode 6.3',
  46 => 'Xcode 3.2',
  45 => 'Xcode 3.1',
}.freeze

修正方法:objectVersionの値を変更する

解決するには「objectVersionの値を変更」する必要があります。変更したい場合はXcode右側のインスペクタエリアを表示して「Project Document」>「Project Format」指定されているXcodeのバージョンを変更します。これはターゲットごとに変更することができるので、メインターゲットとPodsターゲットを私は両方ともXcode16に変更してみました。

【Xcode/Cocoa Pods】objectVersionエラーの解決方法!

するとobjectVersionの値が77に変更になりこの状態でpod installコマンドを実行することで無事エラーを吐かずに完了することができました。


{
	archiveVersion = 1;
	classes = {
	};
  objectVersion = 77;
	objects = {
// 〜〜〜〜〜〜〜

objectVersionとは?

objectVersionに関する詳細なリファレンスは見つけることはできませんでしたがどうやらXcodeプロジェクト(.xcodeproj)内のproject.pbxprojファイルのファイル形式バージョンを示す値のようです。

プロジェクト自体を作成したXcodeのバージョンに依存する形で最初は設定され、その後Xcodeのバージョンをあげても基本的には自動でインクリメントされることはないようです。アプリビルドに影響が出るかと思いましたが、幸い何もエラーを吐かずにビルドできたのであげても特に問題はなさそうでした。

なぜ発生したのか推察

今回のエラーの原因は予期せずobjectVersionの値が上がり、なぜかそれがCocoa Pods側では意図しない値になってしまっていたことです。

トリガーとなったのは「Xcode16に上げてからSwift Testingを追加した時」でした。おそらく新規ターゲットを追加する際にXcode16に依存したobjectVersionに更新され、それがたまたまCocoa Pods側では意図しない値になってしまっていただけかなと思います。

既存プロジェクトにターゲットを追加するタイミングでobjectVersionの値は更新されていくものなのかもしれないですね。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

Search Box

Sponsor

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article