iPhone アプリのファイルサイズを 10.0MB 未満に抑えるための適切なガイドラインは何ですか?
質問
携帯電話ネットワーク環境と Wifi ネットワーク環境の両方で簡単にダウンロードできるように、アプリを 10.0 MB 未満に抑えたいと考えています。これまでの経験の中で、アプリをスリムに保つための良い方法を見つけたことがありますか?もしそうなら、共有してください。iPhone アプリのファイルサイズを 10.0MB 未満に抑えるための適切なガイドラインは何ですか?
解決
私が扱った 1,000 万を超えるアプリのほとんどは、リソース (多くの場合画像や音声) が原因です。これらのサイズを正しく設定することが重要です。iPhone はデバイスにバンドルするときに自動的に圧縮を行うため、シミュレーター内のサイズはデバイス上のサイズと大幅に異なる場合があることに注意してください。
すべての最適化演習と同様に、まず強固で健全なシステムを構築してから、最大の問題を引き起こしている部分に最適化の取り組みを集中する必要があります。私が使う du
このために:
- リリースでのデバイス用のビルド
- build/Release-iphoneos/.app に移動します。
du -ak | sort -rn | head
これにより、上位のものがどこにあるかのリストが表示されます。この情報は KB 単位ですが、次のブロック (Mac では 4K) に切り上げられます。しかし、すべての正確なサイズを計算するのではなく、大きいものを探しているだけです。
特に、リソースにコピーされるべきではないものがコピーされていないかどうかを確認してください。特にプロジェクトに追加したドキュメントなど、おかしなものが含まれることがあります。これをテストしてみると、自分のプロジェクト テンプレートが xcconfig ファイルをバンドルにコピーしていることに気付きました (修正しなければなりません...)
ローカライズされた NIB が多数ある場合は、NIB をローカライズせず、IBOutlet UILabel の使用を検討することをお勧めします。実際にローカライズされたテキストがない場合は、NIB をローカライズしないでください。1 つの NIB をローカライズしたからといって、すべての NIB をローカライズする必要があるわけではありません。
一般に、iPhone のビルド設定はすでにサイズの縮小に積極的に取り組んでいるため、何を変更しているのかを調べずにそれをあまりいじることはありません。
決して呼び出すことのない多くのメソッドを含む Objective-C クラスに注意してください。Objective-C は動的であるため、C のようにデッドコードの除去を行うことはできません。実行時にセレクターが使用されるかどうかをコンパイル時に知る方法はありません。したがって、「万が一に備えて」キッチンシンクが入っている物がある場合は、それらを取り除いたほうがよいでしょう。ただし、一般に、ここでは単一のオーディオ ファイルと比較した多くのスペースについて話しているわけではありません。これについては、クラス メソッドや定数などにリンクするだけの非常に巨大なオブジェクトがあるというまれな場合にのみ言及します。
他のヒント
もう一つのヒント:の / <あなたの9.9メガバイトのアプリには注意してください強い> を!
あなたは、あなたのアプリが10.1メガバイトのように見えるの最適化の多くの後に発見する必要はありません。
一つの先端は、圧縮されたメディアフォーマットを使用することです。例えば。あなたがオーディオファイルを使用している場合は、わずかに高い処理オーバーヘッドの可能な価格で、代わりに、AIFFやWAVのmp3を使用することを検討できます。 10メガバイトの実行可能ファイルは、ので、多分大きいが、メディアコンテンツ(画像、音声)を多く含むであろうアプリを異常に高い鳴ります。
それは、アプリケーションの外観と動作するかどうかグレースケールにあなたの大きな画像の数を変換します。あなたは、いくつかの純粋なグレースケールにすることができれば、貯蓄はかなり充実してます。
あなたのためのビルドプロセスに自動的に圧縮されたPNGファイル(pngcrushを使用しては、という自分自身をしない)ので、実際には10メガバイトを乗り越えるために資産のかなり多くを持っていなければならないと思いサイズです。私はこれを心配することは時期尚早な最適化であり、あなた自身が、後に近づい見つけるまで、あなたはおそらく心配する必要はありませんだと思います。
このヒントは主に iPhone ゲームに当てはまります。
- 透明度のない画像には、PNG の代わりに JPG を使用してください。
- サウンドをmp3で保存し、 与える アプリが初めてロードされるときにそれらを WAV に変換し、アプリのドキュメント ディレクトリに保存します。