一种定位android HAL代码位置的方法

时间:2021-01-18 15:28:24

背景

设备厂商一般会在Android HAL层做自己定义的实现,但是不同厂商的路径不同,在没有文档的情况下,查找对应的源码实现就要花费很多时间。这里提供一种查找的思路。

方法

以Audio的HAL实现为例,查看adb logcat输出

adb logcat | grep audio

看到日志输出中很多都带有标签audio_hw_primary

V/audio_hw_primary( 1751): adev_open_output_stream, flags: 1
V/audio_hw_primary( 1751): +++++++++++++++ adev_open_output_stream: req_sample_rate: 44100, fmt: 1, channel_count: 3
D/audio_hw_primary( 1751): out_standby
V/audio_hw_primary( 1751): out_set_parameters: exiting=1
D/audio_hw_primary( 1751): out_standby
V/audio_hw_primary( 1751): adev_set_parameters, connect=1024
V/audio_hw_primary( 1751): out_set_parameters: routing=1024
V/audio_hw_primary( 1751): out_set_parameters, line: 1650

这里的HAL模块的LOG_TAG应该就是audio_hw_primary。
来到源码的hardware路径下,使用grep查到定义LOG_TAG为audio_hw_primary的文件

grep -s -R -n '#define LOG_TAG "audio_hw_primary"' ./*

之后就能找到HAL实现的代码了。