GAPID (Grapphics API Debugger) 是一系列的Graphics调试工具,可以检查,微调,重播应用对图形驱动的API调用。
GAPID 可以跟踪Android任何可以调试的应用,即android:debuggable = true
.或者有root权限,任何应用都可以trace。
GAPID 也可要trace任何的桌面Vulkan应用。
GAPID 是前面的OpenGL trace的升级,且跨平台
源码下载:
git clone https://github.com/google/gapid.git
GAPID用的Bazel编译系统,参考:
安装Bazel:
https://github.com/google/gapid/blob/master/BUILDING.md#linux
编译Gapid:
https://github.com/google/gapid/blob/master/BUILDING.md#building-gapid
需要注意的是,需要 Android 21的API, 要不会报错:
Android SDK api level 21 was requested
GAPID的编译很慢,如果只是单纯的使用,没有必要自己去编译,可以直接下载安装发布的release版本:
https://github.com/google/gapid/releases
我用的Ubuntu平台,直接下载deb包
编译完成后,编译结果在<gapid-root>/bazel-bin/pkg/gapid
。gapid包含了一下子组件:
gapii: Graphics API拦截
出于应用和GPU驱动间,录制所有的调用和内存访问。
gapis: Graphics API服务
一个独立的进程,分析抓取的流,上报错误的API使用,处理数据在不同的设备上replay,且体统RPC接口。
gapir: Replay守护进程
提供基于栈的播放,模仿应用调用GPU驱动,支持回读,提供性能分析。
gapic:客户端
提供可见的操作
gapil: GAPI 语言
GAPID是一个单独的程序,就交GAPID,启动~
使用具体参考:
https://google.github.io/gapid/about/
需要注意的是:
另外,Android Studio是不能同时用的,得关掉。要不在GAPID中找不到device。