您可以在开发计算机中调试应用程序,同时使应用程序在 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 上调试应用程序:
-
使用调试支持编译应用程序:
-
在 iPhone 上安装应用程序。
-
在 iPhone 上,打开 Wi-Fi 并连接到开发计算机所在的网络。
-
在您的开发计算机上启动调试会话。在 Flash Professional CS5 中,选择“调试”>“开始远程调试会话”>“ActionScript 3.0”。
-
在 iPhone 上运行应用程序。
应用程序的调试版本将提示您输入开发人员计算机的 IP 地址。输入 IP 地址并点击“确定”按钮。获取开发计算机的 IP 地址。
调试会话将显示从应用程序输出的任何
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 上载该显示对象的新版本: