ARM 的 Mali Graphics Debugger (MGD) 允许开发者追踪应用程序中的 Vulkan、OpenGL ES、EGL 和 OpenCL API 的调用,以逐帧了解这些调用的效果,从而帮助识别代码中可能存在的瓶颈。此博客介绍了开发者如何向虚幻引擎应用程序添加对非 root 设备上的 MGD 的支持。
我们在此采用的方案十分简单:
- 向构建系统添加拦截器库
- 编辑用于加载拦截器库的活动
- 在目标设备上安装 MGD Daemon 应用程序
在第一步中,我们将需要从 GitHub 上的各种来源下载一个版本的虚幻引擎应用程序。有关此步骤的更多信息,请参阅 Epic 指南。
获得可用的虚幻引擎副本后,下一步主要是让 MGD 能够运行起来。首先,您需要在 MGD 安装目录中找到 android-non-root 文件夹及虚幻引擎的安装文件夹(将存储库克隆到的位置)。将 android-non-root 文件夹复制到 Engine\Build\Android\Java\ 目录下。
接下来,我们需要修改 Android 的 makefile 文件以确保拦截器能够正常打包到引擎构建中。为此,需要编辑 Engine/Build/Android/Java/jni/ 目录下的 Android.mk 文件,在其末尾添加这样一行文本:include $(LOCAL_PATH)/../android-non-root/MGD.mk。修改后的文件如下如下所示:
现在我们将指定加载 MGD 库所需的主要游戏活动,找到 Engine\Build\Android\Java\src\com\epicgames\ue4\ 目录下的 GameActivity.java,然后编辑 onCreate 函数。修改后的文件如下所示:
这样一来,引擎方面的准备就全做好了。接下来我们要准备设备。保持 android-non-root 文件夹打开,同时使用下面的命令将 MGD Daemon 安装到目标手机上:
现在,在运行应用之前,需要在主机 PC 上运行以下命令 (请先运行 adb devices 以确保该设备可见):
在目标手机上运行 MGD Daemon 应用程序,让 Daemon 自动激活:
此时,您便可以将它连接到主机 PC 上的 MGD,启动您的应用程序,然后开始对其进行调试。有关 MGD 用法的更多信息,请参阅 MGD 手册。
执行上述步骤后,应能够在任何基于 Mali 的平台上结合使用 MGD 和虚幻引擎应用程序。如需更多信息或有疑问,请联系 ARM Mali graphics Connected Community。