如何减少AIR app文件大小?

时间:2012-02-20 21:30:02

标签: ios actionscript-3 mobile air embed

我已经将一个AIR构建的.ipa文件上传到了Apple。来自Apple:“下面列出的应用程序二进制文件在您提交时为8 MB,但在App Store处理后将为20 MB”

所以我试图修剪它。我已经摆脱了所有未使用的.as类和所有未使用的资产。有没有人有任何聪明的方法来进一步减小文件大小?我想到的一种方式是:

如果在A级,我有:

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

然后我用相同的代码将它重新嵌入到B类中,这是否意味着它嵌入了两次,文件大小是两倍?如果是这样,我如何将其嵌入到一个类中,但可以在其他类中访问它?

编辑:我发现如果您的项目中有资源没有使用,编译器仍然会添加它们。所以你必须在发布版本之前摆脱它们。

4 个答案:

答案 0 :(得分:1)

而不是嵌入源代码为什么不在运行时从URI加载它? 创建一个抽象位图类,从URI构建位图并将其放在舞台上。 这样,您可以确保位图只存储一次并且是懒惰加载的。

<强>更新

您可以在空中为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);

}

答案 1 :(得分:1)

我使用的一个选项是仅使用最必要的资产编译ipa,然后当用户首次初始化应用程序时,它会下载并将更多资产存储在应用程序存储中(这可以通过单个zip文件完成)和FZip类:http://codeazur.com.br/lab/fzip/

这样,应用程序只需下载资产一次(首次运行),并且将来可以从本地系统立即使用。

答案 2 :(得分:0)

我没有在每个源文件中嵌入图像,而是在默认包中创建一个类,我将所有图像都放在静态公共变量中。像这样:

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

每当我需要图标时,我只使用Icons.icon1

答案 3 :(得分:0)

你不能!你的应用程序将超过20Mb,就像那样。因为需要Adobe AIR运行时,嵌入在您的IPA中。

因此,尝试优化代码,资产......无用,应该为这项工作追逐adobe!

我的应用程序:prestadget是800Ko作为APK(没有AIR运行时)但是21Mo作为IPA ;-(相同代码