调试 iPhone 应用程序

您可以在开发计算机中调试应用程序,同时使应用程序在 ADL 中运行。您也可以在 iPhone 上调试应用程序。

iPhone 中某个不支持的 AIR 功能在使用 ADL 测试应用程序(在开发计算机上)时仍然可用。在桌面上测试内容时,请注意这些区别。有关详细信息,请参阅 移动设备不支持 ActionScript 3.0 API

在开发计算机上调试应用程序

要在开发计算机上使用 Flash Professional CS5 调试应用程序:

选择“调试”>“调试影片”>“在 AIR Debug Launcher (移动设备)中”。

您也可以通过从命令行调用 ADL 来调试应用程序。以下是对应的语法:

adl –profile mobileDevice appDescriptorFile

使用应用程序描述符文件的路径替换 appDescriptorFile

请确保包括 -profile mobileDevice 选项。

在 iPhone 上调试应用程序

在 iPhone 上调试应用程序:

  1. 使用调试支持编译应用程序:

  2. 在 iPhone 上安装应用程序。

  3. 在 iPhone 上,打开 Wi-Fi 并连接到开发计算机所在的网络。

  4. 在您的开发计算机上启动调试会话。在 Flash Professional CS5 中,选择“调试”>“开始远程调试会话”>“ActionScript 3.0”。

  5. 在 iPhone 上运行应用程序。

    应用程序的调试版本将提示您输入开发人员计算机的 IP 地址。输入 IP 地址并点击“确定”按钮。获取开发计算机的 IP 地址。

    • 在 Mac OS 中,在“Apple”菜单中选择“系统首选项”。在“系统首选项”窗口中,单击“网络”图标。“网络首选项”窗口列出了 IP 地址。

    • 在 Windows 中,启动命令行会话并运行 ipconfig 命令。

调试会话将显示从应用程序输出的任何 trace()

调试安装在 iPhone 上的应用程序时,Flash Professional CS5 支持所有调试功能,包括断点控制、跟踪代码和变量监视。

使用 GPU 呈现诊断进行调试

使用 GPU 呈现诊断功能可以查看应用程序使用硬件加速(针对使用 GPU 呈现模式的应用程序)的情况。要使用此功能,请在命令行上使用 PFI 工具编译应用程序,并包含 -renderingdiagnostics 选项:

pfi -package -renderingdiagnostics -target ipa-debug -connect ...

-renderingdiagnostics 标志必须紧跟在 -package 标志后面。

GPU 呈现诊断功能为所有显示对象显示彩色矩形:

  • 蓝色 — 显示对象不是位图,也未缓存为位图,并且正在呈现该对象。

    如果对于没有发生改变的显示对象多次显示蓝色,可能是因为该对象与移动显示对象交叠。例如,该显示对象可能是移动显示对象的一个背景。请考虑将该显示对象缓存为位图。

    如果针对您认为已经缓存的某个对象显示蓝色,可能是由于该对象使用了 GPU 无法应用的效果。这些效果包括某些混合模式、颜色转换、 scrollRect 属性和蒙版。

    如果上载到 GPU 的显示对象超过内存限制,应用程序也会显示蓝色。

    应用程序会记录针对每个蓝色矩形的消息。应用程序会将这些消息随其他 trace() 和调试输出消息一起输出。

  • 绿色 — 显示对象为位图或已缓存为位图,正在向 GPU 首次上载该对象。

    如果针对某个显示对象多次显示绿色,则应用程序中的代码正在重新创建该显示对象。例如,如果时间轴返回到创建该显示对象的帧,就会出现这种情况。请考虑修改内容,以防止重新创建同一对象。

  • 红色 — 显示对象为位图或已缓存为位图,并且正在向 GPU 重新上载该对象。

    每次显示对象发生变化时,如果要求应用程序重新呈现其位图表示,就会显示红色。例如,如果一个 2D 对象没有设置 cacheAsBitmapMatrix 属性,则缩放或旋转该对象时将重新呈现该对象。当子显示对象移动或更改时,也会发生重新呈现。

四个重绘周期后,每个彩色矩形都会淡出,前提是在这些周期中不再出现着色原因。但是,如果屏幕上没有变化,诊断颜色也不会变化。

例如,请考虑矢量背景(未缓存为位图)前面的位图显示对象(香蕉)。首次呈现香蕉时,它显示为绿色。首次呈现背景时,它显示为蓝色:

香蕉移动时,CPU 必须重新呈现背景,导致在背景上显示蓝色阴影:

背景上的蓝色阴影反映的是需要发送到 GPU 的重绘区域。

但是,如果将背景缓存为位图,则当香蕉移动时,呈现诊断功能将不显示彩色色调:

由于 GPU 保留了背景位图,因此诊断功能不显示彩色色调。GPU 不涉及 CPU 即可将香蕉与背景复合。

假设香蕉是一个没有设置 cacheAsBitmapMatrix 属性的 2D 显示对象。只要该显示对象旋转(或缩放),呈现诊断功能都会显示红色。这表示应用程序需要向 GPU 上载该显示对象的新版本: