AppleがiPhoneの最新OS「iOS14」を正式リリースしました。
アプリ開発をしている人にとってiOSのメジャーアップデートは嬉しい反面、今まで動いていたアプリが動かなくなる怖さもあります。
iOS14リリース後、アプリをビルドしたらエラーに遭遇して1時間くらい潰れてしまったので、今後のためにメモとして残しておきたいと思います。
iOS14リリース後にXcodeで「Undefined symbol: _OBJC_CLASS_$_ATTrackingManager」のエラー
Undefined symbol: _SKStoreProductParameterAdNetworkVersion
Undefined symbol:_SKStoreProductParameterAdNetworkSourceAppStoreIdentifier
Undefined symbol: _OBJC_CLASS_$_ATTrackingManager
iOS14正式リリース後、いつも通りXcodeでアプリビルドしたところ、上記のエラーが出てビルドが通らなくなりました。
環境としては以下です。
- Xcode 11.7
- 端末:iPhone11 Pro Max(iOS14)
ネットで調べたのですが、iOS14がリリース直後ということもあり、なかなか検索にヒットしませんでした。「Undefined symbol」は大体フレームワークのエラーなので、該当しそうなフレームワークを追加してみましたが結果が変わりませんでした。
iOS14リリース後にXcodeで「Undefined symbol: _OBJC_CLASS_$_ATTrackingManager」のエラーの解決方法
調査の結果、以下の記事のおかげで解決できました。
Which XCode version is running on Cloud Build? AppTrackingTransparency framework is only available in XCode 12
こちらの記事に僕の遭遇したものと同じエラーが出ている人がいて、それの返信としてAppTrackingTransparency frameworkは、Xcode12で利用できるフレームワークだというものがありました。
Appleのドキュメントを確認して見ると、確かにAppTrackingTransparency frameworkはiOS14から利用できるものらしいです。
ということで、Xcodeをバージョン12.0にアップデートして再度ビルドしたところ、先程まで出ていたエラーが表示されず、ビルドが通るようになりました。
XcodeってiOSがアップデートされた後に起動すると、いつもコンポーネントのインストールを行うので、古いバージョンのXcodeでも普通にビルドできると思ってましたが、AppStoreからXcodeアプリのバージョンをアップデートしないとビルドエラーになってしまうというパターンがあるといういい教訓になりました。