在安卓系统中通常一个相机app,提供相机功能的会有如下三个进程:
- App进程
- CameraService
- Provider
在Android 8.0以前,我们只需要关注前二者即可。
在Android 8.0上, Google推出了一项Project Treble计划,旨在规范HAL接口, 简化Android的版本升级,其中一个重要改变就是, Framework层和HAL层也是通过Binder(HIDL)通信,HAL相关资源迁移到了名为android.hardware.camera.provider@xx
(xx表示版本号)中,在不同厂商的定制系统下也可能有其他名字,定位大同小异。
相机调试
相机服务包含 watch
和 dumpsys
命令。watch
命令适用于搭载 Android 13 或更高版本的设备,dumpsys
命令允许访问调试信息,但不提供来自关闭的客户端的代码监控转储。详情
API判断
当想判断一个app使用的camera1或者2时可以看logcat
2023-05-04 16:21:48.473 5164-7146 CameraService cameraserver I CameraService::connect call (PID -1 "com.samsung.adaptivebrightnessgo", camera ID 3) and Camera API version 2
dumpsys
- 内存
adb shell dumpsys meminfo xxxx
- cpu使用top命令, 查看线程cpu负载:
adb shell top -H -b | grep $(adb shell pidof xxx.xxx.xxx)
- cpu使用ps命令,查看线程cpu耗时(不同机器ps命令可能支持度不一样):
-
#一般通用 adb shell ps -T -O SCHED,PCY,TIME -p $(adb shell pidof xxx.xxx.xxx) --sort=-pcpu #三星 adb shell ps -T -p $(adb shell pidof com.ss.android.ugc.aweme) -w -o F,S,UID,PID,PPID,C,PRI,NI,ADDR,TIME,CMD,CPU,SCHED,TCNT
-
- cpu使用dumpsys
-
adb shell dumpsys cpuinfo
-