Как уменьшить размер файла приложения AIR? - PullRequest
1 голос
/ 21 февраля 2012

Я загрузил файл .ipa, созданный в AIR, в Apple. От Apple: «Двоичный файл приложения, указанный ниже, составлял 8 МБ, когда вы его отправили, но будет 20 МБ после обработки для App Store»

Так что я пытаюсь урезать это. Я избавился от всех неиспользуемых классов .as и всех неиспользуемых активов. У кого-нибудь есть какой-нибудь умный способ дальнейшего уменьшения размера файла? Один из способов, о котором я подумал, это:

Если в классе А у меня есть:

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

и затем я заново встраиваю его в класс B с тем же кодом, означает ли это, что он внедряется дважды с удвоенным размером файла? Если так, как бы я мог встроить его в один класс, но иметь доступ к нему в других классах?

Edit: я обнаружил, что если у вас есть активы в вашем проекте, которые вы не используете, компилятор все равно добавляет их. Поэтому вы должны избавиться от них перед созданием релиза.

Ответы [ 4 ]

1 голос
/ 23 февраля 2012

Один из вариантов, который я использовал, - это скомпилировать ipa только с самыми необходимыми ресурсами, а затем, когда пользователь впервые инициализирует приложение, загрузить его и сохранить другие ресурсы в хранилище приложения (это можно сделать с помощью одного zip-файла).и класс FZip: http://codeazur.com.br/lab/fzip/)

Таким образом, приложение должно загрузить ресурсы только один раз (при первом запуске), и они сразу же будут доступны в будущем из локальной системы.

1 голос
/ 21 февраля 2012

Вместо встраивания источника, почему бы просто не загрузить его из 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);

}
0 голосов
/ 28 февраля 2012

Вы не можете!Ваше приложение будет иметь размер более 20 Мб и все в таком духе.Поскольку требуется среда выполнения Adobe AIR, встроенная в ваш IPA.

Поэтому бесполезно пытаться оптимизировать свой код, ресурсы .... следует преследовать Adobe для этой работы!

Мое приложение:prestadget 800Ko как APK (без среды выполнения AIR), но 21Mo как IPA ;-( тот же код

0 голосов
/ 23 февраля 2012

Вместо того, чтобы встраивать изображения в каждый исходный файл, я создаю класс в пакете по умолчанию, где я помещаю все свои изображения в качестве статических открытых переменных. Примерно так:

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

Когда мне нужен значок, я просто использую Icons.icon1.

...