如何判断Flex是否在调试模式下运行?

时间:2011-07-20 08:42:25

标签: flex

我想声明性地打开和关闭我的Flex应用程序的记录器,似乎我通常的确定它是否是调试模式的方式有时只能起作用。代码:

isDebugSWF = new Error().getStackTrace().search(/:[0-9]+]$/m) > -1;

你知道更好的方法吗?

编辑: 我在下面发布了答案。

4 个答案:

答案 0 :(得分:4)

之前的方法基于很棒的article。其中一条评论表明,在Release中,stacktrace为null,因此我对其进行了适当的修改:

protected function configureLogger() : void
{
    if(!isDebugPlayer()|| !isDebugBuild())
    {
        // stop logging
        Logger.hide = true;
    }
    else
    {
        // resume logging
        Logger.hide = false;                    
    }
}

private function isDebugPlayer() : Boolean
{
    return Capabilities.isDebugger;
}

/**
* Returns true if the swf is built in debug mode
**/
private function isDebugBuild() : Boolean
{
    var stackTrace:String = new Error().getStackTrace();
    if(stackTrace == null || stackTrace.length == 0)
    {
        //in Release the stackTrace is null
        return false;
    }
    //The code searches for line numbers of errors in StackTrace result. 
    //Only StackTrace result of a debug SWF file contains line numbers.
    return stackTrace.search(/:[0-9]+]$/m) > -1;
}

这样我最终可以根据当前的构建类型配置ThunderBoltAS3 logger

答案 1 :(得分:3)

flash.system.Capabilities类中的静态属性Capabilities.isDebugger指定安装的Flash播放器是否为调试版本。它需要Flash Player 9或AIR 1.0作为最低版本。

请记住,调试Flash Player安装程序是公开可用的,并且没有什么能阻止用户安装Flash的调试版本。如果您想要隐藏某些敏感内容,使用conditional compilation将是更好的选择。

答案 2 :(得分:0)

看起来你正在寻找同样的东西,正如另一篇文章所回答的那样。看这里:How can you tell programmatically if a Flex App is running in debug mode?

答案 3 :(得分:0)

我们在项目中使用条件编译: Adobe Documentation