Apache flex 我可以构建AdobeAIR应用程序的调试版本吗?

Apache flex 我可以构建AdobeAIR应用程序的调试版本吗?,apache-flex,debugging,air,adobe,Apache Flex,Debugging,Air,Adobe,我正试图在客户端计算机上调试一个问题。问题是,这个问题是一个运行时错误,几乎不知道它在哪里。这是一个间歇性问题。我知道ADL允许我以调试模式运行应用程序。问题是,告诉用户下载并管理ADL调用将非常困难。如果我只给最终用户一个安装/可执行文件来安装和运行,然后将问题的跟踪信息发送给我,那就容易多了。因此,我要寻找的是客户端能够在调试模式下运行AIR应用程序的简单步骤。下载ADL并查找应用程序的安装位置将很难与最终用户进行远程管理 更新: 您必须确保正在使用AIR 3.5和Flash 11.5,并在

我正试图在客户端计算机上调试一个问题。问题是,这个问题是一个运行时错误,几乎不知道它在哪里。这是一个间歇性问题。我知道ADL允许我以调试模式运行应用程序。问题是,告诉用户下载并管理ADL调用将非常困难。如果我只给最终用户一个安装/可执行文件来安装和运行,然后将问题的跟踪信息发送给我,那就容易多了。因此,我要寻找的是客户端能够在调试模式下运行AIR应用程序的简单步骤。下载ADL并查找应用程序的安装位置将很难与最终用户进行远程管理

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

没有SDK工具;我认为不可能在调试模式下运行aIR应用程序。但是,这里有几个备选方案需要考虑:

  • 客户必须知道是什么导致了错误,对吗?你能给他们一个带有警告框或日志记录的特殊版本,或者一些帮助将错误隔离到一行代码中的东西吗
  • 你能听听这件事吗?事件将为您提供完整的堆栈跟踪();然后你可以记录这些信息——可能还有其他信息。然后你只需要告诉你的客户“转到这里”和“给我发送这个文件”,甚至在一些警报中显示信息,让用户复制并粘贴到给你的电子邮件中。有关uncaughtException和

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

将未捕获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将返回堆栈跟踪,即使对于release AIR应用程序也是如此(只要您使用AIR3.5或更高版本)。

查看我的帖子。也许它可以帮助你在空气释放构建中获得带有行号的堆栈跟踪。

我现在在两个大项目中使用它,效果非常好


你好

该死!我总是被打败;)根据这些文档:在AIR 2中添加了UncaughtErrorEvent。为什么您推荐AIR3.5或更高的要求?引用自:“对于Flash Player 11.4及更早版本和AIR 3.4及更早版本,堆栈跟踪仅在代码在Flash Player的调试器版本或AIR调试启动器(ADL)中运行时可用。在这些运行时的非调试器版本中,调用此方法返回null。”我将+1用于澄清。你是说我需要在Flash Builder中将我的SDK升级到AIR 3.5 abd Flash Player 11.5吗?然后发布到那个。这将迫使用户在他们的机器中获得AIR 3.5来运行它,然后我将获得跟踪。正确吗?好的,在附加的编译器设置中使用它-我将“-swf version=18”,它就可以工作了。不知道为什么需要这样做;将namespace设置为AIR3.5应用程序内描述符文件应该足以迫使它编译为3.5,但我猜它不是。