如何确保SWF文件Hash值相同
11 一 2012
直到你需要对比2个swf是否有改动时,才会发现尽管as代码不做任何修改,每次重新编译出来的swf的hash值都会变。
在编写一个自动化部署及脚本时,需要对本次发布的文件和已近发布的文件进行hash效验,以此确认文件是否有过修改。就遇到了这个恼火的问题。
一番折腾后发现,Flex SDK 编译器在swf文件尾加入了一个41的tag类型 (ProductInfo),里面包含了编译时间导致。
问题找到了,好在Flex SDK是开源的,通过搜索定位相关功能在swfutils的模块里面,顺利找到了对应的源码进行修改,编译出class。更新到jar包。
经过修改后,把编译时间固定到2011年11月11日11时11分11秒,这样每次编译出的swf文件hash是完全一致的。
已在3.6.0和4.5.0两个版本中测试有效,尚未发现副作用。
顺便也提供修改后编译出的class文件,可以自行更新到Flex SDK 中的\lib\swfutils.jar 中。
ProductInfo.class (3.1 KiB, 163 hits)
确保SWF文件Hash值相同(hack edition)
BTW:需要注意的是在默认的metaData信息里也包含了日期,这个比较好处理,本身提供了自定义的参数,如指定下列编译参数既可实现修改。
1 |
-raw-metadata cbmland.com |
8 Responses for "如何确保SWF文件Hash值相同"
-
这个有什么用?好像一版的用不到?
如果是这样,那可以用AS拿到这个信息,每次都能确定swf的最后编译时间了。不错~~~
编译参数添加 incremental=true
编译的时候会检查缓存文件,如果没有变化,就不会再次编译
这个一般用不上,太专业了
Leave a Reply
2012-01-12 00:01