2013年頃に購入したiMacがBig Sur以降に対応しなくなり、最新のXCodeがインストールできなくなってしまったのでそろそろ新しいmacを購入しようか迷っていましたが、個人的に作ったアプリをxcodeでビルドして実機で動かすためだけに購入するのはもったいないので、お蔵入りになっていた手持ちのPC(VMware ESXiインストール済み)にMacOS(Monterey)をインストールして、xcodeをインストールし、サンプルアプリをビルドしてiPad Airで動作させることができるかどうか、試してみました。結論からいいますと、できました。
まず、macosのインストールはこちらのページを参考に実施しました。英語ですが、丁寧に説明されているので特に詰まることなくインストールできました。なお、montereyのisoはこちらのページからダウンロードしました(手持ちのiMacは古すぎるのでApp Storeからインストーラーを取得できないため)。
XCodeの最新版をインストールするには、OSを更新する必要がありましたので、更新を行いました(Venturaではなく、montereyの最新バージョンにアップデートしました)。XCodeのインストールも特に詰まることなく完了し、サンプルアプリのビルドも問題ありませんでした。
しかし、iPad Air(実機)を接続しても、認識しない(接続と切断を繰り返す)問題が発生しました。いろいろ解決方法を調査してみたところ、こちらのページに記載されていた方法で解決しました。要約すると以下のようになります。
- 仮想マシンのUSBコントローラはUSB2.0にする
- 仮想マシンの設定パラメータを追加する(以下は一部のiPhoneの場合の例)
usb.quirks.device0 = "0x05ac:0x12a8 skip-reset, skip-refresh, skip-setconfig"
この設定の右辺の先頭の2つの文字列は、ベンダーIDとプロダクトIDで、どの実機をつなぐかによって異なるようです。このIDは実機をホストにつないだ時に仮想マシンのログに出るのでわからない場合はそこから調べることができます。ESXiの場合はダッシュボードで「仮想マシンの監視→ログ」から過去のvmware.logが見れるようになっていますのでこちらで確認しました。例えば私のiPad Airだとつないだ時に以下のようにログに出ていました。
2022-10-30T05:29:43.161Z In(05) vmx - USB: Found device [name:Apple\ iPad vid:05ac pid:12ab path:0/1/3 speed:high ...
また、ESXiの場合、設定パラメータは「設定の編集→仮想マシンオプション→詳細→設定パラメータ」の右横の設定の編集ボタンを押すと、追加できます。
以上の対応によりようやくiPad Airが認識され、XCodeからサンプルアプリを実行することで実機上で動作できるようになりました。なお、実機で実行させるにはこちらの手順のようにdeveloper modeにしておく必要があります。