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以下のキャッシュファイルも削除
ダイエットに成功