技術

Xcode10で「The new build system doesn’t yet support On Demand Resources; if you require ODR」のエラー発生

どうも、フリーランスのITエンジニア兼ブロガー兼投資家のKerubitoです。

いつの間にかXcodeも10まで進みました。

さっそく意気揚々とアップデートして、開発中のプロジェクトをgitからクローン。

続けてビルドしたら・・・。

error: The new build system doesn’t yet support On Demand Resources; if you require ODR, the legacy build system can be reenabled in File > Workspace/Project Settings…. (in target 'EquipmentStatusMonitor')

やっぱりエラー発生。

ここまでくるとどこかで期待している自分がいます(笑

Xcode9の際もいろいろありましたが、期待を裏切らないXcodeちゃん。

エラーの内容としては「new build systemはODRには対応してないから無理」とのこと。

ODRってなんだっけ?

調べると、ODRはオンデマンドリソースの略で、アプリにバンドルせずにApp Storeから必要に応じて様々なデータを供給できるらしい。

そんなものを使っているつもりはないのに、なぜこんなエラーが・・・。

ちょっと気になって調べてみたら、Xcode9以降はデフォルトでODRが有効になっているらしい。

確認したら確かに有効になっていました。

Xcode10_4

ODRを使っているつもりはないが、下手に変更しておかしくなっても嫌なので、Workspace Settingsを確認します。

File->Workspace Settings...をクリック。

Xcode10_3

するとWorkspace Settingsが開きます。

Xcode10_2

すぐに違和感が。

Build Systemが「New Build System」になっている。

New Build SystemはXcode9から導入されたいずれスタンダードになるBuild Systemですが、なかなかPreviewから抜け出さないので個人的にはスルーしていました。

それがXcode10ではデフォルトになっている。

しかし、ODRにはまだ対応していないらしい。

Xcode9以降はデフォルトでODRが有効になり、Xcode10では「New Build System」がデフォルトに。

でも「New Build System」はODRに未対応。

おお、なんというホラー現象(笑

念のため別のMacで開発中のプロジェクトの設定をXcode9で確認すると「Standard Build System」になっている。

Xcode10_1

Xcode10でも「Legacy Build System」に変更。

これでビルドエラーが解消し、ひとまずめでたしめでたし。

-技術

© 2021 Kerubitoのブログ