1

Monotouch を使用して iOS アプリを作成しています。ChartBoost、RevMob などのバインディングを作成しました。

私が抱えている問題は、最終的なアプリのサイズが約 20MB になることです。これは、このような単純なゲーム アプリには多すぎます。

メイン アプリ プロジェクトの dll を確認しましたが、サイズは約 500KB しかありません。しかし、バインディング dll は全部で約 19MB です。

私はすでに次のことを行っていますが、うまくいきません: - ネイティブ SDK のみをリンクする - ARMV7 のみを使用する - LLVM を使用する - バインディング プロジェクトに LinkerSafe 属性を追加しました。

誰でも私を助けることができますか?

4

1 に答える 1

4

あなたの設定は正気のように思えますが、あなたの質問には、私たちがあなたを助けるために使用できる詳細はあまりありません. いくつかのネイティブライブラリを使用する場合、大規模なアプリケーションを取得しても驚くことではありません。

Link native SDKs onlyは存在しないことに注意してください。Link SDK アセンブリのみであり、マネージ アセンブリ (ネイティブではない) にのみ適用されます。さらなる最適化が可能になるため、管理されたリンクは非常に重要です。

[LinkerSafe]バインディング プロジェクトを追加すると、未使用のコードが削除されます ( Link SDKが使用されている場合でも)。また、生成されたバインディング コードに対してかなりの最適化を行います (サイズを小さくし、高速化します)。バインディング アセンブリに属性が含まれていることを (前後のサイズを比較して) 確認してください。

最大限の節約を得るために、[すべてのアセンブリをリンク]を使用することをお勧めします。再度、前 (link sdk) と後 (link all) を比較して、何が得られた[Preserve]かを確認します (リフレクションを使用する場合など、これを機能させるためにコードの一部が必要になる場合があります)。

非常に新しい機能があります。これは、ネイティブ コードを (ほとんどのネイティブ ライブラリから) 削除することを容易にする要件をSmartLink取り除きます。節約を予測するのは難しい (十分なデータがない) が、多くのバインディング サンプル (github 上) は 250KB から 400KB の間で節約された。--force_load

注: Evolve トーク (ビルドの最適化について) のビデオがオンラインで利用可能になったら、回答を更新します。それまでの間、アプリケーションのサイズを最適化するのに役立つ古いブログ投稿(およびその他のドキュメント) がかなりあります。

于 2013-05-09T21:03:44.370 に答える