Graphics Debug Tool GAPID
GAPID (Grapphics API Debugger) 是一系列的Graphics調(diào)試工具,可以檢查,微調(diào),重播應(yīng)用對(duì)圖形驅(qū)動(dòng)的API調(diào)用。
GAPID 可以跟蹤Android任何可以調(diào)試的應(yīng)用,即android:debuggable = true.或者有root權(quán)限,任何應(yīng)用都可以trace。
GAPID 也可要trace任何的桌面Vulkan應(yīng)用。
GAPID 是前面的OpenGL trace的升級(jí),且跨平臺(tái)
編譯GAPID
源碼下載:
git clone https://github.com/google/gapid.git
GAPID用的Bazel編譯系統(tǒng),參考:
安裝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, 要不會(huì)報(bào)錯(cuò):
Android SDK api level 21 was requested
直接安裝
GAPID的編譯很慢,如果只是單純的使用,沒(méi)有必要自己去編譯,可以直接下載安裝發(fā)布的release版本:
https://github.com/google/gapid/releases
我用的Ubuntu平臺(tái),直接下載deb包
gapid組成
編譯完成后,編譯結(jié)果在<gapid-root>/bazel-bin/pkg/gapid。gapid包含了一下子組件:
gapii: Graphics API攔截
出于應(yīng)用和GPU驅(qū)動(dòng)間,錄制所有的調(diào)用和內(nèi)存訪問(wèn)。gapis: Graphics API服務(wù)
一個(gè)獨(dú)立的進(jìn)程,分析抓取的流,上報(bào)錯(cuò)誤的API使用,處理數(shù)據(jù)在不同的設(shè)備上replay,且體統(tǒng)RPC接口。gapir: Replay守護(hù)進(jìn)程
提供基于棧的播放,模仿應(yīng)用調(diào)用GPU驅(qū)動(dòng),支持回讀,提供性能分析。gapic:客戶(hù)端
提供可見(jiàn)的操作gapil: GAPI 語(yǔ)言
GAPID的使用
GAPID是一個(gè)單獨(dú)的程序,就交GAPID,啟動(dòng)~
使用具體參考:
https://google.github.io/gapid/about/
需要注意的是:
- A device running Android Lollipop 5.0 (or more recent).
- Either a debuggable application, or a device running a ‘rooted’ user-debug build.
- Android SDK installed on the host machine.
- Android hardware device connected through USB.
- The device must have USB debugging enabled and the host machine must be authorized for debugging.
另外,Android Studio是不能同時(shí)用的,得關(guān)掉。要不在GAPID中找不到device。