【问题标题】:How to Determine an mxmlc-compiled SWF File Was Built in Debug or Release Mode如何确定 mxmlc 编译的 SWF 文件是在调试模式还是发布模式下构建的
【发布时间】:2014-02-04 01:01:42
【问题描述】:

首先,我不是在谈论播放器是否是调试器。 (编辑:其实和调试播放器有关)

我用mxmlc编译了一个非常简单的带有-debug=false的swf文件:

mac-108:tmp admin$ "/Applications/Adobe Flash Builder 4.7/sdks/4.6.0/bin/mxmlc" +configname flex -debug=true -static-link-runtime-shared-libraries=true Main.as
Loading configuration file /Applications/Adobe Flash Builder 4.7/sdks/4.6.0/frameworks/flex-config.xml
/Users/admin/tmp/Main.swf (987 bytes)
mac-108:tmp admin$

Main.as:

package {
    import flash.display.MovieClip;
    import flash.text.*;

    public class Main extends MovieClip {

        public function Main() {
            // Reference: http://stackoverflow.com/questions/185477/determine-if-swf-is-in-a-debug-player-or-mode
            var st:String = new Error().getStackTrace();
            var isDebugBuild:Boolean = (st && st.search(/:[0-9]+]$/m) > -1);
            var my_st:String = "st: " + (st == null ? 'Null' : st);
            var my_DR:String = isDebugBuild?"Debug":"Release";

            var obj:TextField = new TextField();
            obj.text = my_st + "\n" + my_DR;
            this.addChild(obj);
        }
    }
}

然后我在 Chrome 浏览器中打开 Main.swf,但我看到了:

st:Null
Release

这太奇怪了,显然,我设置了-debug=true,为什么确定 swf 是处于调试还是发布状态的流行方法不起作用。

但是,如果我将代码移至 Flash Builder 4.7,它将为我提供 Debug 输出(而不是 Release)。

【问题讨论】:

    标签: debugging flash release mxmlc


    【解决方案1】:

    事实证明,当SWF在Debug模式下构建时,为了测试它是否处于调试模式,Flash Player也必须是使用Capabilities.isDebugger的调试器。

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 2016-09-01
      • 2017-08-10
      相关资源
      最近更新 更多