LoginSignup
2
1

More than 3 years have passed since last update.

【Unity】Xcode11でiOSシミュレータ用のビルドをすると"Duplicate interface definition for class 'CAMetalLayer'"エラーになる

Last updated at Posted at 2019-10-02

はじめに

いつの間にかiOSシミュレータ用のビルドができなくなって困り、いろいろ調べたメモ。

経緯と症状

  1. いつの間にかXcodeが起動できなくなった(勝手にXcodeがアップデートされた?)
    スクリーンショット 2019-09-24 16.08.12.png

  2. OSをアップデート、Xcode11が使えるように

  3. シミュレータ用ビルドが以下のエラーで通らなくなった

Unity-iPhone > Classes > Unity > UnityMetalSupport.h > CAMetalLayer
Duplicate interface definition for class 'CAMetalLayer'
Property has a previous declaration
Property has a previous declaration
Property has a previous declaration
..

スクリーンショット 2019-09-28 14.54.20.png

Player SettingsGraphics APIsの設定をガチャガチャいじってみても解決せず。

再現環境

  • Unity
    • 2018.2.21f1
    • 2017.3.1f1
  • Xcode11
  • Target SDK:Sumulator SDK

原因

Xcode - New Features
・CAMetalLayer is now available in Simulator. (45101325)

新しいXcodeではシミュレータでも CAMetalLayer というのが使えるようになったらしく、これまでUnityがシミュレータ用ビルド向けにゴニョゴニョしていた部分とコンフリクトを起こしているみたいです。

この問題は以下のIssue Trackerにも登録されていました。

Unityのリリースノートをたどったところ、以下のバージョンで対応済みのようです。

iOS: Fixed simulator build on xcode11 beta (metal headers were added) - now we use headers if available instead of forcibly declaring symbols (1163876, 1170516)

2017.x系については最近のリリースノートを探しても見当たらなかったので未対応だと思われます(LTSのサポート切れ?)。

対処方法

使用するUnityのバージョンを上げる

先に述べたとおり2019.2.3f1,2018.4.9f1以降では対応済みなので、素直にUnityのバージョンを上げましょう。

ただし、2018.4.9-10は不具合があるとかでアップデートするかどうかは悩みどころ。

2019/10/25(金)追記

不具合が直ったみたいなので2018.4.11を使いましょう。

追記ここまで

古いXcodeを使う

とりあえずXcode10.3なら問題なくビルドできたので、Unityをアップデートできない人は古いXcodeを使うしかないでしょう。iOS13の対応や今後のこともあるのであまりおすすめはしません。

Xcodeが複数インストールしてあるとBuild Settingsからビルドに使用するXcodeのバージョンを選択できます。
Oct-02-2019 10-17-42.gif

ちなみに

Xcode11ではApplication Loaderが同梱されなくなったそうです。

ビルドをApplication LoaderでApp Store ConnectにアップロードするJenkinsおじさんとかがいたら死ぬので対応しましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1