iOSアプリ サイズ肥大の原因を追う

この記事の内容は古いiOSバージョン8.0での調査です。
また、今回使用したiFunboxは最新iOSでは使えないとの情報があります。

特にヘビィに使用しているわけでもないのに、iPhoneの容量が足りなくなってきたので調査。
MT2という2chまとめサイトブラウンジングアプリがやたら容量を食っている。


iFunbox起動、端末接続。


データファイルをローカルマックへコピー


ローカルコピー後、ファイルサイズを確認。
Document 614 KB
Library 1.96 GB
StoreKit 8 KB
tmp 0 バイト
となり、Libraryが圧迫していることが伺える。
さらにLibraryの中を調べると、ほぼ全部Cachesが独占している模様。
Caches 1.96 GB

さらにCachesの中、jp.co.try-sail.matome2-free ディレクトリのを調べると、Cache.db というsqlite3 のデータファイルがあり、かなりの大きいサイズ。


中身を確認してみる。

% sqlite3 Cache.db
sqlite> .tables
cfurl_cache_blob_data       cfurl_cache_response      
cfurl_cache_receiver_data   cfurl_cache_schema_version

# cfurl_cache_response キャッシュされたページのURL

sqlite> select * from cfurl_cache_response;
entry_ID|version|hash_value|storage_policy|request_key|time_stamp|partition
1|0|772175989|0|http://i.mt2.in/datalist/new.xml?page=1|2015-01-21 13:26:08|
...

# cfurl_cache_receiver_data キャッシュされたコンテンツ内容(record or file)

sqlite> select * from cfurl_cache_receiver_data where entry_id = 1;
entry_ID|isDataOnFS|receiver_data
6|1|C36250D1-6D35-4478-AD3C-B68A9D83204B
7|0|{"qdata": "","ad_type": "banner","ad_networks": [{"id": 9383070032774777750,"adapters": [ "GADMAdapterNend" ],"data": { "spotId":"8909","apiKey":"a296cfd0c5c3f0c716b5f68f2bff694a80b2c47b","gwhirl_share_location":"0" }},{"id": 5208827440166355534,"adapters": [ "IMobileAdapter" ],"data": { "publisherId":"6572","mid":"10670","asid":"16564","gwhirl_share_locati

isDataOnFSが1の場合はファイル書き出し。receiver_dataがファイル名となり、fsCachedData下に保存される。
こんなファイルが大量にある。

cfurl_cache_blob_data 不明。

どうやら、今までのweb閲覧履歴が全てキャッシュとして保存されている模様。
Library/Cachesの下はOSがよしなにファイル削除するはずだが、現、iOSが8.0なので8.0由来のバグか^^;


問題はキャッシュの削除が出来ていないようななので、削除してみる。ちなみに以下の操作を試す場合は自己責任で。(ファイルバックアップをおすすめします)

sqlite> delete from cfurl_cache_response;
sqlite> delete from cfurl_cache_receiver_data;
sqlite> delete from cfurl_cache_blob_data;

iFun経由してアプリへコピー
fsCachedData以下のキャッシュファイルも削除


ダイエットに成功