英文原文:https://developer.arm.com/documentation/101545/0511/?lang=en
3. 开始之前
按照本节中的步骤准备您的应用程序,准备好使用 Graphics Analyzer 进行跟踪
3.1 主机系统要求
确保您的主机满足运行 Graphics Analyzer 的这些要求:
- 如果您正在捕获 Linux 目标,它可以使用TCP/IP 连接到目标以进行在线分析,并打开端口5002。
默认端口为 5002。要更改默认端口,请使用 --port/-p 选项并指定介于 1 和 65535 之间的不同端口号。有关详细信息,请参阅第 35 页的 4.3 通过 TCP/IP 捕获 Android 和 Linux 设备 .
- 至少有 8GB 的系统 RAM 可用。 Arm 建议您至少有 12GB 的可用 RAM。
3.1.1 增加可用内存
要增加图形分析器可以容纳的最大捕获大小,请增加应用程序可用的内存量。
程序
- 使用文本编辑器打开 <install_directory>/gui/aga.ini
- 查找以 -Xmx 开头的 Java 虚拟机 (JVM) 参数。 参数后面的数字定义应用程序在运行时声明的最大内存量,尾随 m 表示兆字节或 g 表示千兆字节
- 将此数字增加为四的倍数,以匹配您系统的功能。 确保您的修改遵循与参数相同的格式,即没有空格和尾随的小写 m 或 g。
3.1.2 临时存储
根据被跟踪应用程序的复杂性,Graphics Analyzer 可能需要大量的临时磁盘存储。
默认使用系统临时存储目录。 如果此目录中没有足够的可用空间,Graphics Analyzer 会显示警告并停止将数据缓存到目录,从而增加内存使用量。
通过单击 Edit > Preferences 并为自定义临时存储目录字段选择现有目录来更改临时存储目录。
3.2 目标系统要求
Graphics Analyzer 支持跟踪特定的 Khronos Group API
对于安卓:
- 适用于 Android 9 及更高版本的 Vulkan 1.0-1.2。
- 适用于 Android 8 及更高版本的 OpenGL ES 2.0、3.0、3.1 或 3.2。
支持图形分析器的推荐 Android 设备列表可从开发人员的 Arm Mobile Studio 支持的设备页面获得。
对于 Android 以外的平台:
- Vulkan 1.0-1.2
- OpenGL ES 2.0, 3.0, 3.1, or 3.2
- OpenCL 1.0, 1.1, and 1.2
3.3 安卓
准备在 Android 目标上捕获应用程序时,请遵循这些说明。
3.3.1 Android 目标的先决条件
要在 Android 目标设备上运行图形分析器,请确保正确配置 Host 和目标。
配置你的Host
- 安装 Android 调试桥 (ADB),它随 Android 软件开发工具包 (SDK) 提供。
- 编辑主机上的 PATH 环境变量以包含 Android SDK 平台工具目录的路径。
配置您的设备
- 将目标设备连接到主机上的 USB 端口。
- 在目标设备上启用开发者模式。
- 通过选择 Settings > Developer options 在目标设备上启用 USB 调试。
- 对于可调试应用程序,请按照第 18 页的 3.3.2 准备捕获可调试应用程序中的说明进行操作。
- 对于不可调试的应用程序,请按照第 18 页的 3.3.3 准备捕获不可调试的应用程序中的说明进行操作。
无法在 Android 的发布版本上捕获不可调试的应用程序。
3.3.2 准备捕获可调试的应用程序
完成所有先决条件后,目标设备将出现在图形分析器的设备管理器中。
开始之前
- 目标设备必须运行Android 8.0或以上的发布版本。
- 完成Android目标的先决条件。
流程
- 在 Graphics Analyzer 中打开 Device Manager ,找到你的设备。更多细节请见第32页4.2通过adb为安卓设备采集。
- 如果设备管理器没有找到你的设备,测试一下adb连接。将目标设备连接到你的主机,然后在终端窗口运行adb设备命令。如果adb连接良好,你会看到你的设备的ID,没有权限错误,你可以顺利运行adb shell。更多信息请参见《Android Studio用户指南》。
3.3.3 准备捕获不可调试的应用程序
要捕获不可调试的应用程序,你必须安装一个Vulkan或OpenGL ES层驱动,并手动安装和配置aga-daemon,以整理来自不同捕获应用程序的信息。然后使用设备管理器来连接到你的设备。
开始之前
- 一个Arm Mobile Studio Professional或Arm Development Studio许可证。
- 目标设备必须运行Android 10或更高版本的eng或userdebug build。参见https:// source.android.com/setup/build/building以了解更多信息。
- 完成Android目标的先决条件。
关于这项任务
- 这些说明只适用于在运行Android 10或更高版本的预生产设备上进行测试。
- 这些指令并不要求被剖析的应用程序是可调试的
- Android虚拟了文件系统,给应用程序的每个用户一个唯一的应用程序数据目录,以他们的用户ID命名。默认用户,也是最常用的,是用户0。 你可以用以下adb命令查询设备上配置的用户列表。
adb shell pm list users
Users:
UserInfo{0:Name String:c13} running
UserInfo在:Name String之前的第一个数字是数字user_id,你可以在应用程序目录路径中使用它。
流程
- 安装适合你所使用的API的层驱动。
- 要使用Vulkan API层系统捕获Vulkan应用程序,你必须将拦截器作为全局Vulkan层安装在你的设备上。
a. 将libVK_layer_aga.so复制到设备上。
- 对于32位拦截器。
adb push target/android/arm/libVK_layer_aga.so /data/local/tmp adb
shell chmod 777 /data/local/tmp/libVK_layer_aga.so- 对于64位拦截器。
adb push target/android/arm64/libVK_layer_aga.so /data/local/tmp
adb shell chmod 777 /data/local/tmp/libVK_layer_aga.so
b. 以超级用户身份在你的目标设备上打开一个shell,运行。
adb shell
su
或者
adb root
adb shell
c. 将libVK_layer_aga.so复制到app文件夹中并重命名。
cp -f /data/local/tmp/libVK_layer_aga.so
/data/user/< user_id >/< package_name >/libVkLayerAGA.so
d. 从主机上启用层。
adb shell settings put global enable_gpu_debug_layers 1
adb shell settings put global gpu_debug_app < package_name >
adb shell settings put global gpu_debug_layers VK_LAYER_ARM_AGA
更多信息请参见在Android上安装Vulkan验证层。
- 为了捕捉OpenGL ES应用程序,你必须将拦截器安装为设备上的全局OpenGL ES层。
a. 将libGLES_layer_aga.so复制到设备上,然后复制到app文件夹中。
adb push libGLES_layer_aga.so /data/local/tmp
adb shell chmod 777 /data/local/tmp/libGLES_layer_aga.so
adb shell cp /data/local/tmp/libGLES_layer_aga.so /data/user/< user_id >/
< package_name >
b. 启用层。
adb shell settings put global enable_gpu_debug_layers 1
adb shell settings put global gpu_debug_app < package_name >
adb shell settings put global gpu_debug_layers_gles libGLES_layer_aga.so
更多信息请参见在Android上安装OpenGL ES层。
- 在你的主机上打开一个shell。
- 导航到 Graphics Analyzer 的安装目录。
- 将 daemon 程序复制到你的目标设备上。
- 对于32位的daemon。
adb push target/android/arm/aga-daemon /data/local/tmp- 对于64位的daemon。
adb push target/android/arm64/aga-daemon /data/local/tmp
- 以超级用户身份在你的目标设备上打开一个shell,运行以下程序
adb shell
su - 在设备上安装 daemon 程序,并授予适当的权限。
cp /data/local/tmp/aga-daemon /system/bin
chmod 777 /system/bin/aga-daemon
- 在主机上输入以下命令。
adb forward tcp:5002 tcp:5002
adb shell aga-daemon
接下来的步骤
打开图形分析器和设备管理器,然后打开Linux/IP标签,连接到默认的IP地址127.0.0.1和端口5002。更多信息见第32页4.2通过adb为安卓设备采集。