在Android系统源码上开发有时候会遇到一些问题,比如加入新代码或修改了一些代码后运行发现新加入的代码不启作用。这时可能要查一下原因,有时是因为Android编译环境配置存在问题,就会出现上述情况(有一次加入了自己的代码,但是没有在项目目录下加入Android.mk,最后只能把out目录全部删除掉才能编译出来).
下面就有一个快速的方法来判断自己的代码有没有编译出来。
Android系统编译完后所有编译过程中生成的相关文件都存在out目录下, 一些c/c++一般都在out/target/product/generic/obj/SHARE_LIBRARY 或 out/target/product/generic/obj/STATIC_LIBRARY目录下。 由其是动态库, 我们可以进入动态库的目录下有一个LINKER文件夹,这里边就是编译完后成生的动态库文件,这个文件是可以反汇编的,我们可把它反汇编出来,然后在里边查找一下我们新加入的内容。如果找到了,说明文件已生成成功,很可能是其它问题。如果没有找到新加的代码,很有可能是Android配置问题导致make失败。
反汇编的方法很简单:
cd <....>/LINKER
arm-eabi-objdump -dS <so_name> > so.dump
vim so.dump
...