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