安卓源代码核心结构

来源:互联网 发布:2003版办公软件 编辑:程序博客网 时间:2024/05/22 14:32

安卓体系结构图如下


第一层是我们的APP层,在这个层次中有我们熟悉的应用程序,也是我安卓系统自带的一些应用程序,比如说我们的通讯录,比如说我们的电话本,比如说我们短信,这都是我们系统自带的一些运用程序,但是除此之外还可以自己开发一些运用程序放到这个层次当中。


第二层是我们框架层,在这个层次中包括了10最主要的部分。包括我们的活动管理层,窗口管理器,内容提供者,试图子系统,通知管理器,包管理器,电话管理器,资源管理器,位置管理器,XMPP服务。这10个最重要的组成部分共同为我们的API提供相应的管理机制

第三层是系统库与运行时,从名字上看分为两个部分,左边是系统库,它里面有9个部分,包括我们媒体库和数据库。然后右边是我们安卓运行时,又由两个部分构成,第一个部分是我们的核心库,第二个部分使我们JAVA虚拟机。我们这里着重强掉这个JAVA虚拟机是干嘛的,我们JAVA是跨平台的语言,他编译出来的程序不需要重新编译就可以在其他平台上运行,我们之前学的嵌入式的知识告诉我们,不同的硬件平台他的程序对应的机器码是不一样的,但是JAVA编译出来的程序,是因为我们硬件平台与应用程序之间隔了一层JAVA虚拟机,实际上我们程序不是直接在CPU上运行的,是在JAVA虚拟机上运行的。JAVA虚拟机会把它转化为相应的平台代码在进行运行。

第四次就是我们LINUX内核了。


我们接下来看一看我们功能模块怎么和我们目录对应起来


我们第一个是看下第一个目录


他的名字叫做应用程序的二进制接口,属于一个轻量级的目录,我们不做详细的介绍


这个目录是安卓5.0新引入的虚拟机。


第三个目录是bionic这个目录,这个目录实际上是实现C库的,是C库的一个目录。


第四个目录是bootable目录,从名字上来看知道,他应该是和我们启动相关的目录,他存放了bootloader可以使用的通用性代码,也包括一些系统恢复相关的代码


第五个目录是build,一看就知道是和我们编译相关的代码

在build目录下还存放一些编译的规则,还用到编译当中我们会用到的工具,比如说我们怎么把二进制文件转换为汇编代码的工具。

下一个目录是

这个里面主要存放的是一些测试案例,利用这些测试案例可以测试我们安卓系统的稳定性和兼容性


这个目录是用来实现我们虚拟机 的


这个目录我们平时很少用得着,这里不介绍,以后牛逼了来介绍一下



这个development这个目录,这个目录非常重要,这里面都是存放这我们应用编程的案例

进来看一下



进入samples这个目录里面


就有很多我们应用程序的案例,当你开发某个应用程序的时候,你可以来找一找有没有你相关的一些案例,你可以参考它来进行相应的开发。


然后是device目录,device目录从名字上来看,他应该是和我们设备相关的,存放着和你设备密切相关的文件


这个是document的缩写,一看就知道这是文档相关的目录。


然后是external目录,external目录是引用的外部的第三方软件。比如说进入这个目录


这有个bzip,这是一个压缩和解压缩的工具,比如说我们安卓系统要用到这个东西,就可以把这部分代码放到我们安卓的这个目录下面来,然后进行编译,那这个工具就被引入到我们安卓系统里面去了。

然后是frameworks 从名字上就可以看出他是我们第二层,框架层的代码

然后是我们hardware hardware目录是存放我们硬件抽象层,有的公司是把自己硬件抽象层的代码开源出来,如果开源出来了就把它放到这个目录里面来的


然后就是libcore,看名字就可以看出来它是核心库,就是我们第三层的那个核心库,

然后是这个库,也没什么用,等牛逼再来讨论


下一个是NDK目录,ndk着重来讲一下

我们在写安卓应用程序的时候,通常用的语言是JAVA语言,但是JAVA语言有一个很重要的特点,他是半解释性的语言,半解释型的语言很容易反汇编,这样就拿到了他全部的代码,这样他的安全性就存在隐患,怎么来解决这个问题呢,人们就想了一个办法,我们把程序分为两部分,一部分不重要的就用JAVA来写,另一部分重要的就用C或者C++来写,C/C++来写成一个动态库,比如说我们的.so,然后我们用JAVA写的APP,用JNI接口来调用,这是解决这个问题的办法,而我们用C和C++写的动态库就是NDK的开发。而我们这个目录就是为我们NDK开发提供相应的API和提供一些相应的帮助的目录。


然后是我们packages目录,它里面是存放的一些运用程序


然后是我们pdk。是为我们平台开发提供一些帮助的


然后是我们prebuilt主要是提供工具链,

然后是我们skd目录,里面会提供应用程序大量的api,还有就是相应的虚拟机,模拟器都在这个sdk里面

然后是我们sysstem目录


这个目录非常重要,它里面提供了我们文件系统最底层的文件,比如说我们应用程序的组件啊,一些系统库啊


然后这个里面就两个小工具



然后是我们vendor,这里面是我们厂家定制的内容,也不是很重要






原创粉丝点击