酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

ankurp/DollarはCarthage経由でインストールするとApp Store Connectへのアップロード時にERROR ITMS-90056が発生する

Swiftで配列を操作するのに ankurp/Dollar を使っている。

利用しているライブラリをxcframeworkに変更する一連の対応のなかで、DollarをCarthage経由でインストールするように変更したところ、出力したipaファイルをApp Store Connectへアップロードする段階になってからエラーが発生するようになった。

*** Error: Error uploading '/Users/vagrant/deploy/MY_APPLICATION.ipa'.
*** Error: ERROR ITMS-90056: "This bundle Payload/MY_APPLICATION.app/Frameworks/Dollar.framework is invalid. The Info.plist file is missing the required key: CFBundleVersion. Please find more information about CFBundleVersion at https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion" (-18000)

調査したところ、DollarのInfo.plistに書かれているCFBundleVersionの値は下記のようになっていた。

 <key>CFBundleVersion</key>
    <string>${CURRENT_PROJECT_VERSION}</string>

Xcode 12時点での正しい記述は下記の通りと思われる。

 <key>CFBundleVersion</key>
    <string>$(CURRENT_PROJECT_VERSION)</string>

同じ問題がissuesにすでに存在しておりPull Requestも作成されたようだがクローズされていた。特にPR作者とライブラリ作者が議論を交わした様子もなかったので、なぜクローズされたかは不明である。ひょっとしたかこの方法だけではなんらかの問題があるのかもしれない。

そもそもとしてDollarは公式にはCarthage経由でのインストールは推奨されていない。CocoaPods経由でインストールした方が良さそうなので、うちのアプリではCarthage経由でインストールするのはやめた。