概要
iOS開発をしている際に容量不足になった場合の動作を確認したい場合の方法です。
エミュレーターで少ない容量でマウントするだけです。
やり方
エミュレーターを用意する
XCodeを起動し、メニューの「Window」 -> 「Devices And Simulators」 を選択
左下の「+」を選択して、エミュレーターを作ります。Identifier
はあとでパスで使います。
Macにイメージを作り、マウントする
以下のように /tmp/iosDummy.dmg
にイメージを作ります。
-size
で、iOSで利用する容量を指定します。この例では1GBの容量を作ってます。OSとアプリが入る大きさの容量は指定しておきましょう。
$ hdiutil create -size 1g -fs APFS /tmp/iosDummy.dmg
エミュレーターのMac上のパスに移動し、そこに上で作ったイメージをマウントします。
$ cd ~/Library/Developer/CoreSimulator/Devices/<上の画像のidentifier>
$ hdiutil attach /tmp/iosDummy.dmg -mountpoint .
アプリをインストール
対象のアプリをインストールします
確認する
Settingsアプリ起動 -> 「General」 -> 「About」 -> Capacityが役1GBであれば成功
上記のエミュレーターに埋め尽くしたい容量のファイルを置く
dd
コマンドでファイルを作り、エミュレーター上に配置します。bsで容量を指定できます。この場合は200Mです。
$ cd data/Downloads
$ dd if=/dev/zero of=a.dummy bs=200M count=1
dd: a.dummy: No space left on device
と出た場合は容量が足りない。少なめにして指定すると成功する。その後、少しづつ容量を増やしていくと成功することがある。
テキスト入力レベルで試したい場合は、data/Documents内にファイルを作れば、その分容量を使うので、細かい単位で調整できると思います。
マウント解除など
マウント解除します。df
コマンドでマウントされている箇所を探し、それをunmountします。
$ df -H
・・・
/dev/disk5s1 839M 47M 789M 6% 102 7701520 0% ~/Library/Developer/CoreSimulator/Devices/<上の画像のidentifier>
$ diskutil unmount /dev/disk5s1
Volume untitled on disk5s1 unmounted
イメージファイルを削除しときます。
$ rm -rf /tmp/iosDummy.dmg
使わなくなったエミュレーターを削除
$ rm -rf ~/Library/Developer/CoreSimulator/Devices/<上の画像のidentifier>
トラブルシューティング
アプリをインストールしようとしたら、「Unable to boot device because it cannot be located on disk.」と表示された
$ xcrun simctl erase all