分析主流 x86 和 ARM* Android* 设备上 C/C++ 的性能并调试 OpenGL ES* 帧





0/5 (0投票)
通过最新的版本(目前是 2014 R2),Intel® 图形性能分析器 (Intel® GPA)、Intel® 帧调试器和 Intel® VTune™ Amplifier 能够支持大多数主流的 Android 4.x 设备,无论其架构如何(ARM* 或 x86)。
引言
在开发 Android* 应用程序时,您通常需要在许多不同的平台上进行测试、优化和调试。虽然几乎所有的硬件和芯片制造商都提供一套定制工具来实现这一点,但开发者可能会觉得安装和学习使用所有这些工具非常麻烦。通过最新的版本(目前是 2014 R2),Intel® 图形性能分析器 (Intel® GPA)、Intel® 帧调试器和 Intel® VTune™ Amplifier 能够支持大多数主流的 Android 4.x 设备,无论其架构如何(ARM* 或 x86)。
我们已经测试了这些 Intel 工具,并在下面的 ARM Android 设备列表上成功使用它们,但基本上任何 Android 4.x 设备都可能兼容。(注意:列表中未显示的基于 ARM* 的设备不受支持,但仍可能与 Intel GPA 工具集一起使用。)
模型 | GPU | Android* 版本 |
---|---|---|
三星* Galaxy Nexus |
Imagination Technologies* |
Android 4.3 |
三星* Galaxy S4 |
Imagination Technologies* |
Android 4.4 |
三星* Galaxy S III |
ARM* Mali 400MP |
Android 4.3 |
Google* Nexus 4 |
Qualcomm* Adreno 320 |
Android 4.4 |
Google* Nexus 5 |
Qualcomm* Adreno 330 |
Android 4.4 |
LG* G2 D802 |
Qualcomm* Adreno 330 |
Android 4.4 |
亚马逊* Kindle Fire HD |
Imagination Technologies* |
亚马逊* Fire OS 3.0 |
Intel® GPA 系统分析器 - 应用性能的高层视图
Intel GPA 系统分析器可以在 Windows* 7/8.x、Mac* OS X* 和 Linux* 上运行,并可用于分析通过 ADB 连接的几乎所有 Android 4.x 设备上运行的应用。它是一个免费工具,是 Intel GPA 套件的一部分,该套件提供专用的图形分析和优化工具,或者 INDE,这是支持 Intel® 架构和 ARM* 的原生跨平台生产力套件。如果您的设备已 root,此工具可以分析设备上安装的任何应用程序。否则,它只能分析具有 Internet 权限且 debuggable 标志设置为“true”的应用。
使用 gradle 或 ant / Android Studio 或 Eclipse* 进行调试构建时,会自动在 AndroidManifest 中将 debuggable 标志设置为“true”。但当分析应用程序的实际性能时,您希望运行已为发布版本优化过的版本。
您可以在清单文件中手动将此标志设置为“true”,但 lint 会对此发出警告并导致构建中止。您可以轻松解决此问题。
在 Eclipse 中:在 Android 首选项的 Lint 错误检查中禁用“HardcodedDebugMode”。
在 Android Studio 中:在您的 build.gradle 中设置
android {
lintOptions {
disable 'HardcodedDebugMode'
}
}
现在,运行时,您首先会看到所选设备上运行的应用程序列表
选择一个应用程序将触发该应用程序在设备上的启动,并进行实时分析
从那里,您可以将任何指标从左侧拖放到右侧,以查看其值的实时演变。您可能无法在每个设备上获得特定于硬件的指标,因为它们的兼容性各不相同,但您至少可以获得:目标应用 CPU 负载、RAM 使用量、设备和网络 IO、OpenGL* 指标(绘制调用、顶点数、帧时间)。
除了这些实时值之外,您还可以从窗口左下角触发“状态覆盖”。这将帮助您确定应用程序中的当前瓶颈
正常场景 | 所有纹理设置为简单的 2x2 |
![]() |
![]() |
禁用 Alpha 混合 | 显示线框 |
![]() |
![]() |
您还可以禁用所有绘制调用。然后,将不会渲染任何图形,但如果 FPS 得到改善,则瓶颈不在 OpenGL* 端。
一篇关于 Intel GPA 的更深入的文章以及示例代码可在以下网址找到:https://software.intel.com/en-us/android/articles/using-the-intel-gpa-system-analyzer-to-improve-android-apps。
Intel® 帧调试器 - 调试 OpenGL 渲染视图
Intel 帧调试器用于捕获和完全调试 OpenGL 帧。它也是一个免费工具,您可以从 https://software.intel.com/en-us/vcsource/tools/intel-gpa 或 INDE 获取,并且在大多数 Android 设备上都能正常工作。
目前,它只能在 Windows 7/8.x 平台上运行。
首先,通过单击“Add”从设备添加一个帧
这将显示一个应用程序列表,您可能拥有或可能没有权限进行分析。与 Intel GPA 系统分析器一样,您可以分析已 root 设备上的任何应用程序。否则,您只能分析具有 Internet 权限且 debuggable 标志设置为“true”的应用程序。
双击启动一个应用程序,然后单击“capture”以获取一个帧。完成后,返回到之前的视图并选择捕获的帧
您可以看到左侧的所有绘制调用以及右侧关联的模拟 OpenGL ES 帧缓冲区。
双击其中一个绘制调用将允许您检查与该绘制调用关联的 OpenGL ES 管道的所有步骤,包括
- 图元和关联的顶点缓冲区对象
- 顶点和片段着色器
您可以查看和修改这些着色器,甚至修改它们接收的值。这将修改模拟帧以及您的设备(如果仍已连接!)上的渲染帧。
Intel® VTune™ Amplifier - 分析 Android 应用程序 C/C++ 代码的性能
Intel VTune Amplifier 是 Intel® System Studio 套件的一部分。与前面提到的工具不同,此套件不是免费的,除非是用于 非商业软件开发。目前,此工具可以从 Windows 和 Linux 主机运行。
要开始使用 VTune Amplifier,请创建一个新项目
在其属性中,选择您的设备和“Launch Android Package”作为类型,然后您可以输入您的包名或单击“browse”进行查找
完成此操作后,您可以启动“basic hotspot”分析。开始分析将会在您的设备上启动应用程序
单击“Stop”停止收集(并自动关闭应用程序)。
跟踪将被收集并显示
在那里,您可以使用“Bottom-up”视图开始查看结果,并按 Module / Function / Call Stack
对数据进行分组
要将完整的库符号和源代码与您的结果关联,您可以将它们的路径添加到您的项目属性中(通常是非剥离库的 ./obj/local/ABI/
,源代码的 ./jni
)。
有关使用 VTune 进行性能分析的更多信息,请访问:https://software.intel.com/en-us/node/471808
在支持的 x86 Android 设备上(Intel® 参考设计和采用开发者映像的 Dell Venue* 8),VTune Amplifier 可用于分析 Java* 工作负载,获取 CPU 和 GPU 指标,并进行功耗分析。您可以在以下链接中找到更多详细信息
- https://software.intel.com/en-us/android/articles/mobile-development-kit-for-android
- https://software.intel.com/en-us/articles/enabling-java-analysis-on-android-using-vtune-amplifier-2014-for-systems
- https://software.intel.com/en-us/articles/how-to-use-the-intel-energy-profiler-in-intel-system-studio-2014