由来:修改AudioPolicyManagerBase.cpp 源代码后仅仅将libaudioflinger.so push 进系统,但修改内容却未生效,相关日志不打印。
1.编译libaudioflinger.so前未仔细阅读相关的Android.mk。
想当然认为,修改某个文件后,若这个文件所在目录包含Android.mk,只要mmm此目录,然后将相应的so push进/system/lib/即可,大错特错!
2.阅读Android.mk,但却一知半解,不如不解。
后来发现AudioPolicyManagerBase.cpp所处目录下的Android.mk并非只生成一个.so,尚有静态库libaudiopolicybase.a生成。再看build libaudioflinger.so时也确实引用了此静态库,更坚定了之前的错误判断。
走投无路之际,只好croot;make;折腾半小时后,终于发现这样能使之生效。兴奋之余,赶紧找原因。
静下心来仔细看了下make过后out/..../system/lib目录下被更新的文件,发现远不止libaudioflinger.so一个。
一眼就看到了libaudiopolicy.so,竟然也是最新的。因为之前mmm时从未发现过这个家伙生成,眼前一亮。
回到audioflinger目录下再看其Android.mk。汗颜之前的错误,那么明显的一个if else block 却被我忽视了,= =//。
在我的配置环境下,build libaudioflinger.so时并不会引用libaudiopolicybase.a,而是引用了ibaudio libaudiopolicy。好吧,既然从未看到过与build libaudiopolicy相关的语句,果断Ctrl+H,感谢!libaudiopolicy 在hardware/alsa_sound/Android.mk中被build,build时引用了静态库libaudiopolicybase。
终于。。。二完了。
LOCAL_STATIC_LIBRARIES += libaudiointerface libaudiopolicybase
LOCAL_CFLAGS += -DGENERIC_AUDIO
else
LOCAL_SHARED_LIBRARIES += libaudio libaudiopolicy
endif