flash - Determine si swf está en un modo o reproductor de "depuración"
actionscript-3 debugging (2)
¿Hay alguna manera de usar Flash (CS3 + AS3) para determinar si el swf publicado se está ejecutando en un reproductor de depuración o en el modo de depuración de Flash?
Soy consciente de que Flex proporciona la capacidad de configurar diferentes objetivos de compilación (versión / depuración) y que puede usar algo como CONFIG::debug
para la inclusión de código estilo #ifdef
en tiempo de compilación.
Me estoy imaginando algo así como System.isDebug()
pero no puedo encontrar nada. Quiero usar esto porque hay una funcionalidad de depuración en mi aplicación que definitivamente no quiero que esté disponible en un entorno de producción.
Mira esta clase http://blog.another-d-mention.ro/programming/how-to-identify-at-runtime-if-swf-is-in-debug-or-release-mode-build/
Esta clase proporciona dos piezas de información pertinentes (y diferentes):
- ¿Se construyó el archivo SWF con el modificador -debug (tiene símbolos de depuración compilados)?
- ¿El reproductor Flash es un reproductor de depuración (tiene la capacidad de mostrar errores, etc.)?
El Capabilities.isDebugger solo responde la segunda pregunta: es el usuario que ejecuta el reproductor de depuración de Flash. En su caso, para encerrar porciones de su aplicación en una compilación de depuración, desea la verificación de compilación de fallas (y luego no entrega las compilaciones de compilación en producción).
Sin embargo, tenga en cuenta que ambas verificaciones son verificaciones en tiempo de ejecución. El uso de compilación condicional (también conocido como CONFIG :: debug) alrededor de su código de depuración es una buena idea, ya que garantizará que el código de depuración posiblemente no se entregue en el archivo SWF final, haciéndolo lo más pequeño y seguro posible.
Reproduzco el código al que se hace referencia aquí, en caso de que el enlace del blog se caiga alguna vez:
package org.adm.runtime
{
import flash.system.Capabilities;
public class ModeCheck
{
/**
* Returns true if the user is running the app on a Debug Flash Player.
* Uses the Capabilities class
**/
public static function isDebugPlayer() : Boolean
{
return Capabilities.isDebugger;
}
/**
* Returns true if the swf is built in debug mode
**/
public static function isDebugBuild() : Boolean
{
var stackTrace:String = new Error().getStackTrace();
return (stackTrace && stackTrace.search(/:[0-9]+]$/m) > -1);
}
/**
* Returns true if the swf is built in release mode
**/
public static function isReleaseBuild() : Boolean
{
return !isDebugBuild();
}
}
}