和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、Camera 启动流程trace关键字
二、相机 模式切换流程trace 关键字
三、退出相机Trace 关键字
四、相机拍照 Trace 关键字
五、人脸解锁Trace 关键字拆解
六、Camx trace 开关
七、手机自带抓去systrace 方法
一、Camera 启动流程trace关键字
S1 . deliverInputEvent(AppLaunch_dispatchPtr:Up ) ⇒ activityStart
S2 . activityStart ⇒ CameraHal::openSession
S3 . CameraHal::openSession
S4 . CameraHal::openSession end ⇒ CameraHal::configureStreams start
S5 . CameraHal::configureStreams
S6 . CameraHal::configureStreams end ⇒ setRepeatingRequest start
S7 . setRepeatingRequest start ⇒ first full buffer
S8 . first full buffer ⇒ 第一帧显示(onPreviewOk)
二、相机 模式切换流程trace 关键字
S1 . deliverInputEvent ⇒ abortCaptures start
S2 . abortCaptures( FWK : CameraHal::flush)
S3 . abortCaptures end ⇒ CameraHal::close start
S4 . CameraHal::close
S5 . CameraHal::close end ⇒ CameraHal::openSession start
S6 . CameraHal::openSession
S7 . CameraHal::openSession end ⇒ CameraHal::configureStreams start
S8 . CameraHal::configureStreams
S9 . CameraHal::configureStreams end ⇒ setRepeatingRequest start
S10 . setRepeatingRequest start ⇒ first full buffer
S11 . first full buffer ⇒ 第一帧显示(onPreviewOk)
三、 退出相机Trace 关键字
S1 . deliverInputEvent ⇒ abortCaptures start
S2 . abortCaptures( FWK : CameraHal::flush)
S3 . abortCaptures end ⇒ CameraHal::close start
S4 . CameraHal::close
S5 . CameraHal::close end ⇒ launher 显示
四、相机拍照 Trace 关键字
S1 . deliverInputEvent ⇒ submitRequestList start
S2 . submitRequestList start ⇒ processCaptureRequest_3_4 start
S3 . processCaptureRequest_3_4 start ⇒ P2_Capture:enque start
S4 . P2_Capture:enque start ⇒ p2a:finish end
S5 . mf:process
S6 . mdp:process
S7 . hardwareOps_encode (onProcessRequest)
S8 . hardwareOps_encode end ⇒ 大图显示
五、 人脸解锁Trace 关键字拆解
S1 . mPowerKeyWakeLock start ⇒ Biometric.Face.openCamera start Power 键
S2 . Biometric.Face.openCamera start ⇒ CameraHal::openSession start准备开相机
S3 . CameraHal::openSession开相机
S4 . CameraHal::openSession end ⇒ CameraHal::configureStreams start 准备配流
S5 . CameraHal::configureStreams 实施配流
S6 . CameraHal::configureStreams end ⇒ setRepeatingRequest start 准备请求获图
S7 . setRepeatingRequest start ⇒ Camera2-CallbackConsumer:0 end(processNewCallback end) 返回请求图
S8 . Camera2-CallbackConsumer:0 end ⇒ TetrasEngine start 准备算法比对
S9 . TetrasEngine start ⇒ IBiometricsFaceClientCallback::onFilterFailedAcquired::client 算法比对失败
S10 . IBiometricsFaceClientCallback::onFilterFailedAcquired::client ⇒ processNewCallback end 重新请求并获图
S11 . processNewCallback end ⇒ TetrasEngine start 准备算法比对
S12 . TetrasEngine start ⇒ Biometric.Face.onAuthenticated_Success 算法比对成功
S13 . Biometric.Face.onAuthenticated_Success ⇒
KeyguardViewMediator.mViewMediatorCallback#keyguardGone
或者 (KeyguardViewMediator#handleStartKeyguardExitAnimation ) 锁屏动画消失
六、 Camx trace 开关
抓取方法必读
1.如果手机已经解锁,请跳过 1,2,3 这3个步骤,直接执行 4,5 两个步骤。
2.camx trace 开关参考 高通文档
-
- 打开开发者模式中的oem unlock
操作步骤:
设置,多次点击 版本信息 打开隐藏的开发者模式item,进入打开开发者模式,然后找到oem unlock,打开oem unlock
- 打开开发者模式中的oem unlock
-
- fastboot 手机解锁(最好使用userdebug 版本,user版本自测没有成功)
操作步骤:
执行adb reboot bootloader ,fastboot flashing unlock 然后按照提示按音量键进行解锁。
- fastboot 手机解锁(最好使用userdebug 版本,user版本自测没有成功)
C:\Users\>adb reboot bootloader
C:\Users\>fastboot flashing unlock
OKAY [ 0.036s]
Finished. Total time: 0.049s
C:\Users\>
-
- 执行脚本挂载手机
操作步骤:
解锁完之后执行adb root ,adb remount,adb disable-verity,adb reboot ,命令为创建camxoverridesettings.txt 做准备。
C:\Users\>adb root
adbd is already running as root
C:\Users\>adb remount
... ...
Now reboot your device for settings to take effect
C:\Users\>adb disable-verity
verity is already disabled
C:\Users\>adb reboot
-
- 打开hal 层 camx log tag
操作步骤:
执行以下命令,打开camx trace log tag
- 打开hal 层 camx log tag
adb root
adb remount
adb shell mkdir /vendor/etc/camera
adb shell rm -rf /vendor/etc/camera/camxoverridesettings.txt
adb shell touch /vendor/etc/camera/camxoverridesettings.txt
adb shell "echo traceGroupsEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"
adb shell "echo traceErrorEnable=TRUE >> /vendor/etc/camera/camxoverridesettings.txt"
adb shell "echo traceOutputEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"
adb shell cat /vendor/etc/camera/camxoverridesettings.txt
adb reboot
-
- 重启手机后打开kernel 的trace开关
操作步骤:
重启后打开kernel trace 开关
- 重启手机后打开kernel 的trace开关
adb root
adb remount
adb shell "echo 1 > /sys/kernel/tracing/events/camera/enable"
- 抓取trace
操作步骤:
可以使用命令或者 trace 工具抓取
python systrace.py --time=10 camera sched hal freq video gfx -b 20480 -o filename.html
七、手机自带抓去systrace 方法
手机自带抓取Systrace 方法如下:
- 1.打开开发者模式
设置开发者选项-->系统跟踪-->开启显示系统跟踪“快捷设置”功能块(开启后下拉状态栏会有录制轨迹的图标)

2.复现问题
下拉状态栏点击 “录制轨迹“,复现问题, 下拉状态栏关闭“录制轨迹”,然后关闭 log3.Systrace 保存路径
adb pull /data/local/traces .
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,比如:文章底部留言,12小时内必删,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
点个在看,为大佬点赞!