[Xcode][iOS][小ネタ] シミュレータの写真アプリにコマンドで画像を足してみよう
はじめに
CX事業本部の中安です。まいどです。
画像を取り扱うようなアプリを作る場合、ユーザはカメラから撮ったり、写真アプリから選択したりして画像を引っ張ってくると思います。
シミュレータでそのあたりの動作を確認するにはカメラは使えませんので、写真アプリから選択するということになると思いますが、 シミュレータの写真アプリに画像を仕込むのって、そのままやると面倒くさいですよね。
なので、ターミナルからコマンドをポンっでシミュレータの写真アプリに画像を入れるようにしましょう。
xcrunコマンド
Xcodeがインストールされていると、xcrun
が実行できるようになっていると思います。
その中のサブコマンドsimctl
を使うと、いくつかのシミュレータの操作をコマンドで行うことができます。
シミュレータのUDIDを取得する
今動作させることのできるシミュレータを一覧化してみましょう。
% xcrun simctl list devices
== Devices == -- iOS 13.7 -- iPhone 8 (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Booted) iPhone 8 Plus (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Shutdown) iPhone 11 (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Shutdown) iPhone 11 Pro (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Shutdown) iPhone 11 Pro Max (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Shutdown) iPhone SE (2nd generation) (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Shutdown) : : :
こんな感じに取れます。
今まさに起動中のシミュレータだけを取ろうというときにはgrep
を使えば抽出できますね。
% xcrun simctl list devices | grep "(Booted)"
iPhone 8 (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Booted)
このUDIDを引数にすると、色んなコマンドでシミュレータを指定して実行できるのでコピーしておくといいかと思います。
シミュレータを起動する
先程取得したUDIDを用いて、シミュレータをxcrun simctl
コマンドで起動させることが出来ます。
% xcrun simctl boot XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
しかし、実行してもいつものシミュレータが画面上には表示されません。
ただ、さきほどと同じコマンドを叩いて見てください。 指定したUDIDのシミュレータが起動していることが分かります。
% xcrun simctl list devices | grep "(Booted)"
iPhone 8 (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) (Booted)
このように起動してるので、操作することが可能ですが、 シミュレータ自体が見えないと気持ち悪いよということであれば、GUIも含めて起動できるようにしましょう。
シミュレータをGUI込みで起動する
GUIも含めて起動する場合は、シミュレータアプリを直接オープンして、 その引数にUDIDを渡してやります。
% open -a "Simulator" --args -CurrentDeviceUDID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX % open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app --args -CurrentDeviceUDID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
このように2種類の手法があるようです。同じことをやっていますが、前者のほうがシンプルですね。
シミュレータに画像を入れる
では、起動したシミュレータに画像を入れてみましょう。
PC上にどこかのディレクトリに画像ファイルが置いてあるとします。
仮に1.jpg
、2.jpg
、3.jpg
としますね。
そしてaddmedia
コマンドで追加します。
% cd 画像のあるディレクトリ % xcrun simctl addmedia XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 1.jpg 2.jpg 3.jpg
これを実行してからシミュレータの写真アプリを見てみると、画像が入ってることが確認できると思います。
また、シミュレータが1つだけ起動してるならbooted
というエイリアスを使うことができます。
% xcrun simctl addmedia booted 1.jpg 2.jpg 3.jpg
一気に入れる
こうやってチマチマと入れていくのも大変なので、ディレクトリ内にある画像を一気に入れる方法もメモっておきます。
% ls | xargs xcrun simctl addmedia booted
最後に
今回は画像だけでしたが、動画も入れることができます。
長々と書いてきましたが、 起動中のシミュレータに画像に入れるなら、最後のコマンドでドンっと入ると思います。
小ネタでした。
では、またー。