flex - ¿Puedo construir una versión de depuración de una aplicación de Adobe AIR?
debugging (3)
no es una respuesta directa, pero si publica para AIR3.5 (o 3.6 beta), puede obtener información de depuración:
agrega un oyente para RTE no capturadas al nivel superior de tu aplicación:
this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, errorHandler);
y obtener información de depuración del error en el oyente:
function globalErrorHandler(event:UncaughtErrorEvent):void
{
var message:String;
//check for runtime error
if (event.error is Error)
message = (event.error as Error).getStackTrace();
//handle other errors
else if (event.error is ErrorEvent)
message = (event.error as ErrorEvent).text;
else
message = event.error.toString();
//do something with message (eg display it in textfield)
myTextfield.text = message;
}
getStackTrace devolverá un seguimiento de pila incluso para las aplicaciones AIR de lanzamiento (siempre que use AIR3.5 o superior).
Estoy intentando depurar un problema en una máquina de clientes. El problema es que el problema es un error de tiempo de ejecución con muy poca pista sobre dónde está. Es un problema intermitente. Sé que ADL me permite ejecutar la aplicación en modo de depuración. El problema es decirle al usuario que descargue y administre la invocación ADL va a ser muy difícil. Sería mucho más fácil si pudiera simplemente darle al usuario final una instalación / ejecutable para instalar y ejecutar y luego enviarme el rastro del problema. Entonces, lo que estoy buscando son pasos fáciles para que el cliente pueda ejecutar la aplicación AIR en modo de depuración. Descargar ADL y encontrar la ubicación de instalación de la aplicación va a ser difícil de gestionar de forma remota con el usuario final.
Actualización: debe asegurarse de estar trabajando con AIR 3.5 y Flash 11.5 y también incluir el siguiente indicador "-swf-version = 18" en configuraciones adicionales del compilador. Luego debe detectar el error global como se menciona en la respuesta y le mostrará la ubicación del error. Sin números de línea, por supuesto. Solo nombres de rutina. Gracias milion a Lee por la impresionante respuesta.
Sin las herramientas SDK; No creo que sea posible ejecutar una aplicación aIR en modo de depuración. Pero, aquí hay algunas alternativas para considerar:
- El cliente debe tener una idea de lo que está pasando para causar el error, ¿verdad? ¿Puedes darles una compilación especial con Alert Boxes o logging o algo para ayudar a aislar el error a una línea de código?
- ¿Puedes escuchar el evento uncaughtException ? El evento le dará el seguimiento completo de la pila ( Error.getStackTrace () ); que luego podría iniciar sesión, posiblemente con otra información. Luego solo tienes que decirle a tu cliente que "vaya aquí" y "me envíe este archivo". O incluso mostrar la información en alguna alerta y hacer que el usuario la copie y pegue en un correo electrónico. Más información sobre uncaughtException aquí y aquí
revisa mi publicación Tal vez te ayude a obtener el seguimiento de la pila con los números de línea en una versión de lanzamiento de AIR. ¿Cómo puedo obtener stacktrace para los errores de tiempo de ejecución global de Adobe AIR en modo no depuración?
Lo uso en 2 grandes proyectos en este momento y funciona muy bien.
Saludos