はじめに
Xcode の シミュレータではターミナルで下記のコマンドを実行すると画面収録ができます。
xcrun simctl io booted recordVideo test.mov
しかし、Xcode11.0 で実行すると下記のようなエラーが表示されます
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=22):
Selected interface does not suport video recording.
Invalid argument
simctl
コマンドについては下記の記事に詳しく書いてありました。
対応
Xcodeのパスを確認する
複数バージョンの Xcode をインストールしていたのでとりあえず指定のパスが正しいか確認します。
ターミナルで下記コマンドを実行します。
xcode-select -p
他の Xcode が指定されていた場合は下記コマンドでパスを修正します。
sudo xcode-select -s <Xcodeのパス>
もう一回実行!!
xcrun simctl io booted recordVideo test.mov
再び同じエラー
UUIDを指定してみる
画面収録のコマンドは下記のような構成になっています。
xcrun simctl io <対象のシミュレータのUUID> recordVideo <保存先パス>
booted
にしていたところを UUID を指定してみます。
ターミナルで下記コマンドを実行し、起動中のシミュレータの UUID を取得します。
xcrun simctl list | egrep '(Booted)'
結果は下記のようなもの
iPhone 11 Pro Max (AAAAAAAA-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Booted)
Phone: iPhone 11 Pro Max (AAAAAAAA-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Booted)
UUID を指定して実行!!
xcrun simctl io AAAAAAAA-XXXX-XXXX-XXXX-XXXXXXXXXXXX recordVideo test.mov
はい、同じエラー
リリースノートを見てみる
Xcode のリリースノートを確認してみます。
発見!!!
ここに
Video recording of the iOS 13, tvOS 13, and watchOS 6 simulator through xcrun simctl io recordVideo returns an error instead of recording video. (50625716)
とあります。
iOS13 では無理な模様!!iOS12 とかのシミュレータならいけるのかもしれません。(通信環境が劣悪なので他のシミュレータをダウンロードできず確認できませんでした...)
結論
Xcode11.0 では iOS13 のシミュレータで画面収録はできない模様。
Xcode11.2.1 ではできたのでバージョンを上げるか Quick TimePlayer を使いましょう!!
さいごに
リリースノートって大事ですね
今まであんま見たことなかったんですがこれからはちょこちょこ確認するようにします...
とりあえず今回のように画面収録できなかった時は Quick TimePlayer と PicGIF Lite で GIF を作成してるのですが皆さん Qiita に GIF あげる時とかなに使ってるんですかね?