The Pragmatic Ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

Invalid bitcode version (Producer: 'xxx' Reader: 'yyy')になったときの対処方法

iOSアプリのreleaseビルドを行った際にlinkerでinvalid bitcode versionで怒られることがあります。

ld: could not reparse object file in bitcode bundle: 'Invalid bitcode version (Producer: '1103.0.32.62.0_0' Reader: '1100.0.33.17_0')', using libLTO version 'LLVM version 11.0.0, (clang-1100.0.33.17)' for architecture arm64

上記の場合だと、雑に解釈するとclang1100.0.33.17_0使っているんだけどclang1103.0.32.62.0_0でビルドされたbinaryが混じっててbitcodeのバージョン合わないから駄目ですという意味になります。

大抵の場合、原因は使っている3rd partyのライブラリが同梱しているbinaryのビルド時に使ったclangのバージョンが合ってないということが問題です。

対策としては、原因となっているライブラリを以前使っていたバージョンに戻すか、原因となっているライブラリの使っているclangバージョンに合わせてXcodeのバージョンをあげるかになります。

後者の場合、clang1103.0.32.62.0_0と言われてもどのXcode?となってしまいます。

その際は以下のgistにXcodeとclangのバージョンの一覧がのっているのでここでProducerのほうに書かれているバージョンにXcodeを探しましょう

Xcode clang version record · GitHub