当在发布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结合起来使用也不错。
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结合起来使用也不错。