最近在研究andorid系统结构,总结了一些心得如下。
众所周知,android底层运行着linux内核。所以android系统被划分成了好几层,由下自上可以简述为:
linux驱动开发:这就是纯粹的原生linux驱动开发,和嵌入式linux驱动开发等等完全类似。不过根据开源协议,这层的代码要开源。
硬件驱动层开发:这层是android系统和linux系统之间的接口,其实很像是对linux驱动的封装(linux内核60%以上代码都是驱动),这层遵循apache协议,代码可以不用公布,可以商业化,所以硬件商可以把自己的核心驱动放在这里。
android framwork层开发:这层从代码层讲就是c/c++与java之间的接口层,把硬件驱动层的c/c++代码映射成java代码。涉及jni等等。
android 应用层开发:这层是顶层的app开发层,大多数app都是在这层开发的。
看了一套完整的例子后,真心觉得硬件驱动层可以删除掉啊,从技术上感觉完全没必要化这么多层。单纯为了代码的公布与否,搞了这么一层。