Xcode requires ARKit capability which is not supported by iPhone
さて、iPhone 5のiOSを11にアップデートして、Xcodeもバージョン9に更新したので、時流に乗ってARKitのアプリでも作ってみようかと思って早速作ってみたところ、iPhone5じゃ実行できないみたいなエラーに遭遇していきなり困ったので、その対処法についてメモしておきます。
スペックは以下。
- iPhone 5
- Xcode Version 9.0
Contents
ARKitアプリのprojectの作成手順とエラーに直面するまで
とりあえずまずはARKitのプロジェクトの開始方法について。
最初に「Create a new Xcode project」を選択したらテンプレートはiOSの「Augmented Reality App」を選びます。
続くproject nameは適当に「ARTest」とか試しにつけておきました。
Preparing debugger support for iPhoneが超長い
とりあえず実機でビルドしたいのでiPhone 5を接続するんですが、XcodeもiOSもアップデートしたばかりだからか、端末認識にめちゃくちゃ時間がかかりました。
もうかつてないほどに。
バグかと思った。
この状態で無理やり実行しようとしても、「iPhone is busy: Preparing debugger support for iPhone. Xcode will continue when iPhone is finished.」とか言われて実行できないので、Cancel Runningを押さずに気長に待つしかないです。
5分以上かかったので、もしかしたら実機がiPhone6sとか最近の実機じゃないともう実機テストできなくなったのかとか、古い端末ではARKitは対応できないのかとか思っていました。
でもまあずっと待っていたらステータスがFinished running ARTest on iPhoneになったので、安心しました。
長かった。
Required device capabilitiesを削除する
それで実行しようとしたところ、以下のメッセージが出てビルドできない。
やっぱりiPhone XとかまあせいぜいiPhone 6とか比較的新しいのじゃないと実行できないのだろうか。
要するに古いiPhoneだとサポートされてないとかいうことなので、サポート可能かどうかのチェックをビルド時にチェックしているらしい。
そこで、このチェックの手続きを省略させてしまえば良いわけです。
Info.plistのファイルから、「Required device capabilities」を発見します。
これが上記のチェックを行っている模様なので、これを消去します。
あるいは、Info.plistをソースコードから開いた場合には、以下の「UIRequiredDeviceCapabilities」のキーを「armv7」、「arkit」まで含めて、全部deleteしてしまえば良いわけです。
<key>UIRequiredDeviceCapabilities</key> <array> <string>armv7</string> <string>arkit</string> </array>
ステータスがRunning ARTest on iPhoneになって、無事iPhone 5であってもビルドできました。
それで肝心なことは、この実行画面が何を意味しているのかわからない点です。
これがARKitのデフォルト画面ということなので、超基本的なことが何かしらできそうなものですが、画面タップしても何も起きないし端末を振っても何も起きない。
なんか飛行機の後ろ姿のようなものが見えているだけです。
拡張現実ということで、実行したらきっとカメラが起動して背景が現実画面になって、そこにこの飛行機がオーバレイしているとかならわかるのですが、真っ暗な画面に飛行機の後ろ姿が鎮座しているだけ。
つまり、飛行機のお尻を延々と見させられているわけです。
これが噂の拡張現実というやつか。
ケツを見続けることが拡張現実ということなのでしょうか。
もしかしたら10分くらいずっと見ていたら何かが起こるのではないかと期待して待っていたのですが何も起こらなかったし、そもそも他人様のお尻を延々と眺め続けるのは変態みたいで失礼だったので、飛行機のお尻を見守るのを断念して、そっとアプリを停止しました。