私のアプリケーションには、全体で使用される約1940個のアイコンのコレクションがあります。
それらは現在ICOであり、私に提供された新しい画像もICO形式で提供されます。1つのファイルに各アイコンの16x16と32x32の表現が含まれていることに気づきました。
各ファイルのファイルサイズは約4KBです(ファインダーによって報告されls
ていますが、1000バイトから5000バイトまでさまざまであると報告されています)
これらのアイコンのごく一部には32x32表現しか含まれておらず、その結果、サイズは約700バイトにすぎません。
現在、これらのアイコンをアプリケーションにバンドルしていますが、アプリのサイズが思ったより少し大きくなっています。
合計すると、画像の合計は約25.5MBになります。結果のアプリバンドルは約12.4MBであるため、Xcodeは何らかの圧縮を行う必要があります。これをさらにZIPに圧縮すると(App Storeに送信された場合のように)、最終的なファイルは5.8MBになります。
iPadの導入以来、海外でのAppStoreダウンロードの上限が20MBに引き上げられたことを認識しています(ただし、上限がない場合は、iPhoneアプリだけでなくiPadアプリにも適用されるかどうかはわかりません。 10MBになります)。
私が心配しているのは、新しいアイコンが追加され(1週間に最大10個のアイコンになることもあります)、時間の経過とともにアプリバンドルが膨らみ続けることです。
これらのアイコンをアプリで配布するための最良の方法は何ですか?
私が試したがあまり成功しなかったこと:
- アイコンをICOからPNGに変換する:
- pngcrushユーティリティがファイルサイズに役立つことを期待してこれを試しました。しかし、通常のPNGと押しつぶされたpngの違いはあまりないようです(サイズを圧縮するのではなく、iPhoneのGPUで表示するために画像を最適化するだけだと思います)。また、ICOからPNGに移行する際に、実際にアイコンファイルのサイズが大きくなりました...
- 画像を圧縮してから、最初の実行時に解凍します。
- これにより全体的な画像サイズは小さくなりましたが、解凍してドキュメントフォルダーにコピーし、アップグレード時に重複が発生しないようにするための手間がかかりすぎて、メリットが得られないことがわかりました。また、オリジナルおよび3G iPhoneでは、約25MBの画像を解凍してコピーするのに時間がかかりすぎて、悪いエクスペリエンスが発生します...
私が検討したがまだ試したことのないもの:
- アプリバンドル内でアイコンを配布する代わりに、それらをオンラインでホストし、オンデマンドで各アイコンをダウンロードします(実際に表示されるアイコンと時期に関するユーザーのデータによって異なります)。
- これに関する問題は、帯域幅にコストがかかり、画像のダウンロードは帯域幅を大量に消費することです。ただし、私のアプリには現在、約5,500ユーザーの小さなユーザーベースがあり(そのうち、Flurry統計に基づいて約1500がアクティブであると推定されます)、現在のホスティングパッケージでは未使用の帯域幅に大きな余裕があります。
ですから、私はこのトリッキーな問題をどのように解決するかについての考えを受け入れています。