一種定位android HAL程式碼位置的方法
阿新 • • 發佈:2018-12-12
一種定位android HAL程式碼位置的方法
2017年04月07日 23:33:20 feiniao8651 閱讀數:1044
背景
裝置廠商一般會在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實現的程式碼了。