我正在使用mxmlc将单个.as文件编译为swf。
每当我运行mxmlc时,即使未更改源代码,结果也会有所不同。
例如,
// Test.as
package
{
public class Test
{
}
}
使用mxmlc生成.swf:
mxmlc Test.as
,结果大小不同于461到465字节。
我想这是因为编译器中存在类似时间戳的东西,但是我找不到如何修复或禁用它。有关从同一来源生成“相同二进制”的任何想法吗?谢谢!
答案 0 :(得分:2)
最后,我发现元数据标签(Tag Type = 77)和未记录的'product info'标签(Tag Type = 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上可能有“绕过产品信息”选项..
您可以在http://www.adobe.com/devnet/swf.html上找到有关SWF文件结构和元数据标记的更多信息,并在http://wahlers.com.br/claus/blog/undocumented-swf-tags-written-by-mxmlc/
上找到有关产品信息的更多信息答案 1 :(得分:1)
您需要覆盖编译器写入生成的swf文件的元数据。您可以使用-raw-metadata编译器aguement来执行此操作。
用法:
mxmlc -raw-metadata <XML_String> Test.as
示例:
mxmlc -raw-metadata '' Test.as
(产生的swf总是190字节)。
答案 2 :(得分:0)
1:元数据中的日期:
mxmlc的:
<metadata date=" " />
<raw-metadata></raw-metadata>
2:ProductInfo中的时间戳
下载sdk源代码,修改ProductInfo.java,让时间戳保持不变。然后更新your_sdk_dir \ lib \ swfutils.jar中的ProductInfo.class
然而,当我完成后,Mxmlc也会在同一个源上生成不同的二进制文件。
我想我无法改变编译器链接顺序。