Posted at

実機ビルドのみでアプリ容量がすごいスピードで増える場合に疑う設定

More than 1 year has passed since last update.


状況

iPhoneに実機ビルドしながら開発をしていたら、突然iPhoneから「容量不足」のアラートが。

「ストレージとiCloudの使用状況」の設定を見ると、自分が開発しているアプリが一番上に表示され、「書類とデータ」の項目には数百MB~数GBの容量が…

また、Archiveしたアプリ(TestFlight経由/AdHoc問わず)ではその現象が発生しませんでした。ビルド設定を疑い、Runのビルド設定をDebugからReleaseにしてみても、Runの場合は発生します。


原因

メモリに関する動作をすべてロギングする設定がXcodeにはあります。

メモリリークなどを追いかける際に使用する設定なのですが、このログがアプリの保存領域(tmp)に格納されるようです。


[Edit Scheme...] > Run > [Diagnostics] > Logging > [Malloc Stack]


ここにチェックが入っていると、実機ビルドしたアプリを動かすだけで、端末にどんどんログが吐き出され、容量を圧迫していきます。

tmpの中身をすべて削除するようなコードを試しにアプリに実装してみると、容量が改善することもわかります。

今回、デバッグ時にこのチェックを入れていたため、容量がふくらんでしまっていたため、チェックを外すことで状況が改善しました。


さいごに

通常、デバッグ時のみ発生する現象はビルド設定を疑うところですが、


  • ビルド設定(Debug/Release)や最適化レベルを問わず発生する

  • Archiveした場合は発生しない

時は、Schemeの不要な項目にチェックが入っていないか確認しましょう。