3

mxmlc を使用して、単一の .as ファイルを swf にコンパイルしています。

mxmlc を実行すると、ソース コードを変更していなくても結果のサイズが異なります。

例えば、

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

mxmlc を使用して .swf を生成します。

mxmlc Test.as

結果のサイズは 461 から 465 バイトまで異なります。

コンパイラのタイムスタンプのようなものが原因だと思いますが、それを修正または無効にする方法が見つかりませんでした。「同じソースから同じバイナリ」を生成するアイデアはありますか? ありがとう!

4

3 に答える 3

2

最後に、メタデータ タグ (タグ タイプ = 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-を参照してください。タグによって書かれた mxmlc/

于 2011-04-13T08:47:00.697 に答える
0

1 : メタデータの日付:

mxmlc:

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

2 : ProductInfo のタイムスタンプ

SDK ソース コードをダウンロードし、ProductInfo.java を変更し、タイムスタンプを同じにします。次に、your_sdk_dir\lib\swfutils.jar の ProductInfo.class を更新します。

ただし、実行すると、Mxmlc も同じソースで異なるバイナリを生成します。

コンパイラのリンク順序を変更できないと思います。

于 2013-12-27T07:41:16.337 に答える