我可以构建Adobe AIR应用程序的调试版本吗?

时间:2012-12-22 02:43:13

标签: flex debugging air adobe

我正在尝试在客户端计算机上调试问题。问题是问题是一个运行时错误,关于它的位置几乎没有线索。这是一个间歇性的问题。我知道ADL允许我以调试模式运行应用程序。问题是告诉用户下载和管理ADL调用将是非常困难的。如果我能给最终用户安装和运行一个安装/可执行文件然后向我发送问题的痕迹,那将会容易得多。所以我正在寻找的是客户端能够在调试模式下运行AIR应用程序的简单步骤。下载ADL并找到应用程序的安装位置将很难与最终用户远程管理。

更新: 您必须确保使用AIR 3.5和Flash 11.5,并在其他编译器设置中包含以下标志“-swf-version = 18”。然后,您必须捕获答案中提到的全局错误,它将显示错误的位置。当然没有行号。只是常规名称。感谢李先生给李的答案。

3 个答案:

答案 0 :(得分:6)

不是直接答案,但如果您发布AIR3.5(或3.6测试版),则可以获得一些调试信息:

为未捕获的RTE添加一个监听器到应用程序的顶层:

this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, globalErrorHandler);

并从侦听器中的错误中获取调试信息:

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即使对于发布AIR应用程序也会返回堆栈跟踪(只要您使用AIR3.5或更高版本)。

答案 1 :(得分:1)

没有SDK工具;我不认为可以在调试模式下运行aIR应用程序。但是,这里有几个选择:

  • 客户必须知道导致错误的是什么,对吧?你能给他们一个特殊的构建与警报框或日志记录或什么来帮助将错误隔离到一行代码?
  • 你能听一下uncaughtException事件吗?该事件将为您提供完整的堆栈跟踪(Error.getStackTrace());然后你可以记录 - 可能还有其他信息。然后你只需告诉你的客户“去这里”和“发给我这个文件”。甚至可以在某些警报中显示信息,并让用户将其复制并粘贴到您的电子邮件中。有关uncaughtException herehere
  • 的更多信息

答案 2 :(得分:0)

查看我的帖子。也许它可以帮助您在AIR版本构建中使用行号获取堆栈跟踪。 How can I get stacktrace for Adobe AIR global runtime errors in non-debug mode?

我现在在2个大项目中使用它并且效果很好。

问候