如何通过ADB Shell查看Android U中composer3系统服务的底层版本?
我正在尝试通过ADB Shell获取Composer3系统服务的相关信息,已经用service list | grep -i composer命令列出了相关服务,输出如下:
console:/ # service list | grep -i composer
1 SurfaceFlinger: [android.ui.ISurfaceComposer]
2 SurfaceFlingerAIDL: [android.gui.ISurfaceComposer]
34 android.hardware.graphics.composer3.IComposer/default [android.hardware.graphics.composer3.IComposer]
当前使用的是Android U系统,系统定义了两个版本的android.hardware.graphics.composer3——android.hardware.graphics.composer3-V1-ndk和android.hardware.graphics.composer3-V2-ndk,且我已在构建中引入android.hardware.graphics.composer3-V2-ndk,想知道有没有办法通过ADB Shell查看当前实际使用的Composer3版本。
可以通过以下几种实用方法在ADB Shell中查看实际使用的Composer3版本:
方法一:读取系统属性直接获取版本
执行命令读取Composer服务的版本标识:getprop vendor.hardware.graphics.composer.version部分设备会直接返回
V1或V2这类明确的版本信息。方法二:检查HAL服务的实现文件
系统的Composer3服务依赖特定的so库,可通过以下步骤确认版本:- 先定位Composer3服务对应的库文件路径:
命令输出会包含服务的详细信息,其中就有对应的库文件路径。lshal | grep -i composer3 - 查看库文件的版本信息:
或者直接看库文件名,V2版本的库通常会带有readelf -d /path/to/composer3/lib.so | grep -A 1 -B 1 "VERSION"v2相关命名标识。
- 先定位Composer3服务对应的库文件路径:
方法三:从SurfaceFlinger日志提取版本
抓取SurfaceFlinger的启动日志,其中会包含Composer服务的加载版本信息:logcat -d | grep -i "composer.*version"日志中一般会出现类似
Loaded composer version 2的明确输出。
内容的提问来源于stack exchange,提问作者user806168

