这张图,估计有开发App或者接触安卓的基本都有看过吧,而且不止一两次的问题了,如果不是的话,那你就要好好恶补一下了
其中Linux内核驱动部分是属于linux的范畴了,linux是作为一个程序员必须关注的,虽然我用的不多,但是多多少少也是用过Arm-linux驱动等各种编译的小程序的编写,接触过s3c2440的芯片的时候(大三),现在也是不断在学习中,作为一个程序员VM是少不了的
第一层:
linux层,虽然开发App时基本不会接触到,但是很多面试场合都会涉及到这一层,驱动层有个非常重要的部分就是binder,这是个IPC专为嵌入设备设计的跨进层通信
第二层:
这里就是C/C++运行程序或者库文件.so,这里我们是通常使用ndk来编写我们的程序,那可以使用arm-linux-gcc吗?由于安卓的系统下,很多依赖文件及其路劲与linux下的不一,所以如果使用arm-linux-gcc时不能直接用动态连接的方式的,这里还有android Runtime这个关键的部分,它使用Android可以解析java字节码
第三层:
这里基本是Java api,或者是使用JNI接口得以与第二层关联的一层,这里没太多介绍
第四层:
App层,App程序员开发第三方软件的一层