Это оказалось для меня неожиданностью. Во Flash IDE легко убрать все trace из кода: File=>Publish settings=>Omit trace actions. Долгое время я был уверен, что во флексе при экспорте публичной версии Project=>Export release build во флешке выключается и дебаг и трейсы. Как оказалось – это не так. Теперь очевидно так же, что и для FlashDevelop режим "release configuration" не убирает трейсы из кода. И хотя обычный пользователь вряд ли хотя бы имеет приложения для их просмотра, они всё еще влияют на производительность флешки. Опять же это просто некрасиво.
Немного погуглил в поисках решения. Нет, судя по всему, у компилятора flex sdk нет опции аналогичной "omit trace actions". Поэтому решений не много:
Самый простой способ – сделать поиск и замену текста по всему проекту. Всего-то надо заменить "trace" на "//trace".
Так же у флекса есть довольно мощная библиотека для ведения логов 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>
Так же можно использовать условия во время компиляции. В коде пишем так:
CONFIG::debugging { trace(counter); }
Комментарии
Отправить комментарий