Mxmlc генерирует разные двоичные файлы из одного источника

Я компилирую один файл .as в swf с помощью mxmlc.

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

Например,

// Test.as
package
{
    public class Test
    {
    }
}

И генерирует .swf с помощью mxmlc:

mxmlc Test.as

а размер результата отличается от 461 до 465 байт.

Я предполагаю, что это из-за вещей, подобных отметкам времени в компиляторе, но я не мог найти, как это исправить или отключить. Есть идеи по созданию «одного и того же двоичного файла из одного источника»? Спасибо!


person Flexx    schedule 12.04.2011    source источник
comment
Итак, вы говорите, используя этот ТОЧНЫЙ тестовый пакет, что если вы дважды скомпилируете с помощью mxmlc, каждый раз у вас будет другой размер? Ваш вопрос не очень ясен.   -  person J_A_X    schedule 12.04.2011
comment
да, каждый раз, когда я пытаюсь mxmlc Test.as, он генерирует другой файл Test.swf по размеру и содержанию.   -  person Flexx    schedule 13.04.2011


Ответы (3)


Наконец, я обнаружил, что тег метаданных (тип тега = 77) и недокументированный тег «информация о продукте» (тип тега = 41) содержат время согласования.

Мне удалось удалить отметки времени, выполнив следующие действия:

1. open swf and un-zlib
2. clear timestamps in metadata tag and product info tag
3. re-zlib and make new .SWF

Но меня это не устраивает, поэтому требуется дополнительная работа с файлом SWF. Я хочу найти более простой способ. на mxmlc может быть опция «пропустить информацию о продукте».

Дополнительную информацию о структуре файла SWF и теге метаданных можно найти на странице http://www.adobe.com/devnet/swf.html и информацию о продукте на http://wahlers.com.br/claus/blog/undocumented-swf-tags-written-by-mxmlc/

person Flexx    schedule 13.04.2011
comment
Flexx, не могли бы вы объяснить свой процесс удаления временных меток? - person WesleyJohnson; 19.02.2013

Вам необходимо переопределить метаданные, которые компилятор записывает в результирующий SWF-файл. Вы можете сделать это с помощью команды компилятора -raw-metadata.

Использование:

mxmlc -raw-metadata <XML_String> Test.as

Пример:

mxmlc -raw-metadata '' Test.as

(Результирующий swf всегда составляет 190 байт).

person Matt MacLean    schedule 12.04.2011
comment
Спасибо за помощь, но он по-прежнему создает файл другого размера и содержимого. Метаданные (вещь rdf) были очищены, но когда я отключил zlib swf-файл, я обнаружил, что в swf есть еще одна временная метка. Когда вы отменяете zlib указанный выше swf, временная метка находится в 0x37 ~ 0x3f. - person Flexx; 12.04.2011

1: дата в метаданных:

mxmlc:

 <metadata date=" " />
 <raw-metadata></raw-metadata>

2: отметка времени в ProductInfo

загрузите исходный код sdk и измените ProductInfo.java, оставив отметку времени неизменной. а затем обновите ProductInfo.class в your_sdk_dir \ lib \ swfutils.jar

Однако когда я это сделал, Mxmlc также генерирует другой двоичный файл из того же источника.

Я думаю, что не могу изменить порядок ссылок компилятора.

person Nightost    schedule 27.12.2013