背景
设备厂商一般会在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实现的代码了。