本文分析说明renderdoc一些主要功能,包括编译,launch apk, hook opengl es 库流程,抓流流程,rdc文件从设备端传到host端流程,重放流程,org.renderdoc.renderdoccmd.arm64.apk, target apk 分别负责的事情等。
由于笔者使用renderdoc 抓流分析的对象是Android11 移动设备,所以所有场景均基于此说明,同学们勿对所有场景对号入座。
文章讲的比较基础,面向初级读者,文章若有不对的地方欢迎指正,也欢迎加V交流(1558287830)。
目录
https://github.com/baldurk/renderdoc
本人基于ubuntu 18.04开发,macos构建出来后抓完流UI无法点击重放,还没分析为啥,所以建议新手基于ubuntu开发。
由于编译需要装些依赖项,可能和本地环境有冲突,建议搞个docker ubuntu 专门作为构建环境。安装依赖与环境搭建可参考官方文档,之后编译时报缺啥补装啥就ok了~
https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md
https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Dependencies.md#linux
本人的编译脚本,里边 ANDROID_SDK ,JAVA_HOME,ANDROID_NDK环境变量根据自己环境自行修改:
#!/bin/bash
#build host
echo "=========> build host"
rm -rf build-android/
export QT_SELECT=qt5
cmake -DCMAKE_BUILD_TYPE=Debug -Bbuild -H.
make -C build -j8
#build apk
sleep 5
echo "=========> build apk"
mkdir build-android
rootDir=$( pwd )
echo "rootDir:"$rootDir
export ANDROID_SDK=/root/Android/Sdk
echo "ANDROID_SDK:"$ANDROID_SDK
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
echo "JAVA_HOME:"$JAVA_HOME
export ANDROID_NDK=$ANDROID_SDK/android-ndk-r14b
echo "ANDROID_NDK:"$ANDROID_NDK
cd $rootDir
cd ./build-android
cmake -DBUILD_ANDROID=On -DANDROID_ABI=armeabi-v7a ..
make -j8
rm CMakeCache.txt
rm cmake_install.cmake
cmake -DBUILD_ANDROID=On -DANDROID_ABI=arm64-v8a ..
make -j8
./build/bin/qrenderdoc
可参考官方文档:
https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md
https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Dependencies.md#linux
其中有些依赖记得需要安装
brew install autoconf
brew install automake
brew install qt5
pip install cmake==3.21.1
本人的编译脚本,ANDROID_SDK ,JAVA_HOME,ANDROID_NDK,ANDROID_HOME,环境变量根据自己环境自行修改:
#!/bin/bash
rootDir=$( pwd )
echo "rootDir:"$rootDir
#build host
echo "=========> build host"
export PATH=/usr/local/opt/qt@5/bin:$PATH
rm -rf build
mkdir -p build
cd ./build
cmake -G Ninja .. -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
ninja
cd $rootDir
#build apk
sleep 5
echo "=========> build apk"
rm -rf build-android
mkdir -p build-android
cd $rootDir
cd ./build-android
cmake -DBUILD_ANDROID=On -DANDROID_ABI=armeabi-v7a ..
make -j8
rm CMakeCache.txt
rm cmake_install.cmake
cmake -DBUILD_ANDROID=On -DANDROID_ABI=arm64-v8a ..
make -j8
open ./build/bin/qrenderdoc.app/
./util/buildscripts/scripts/make_package_macos.sh package_name
#其中,若脚本里边报 REPO_ROOT路径相关的错,直接在里边将其值该成自己的代码路径就ok
若打包成功会在 package底下生成package_name.dmg