最近遇到一个有意思的问题,android编译出.so文件习惯性地push到/vendor/lib,但是怎么都没有生效,一直没有整明白,最后发现是自己push的路径不对,这就是我们习惯性push到32位路径中,实际上到底push到哪个目录还得看机器和软件配置,现使用下面方法验证某个进程到底是依赖哪个文件路径下的.so文件,可以有效避免犯类似错误。
操作步骤:
1.先假设我们编译出camera.qcom.so动态库文件,该动态库是被camera provider进程使用;camera.qcom.so在编译结束后会生成32位和34位的文件;
2. 找到camera provider进程对应的进程号:
ps -A | grep camera
3.查看该进程依赖的.so文件:
cat /proc/[进程号]/maps | grep [检索的内容,如.so文档]
eg:cat /proc/832/maps | grep "camera.qcom.so"
输出:
即可得出:
我们使用得.so文件是64位的,应该push到/vendor/lib64/hw,非常简单好用。