2012-02-20 5 views
1

AIRで作成された.ipaファイルをアップルにアップロードしました。アップルから:「以下に挙げるアプリのバイナリは、あなたがそれを提出したときに8メガバイトだったが、一度App Storeのために処理20メガバイトになります」AIRアプリケーションのファイルサイズを減らす方法は?

だから私はそれをトリミングしようとしています。私は使用されていないすべてのクラスと未使用のすべての資産を取り除きました。誰もファイルサイズをさらに縮小する巧妙な方法はありますか?私が考える一つの方法は以下です:

場合クラスAIでいる:

[Embed(source="assets/newButtons/purple/purpleHomeSmall.png")] 

、その後、私は同じコードを持つクラスBでそれを再埋め込み、それはそれは二回で二回埋め込まれている意味していファイルサイズ?もしそうなら、どのように私は1つのクラスに埋め込みますが、他のクラスではそれにアクセスできますか?

編集:私はあなたが使用していないプロジェクト内の資産を持っている場合、コンパイラはまだそれらを追加することを発見しました。だからあなたはリリースビルドを作る前にそれらを取り除かなければならない。

+0

は結果のIPAファイルをチェックしている(それは実際にはZIPファイルである - ので、あなたが名前を変更することがあり – Till

+0

名前が変更され、解凍されました。ペイロードという名前のフォルダが作成されました。その中に1つのアイテムがあり、サイズが22の.appファイルが作成されていました。 (私はMacにいる) – David

+0

これで、そのアプリを選択するときにMacで番組バンドルのコンテンツを使用する。 – Till

答えて

0

は、代わりに各ソースファイル内の画像を埋め込む、私は何をすべきか、私は静的パブリック変数としてすべての私のイメージを置くデフォルトのパッケージでクラスを作成することです。このような何か:

package { 
    public class Icons{ 
    [Embed(source="assets/icon1.png")] [Bindable] static public var icon1:Class; 
    } 
} 

私はアイコンを必要とするたびに、私はちょうどIcons.icon1を使用しています。

+0

私はこれを正しいとマークしています。なぜなら、これは素晴らしいアイデアであり、資産を整理してモジュール化するのに役立つからです。 – David

1

ソースを埋め込むのではなく、実行時にURIから読み込むのはなぜですか? URIからビットマップを作成してステージ上に配置する抽象ビットマップクラスを作成します。 この方法を使用すると、ビットマップが1回だけ格納され、遅延してロードされることを保証できます。

更新

あなたは、iOSの設定]ダイアログボックスのために空気中のフォルダを追加することができます。 置き、あなたが望むイメージとは:

var imageLoader:Loader = new Loader(); 
var theURL:String = "string to your uri can be local or web"; 
var imageRequest = new URLRequest(theURL); 

imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 

imageLoader.load(imageRequest); 

function onComplete(evt:Event) 
{ 

addChild(imageLoader.content); 

} 
+0

興味深い考え。しかし、デバイスにローカルの場合は、.pngファイルのサイズをアプリに含める必要があると思います(アプリがロードされるたびにアセットを見つけるためにアプリをインターネットに送りたくない)。うーん...サンプルコードを投稿できますか?一方、私は上の編集として追加したいくつかの発見をしました。ありがとう! – David

+0

@davidbatesこれは、埋め込みリソースがコンパイル時にswfの中に含まれるflexウェブアプリケーションでのみ有効です。あなたが航空アプリを持っている場合、swfの中にはなく、公開されるとマークされたファイルの全内容は、結果の.air/.ipaファイルに含まれます。 –

+0

アドリアンに感謝します。 – David

1

私が使用した1つのオプションは、最も必要な資産だけを使ってipaをコンパイルすることです。その後、ユーザーが最初にアプリケーションを初期化して、アプリケーションストレージに追加の資産をダウンロードして保存します(これは、ファイルとFZipクラス:http://codeazur.com.br/lab/fzip/

この方法では、アプリケーションはアセットを一度(最初の実行時に)ダウンロードするだけで、ローカルシステムからすぐに利用できるようになります。

+0

アプリのアップロード時に最初のファイルサイズにどのような影響があるのか​​分かりますか?それはアップルとアンドロイドの市場が計算しているものなのですから。また、これが両方のプラットフォームで動作するかどうかをテストしましたか?ありがとう。 – David

+0

私は、このセットアップをその正確な目的に使用しているため、最初のファイルサイズがより小さくなることを意味します。また、 - これは間違いなくiOSで動作し、私はそれがAndroidでもうまくいかない理由はないと思う。 – fideldonson

+0

これは良いアイデアだと思いますが、テストデータが必要です。私はあなたがしていない場合は、テストをしようとします。お持ちの場合は、圧縮前と圧縮後のアセットファイルサイズと結果の.ipaのサイズに関する情報を提供してください。ありがとう! – David

0

できません!あなたのアプリは20Mb以上のものになるでしょう。あなたのIPAに埋め込まれたAdobe AIRランタイムの必要性から。

あなたのコードを最適化しようとすると無駄なので、資産....この仕事のためにアドビを追うべきです!

マイアプリケーション:prestadget APKとして800Ko(W/O AIRランタイム)が、IPAなど21Mo ;-(同じコード

+0

これは正しくありません。私のアプリは19.8メガで、無線ネットワークの制限の下でぴったりだ。 – David

+0

あなたのアプリは何ですか? –

+0

これはApology Wizと呼ばれています。あなたはそれがアプリケーションストアで何をするかを見ることができます - 左または右の傾きの意味を変更します。振り直して書き直す。テキストまたは電子メールで送信します。 – David

関連する問題