ExtensionとImage assetsでアプリのサイズをやらかした話
結論から言うとImage assetsはちゃんと管理しようということ.
事態の発覚
先月,札幌から知りあいが上京したとあり,渋谷の馬肉屋さんでの飲み会に参加した. メンバーはiOSの開発者つながりだったので,開発の話で盛り上がった. 私は,みんなに拙作AAキーボードを披露した. @frnkさんは,早速と言わんばかりにAppStoreでAAキーボードを購入しようとした,そのとき,問題が発覚した.
「sonsonさん,これなんで120MBもあるんですか?ここでダウンロードできないっす.」
「へ?そんなアホな大したデータはないはずですよ.」
「だって,ほら,アプリが大きいからWiFiではないとインストールできないってアラートが・・・」
「そんなバカな・・・・iTunesで見ると・・・・・」
「ぎょええええええええええええ, 120MB!!??」
調べる
調べてみると,めちゃくちゃな事態が発覚する.
iOSでキーボードを使うアプリケーションは,インストール方法等をアプリケーション内で明確に表示しないといけないというガイドラインがある. このため,AAキーボードも,セットアップ解説のビューがあるのだが,ここ使っているスクリーンショットのサイズが大きかったようだ. まずは,手始めにこの画像を小さいしてみるが・・・・・あまりサイズに影響がない. なんじゃこりゃ.
image.assets
パッケージ内を探索してみると・・・・・.うわあああああああああ.
AAキーボードは,内部に二つextensionを内包している. このため,パッケージは3つ存在することになる.
- AAキーボード(アプリ本体)
- keyboard extension(キーボード)
- action extension(AA登録用のエクステンション)
すべてのパッケージに同じImage assetsが含まれてる・・・・・. つまりimage.assetsが,3つも冗長に含まれていたのである・・・・・・. 何も考えずにimage.assetsが共有されるだろうと思い込んでいたのが原因でした.
みなさんもextensionのリソースにはお気をつけください.
後日,AAキーボードは修正し,WiFiじゃなくても気軽に買えるアプリとして公開しています. 是非,ダウンロードしてくださいね!