当在发布flex或flash应用时,不要忘记删除你的Debug代码

当我们开发flex程序时,经常使用Firefox 插件Flash Tracer来输出调试信息。它可以让我们在运行非debug版本时,使用Firefox浏览器来查看调试信息,而且非常有用。但是可能就会泄漏了很重要的信息,让不法分子所利用,还可能影响性能,所以在发布程序时移除debug信息非常有必要。在flash中直接有相关选项移除,但在flex中找不到这样的功能。所以我们可以用以下几种折衷办法。
1.使用替换功能,按ctrl+shift+F,查找文本输入"trace",文件名模式选择mxml和as.然后替换,弹出的窗口输入"//trace",不过这样要继续开发就得重新改回来,再用替换功能替换回来。在发行版中注释信息是被删除的。 
2.使用mx.logging包,代码如下
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init();">
       <mx:Script>
         <![CDATA[
            import mx.logging.Log;
            import mx.logging.ILogger;
            import mx.logging.LogEventLevel;
            import mx.logging.targets.TraceTarget;
   
            private var _log:ILogger;
            private var _traceTarget:TraceTarget;
   
            private function init():void {
                   _traceTarget = new TraceTarget();
                   _traceTarget.filters=["*"];
                   _traceTarget.level = LogEventLevel.ALL;
                   _traceTarget.includeDate = false;
                   _traceTarget.includeTime = false;
                   _traceTarget.includeCategory = true;
                   _traceTarget.includeLevel = true;
                   Log.addTarget(_traceTarget);
   
                   _log = Log.getLogger("ExampleLogger");
                   _log.info("Your tracing like a pro!");
            }
         ]]>
       </mx:Script>
</mx:Application>
当你不需要debug信息时只要把Log.addTarget(_traceTarget);
语句删除就行了。

3.可以写个类继承Trace的类
package
{
import flash.trace.Trace;

public class myTrace extends Trace
{
public static const debug:Boolean=false;
public function myTrace()
{
super();
}

public static function show(... arguments):void{
if(debug){
trace(arguments);
}

}
}
}
使用常量debug来设置。
4.使用条件编译,代码如下
CONFIG::debugging { 
trace(i);
}
然后在工程->属性->flex 编程器的附加编译参数加入
-define=CONFIG::debugging,false

-define=CONFIG::debugging,true

总结,以上四种方法我觉得第四种比较好,可以彻底把trace语句删除,不过写起来麻烦些,可以3和4结合起来使用也不错。
posted @ 2012-03-02 12:20  zhych  阅读(370)  评论(0编辑  收藏  举报