Android开发系列之系统源码目录
相信大家对于Google给出的那副经典Android架构图非常的熟悉,从下往上依次是Linux内核层(主要是负责硬件管理调度),HAL层(主要是硬件抽象层),libs层+Runtime,Framework层,App层。今天在这里我想对于各个层级的目录结构做一个细分整理,本次的目录结构是基于Android7.0系统,如果有什么不对的地方欢迎拍砖。
当我们进到Android源码目录之后,从左往右依次有bionic文件夹,该文件夹里面放置主要是Google为了取代Glibc而开发出来的C运行库,官方的解释是能够带来更好的性能提升,对于这个文件夹里面的内容笔者不想过多说明,因为我也不太清楚各文件是对应什么功能。
bootable文件夹,相信大家从名字应该就能一窥功能,主要是加载器了。当Android系统启动的时候,就是通过该文件夹提供的功能装载整个系统。点击进入包括三个子文件夹:bootloader、fbd、recovery,bootloader文件夹应该就是装载的主要执行者,其他两个文件夹呢?分别对应不同启动模式下的装载方式,recovery就是对应复原模式,fbd的功能笔者也不太清楚,如果有知道的朋友可以留言指教。
build文件夹对应的是Android系统编译构建,在该文件夹里面有各模块对应的mk文件,相当于编译过程的执行脚本。然后还有个envsetup.sh脚本,通过执行该脚本可以实现Android模块编译。
cts文件夹主要为了兼容Google的CTS测试而创建的了。
device文件夹用于放置不同厂商的硬件驱动了,点开可以发现google呀、htc呀、华为呀子文件夹。
external文件夹用于放置第三方扩展的文件,点开可以发现里面的文件数量挺多的,对此笔者的研究不多,所以略过。
frameworks文件夹是我们进行修改定制的主要对象了,在该文件夹里面我们可以找到Activity、Service、Handler、WindowManager、Message、Thread等java源码,对于我们了解Android原生的一些控件、组件很有帮助。
hardware文件夹对应的就是HAL层,主要提供硬件抽象层的功能。
kernel文件夹笔者理解的就是Linux内核层了,虽然在我们下载源码的时候,内核需要我们单独去下载。
libcore文件夹,笔者理解的是主要提供链接器、编译器、词语法分析等功能的地方。
ndk、sdk文件夹就不用过多解释了,相信大家都懂的。
packages文件夹用于我们放置一些系统原生集成的App源码,点击进入我们可以发现里面有个Apps文件夹,然后就分目录放置不同的App,通过修过mk文件链接编译就行。
system文件夹具体功能笔者不太清楚,如果说是硬件驱动吧,不是还有device吗?如果说是system运行时环境吧,不是还有libcore吗?
当我们编译Android系统之后,应该会多创建一个out文件夹,里面存放了编译之后的.img文件,如果我们需要烧录系统的时候,就可以用它们重刷系统。
上面的一些整理,只是笔者自己对着系统源码目录以及自己的一些分析理解而得,如果有什么不对的地方,欢迎交流。
Android开发系列之系统源码目录的更多相关文章
- Android系统架构与系统源码目录
前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是<Android开发艺术探索>的姊妹篇.在这 ...
- Android系统源码目录
Android系统源码目录 我们要先了解Android系统源码目录,为后期源码学习打下基础.关于源码的阅读,你可以访问http://androidxref.com/来阅读系统源码.当然,最好是将源码下 ...
- Android 7.1.1系统源码下载、编译、刷机-Nexus 6实战
想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源 ...
- 基于Android开发的天气预报app(源码下载)
原文:基于Android开发的天气预报app(源码下载) 基于AndroidStudio环境开发的天气app -系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows1 ...
- 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法
迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- ubuntu配置android开发环境和编译源码遇到的一些问题
---------------------------------------------环境变量设置--------------------------------------------- 1.设 ...
- java开发JSP+Servlet+bootstrap开发电影院购票系统 源码
基于JSP+Servlet+bootstrap开发电影院购票系统:开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+Mysql数据库 程序要求:电影院订票系统 用 ...
- ssm开发垃圾分类查询系统 源码 mysql
需求 基于SSM实现一个垃圾分类查询管理系统, 用户可以根据自定义查询分类信息, 管理员可以对分类信息, 垃圾详情信息进行增删改查的管理 运行环境 jdk1.8,tomcat8.5,mysql5.6, ...
随机推荐
- XML签名
英文:https://www.javacodegeeks.com/2013/10/xml-security-with-digital-signature-in-java.html 中文:http:// ...
- Guess Number Higher or Lower II -- LeetCode
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- 【bzoj4443】【[Scoi2015]小凸玩矩阵】二分+二分图最大匹配
(上不了p站我要死了,侵权度娘背锅) Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸 ...
- 基于Bootstrap的表格插件bootstrap-table
写在前面: 表格在项目中是使用比较多的,bootstrap-table插件也是非常好用,而且表格页面也比较好看.这里也简单的记录下. 下面直接看demo吧,代码中都注释了,有些用法,这里没有用到,需要 ...
- ReactNative学习笔记1 Flexbox布局
一.比例属性flex和布局方向属性flexDirection 例如三个视图的flex属性值分别为2.4.8,则它们的高度比例为2:4:8.,宽度不指定,默认为全屏的宽度. class ZLFReact ...
- jQuery插件开发 总结
一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法:另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通过选择器获取的jQue ...
- UVa221 Urban Elevations
离散化处理.判断建筑可见性比较麻烦.下面采用离散化解决:把所有的x坐标排序去重,在相邻两个x坐标表示的区间中,整个区间要么同时可见,要么同时不可见.如何判断该区间是否可见?具体做法是选取该区间中点坐标 ...
- axure产品原型图,元件库导入方法
axure是公司产品经理常用的软件,用来绘制产品原型图. 为了画出漂亮的原型图,需要各色各样的元件.因此导入各类元件库很有用处: 打开元件库视图: 载入元件库,选择事先下载好的元件 元件库下载:htt ...
- android 中怎样获取IMEI号
1)在Telephony Framework内部.能够直接使用GSMPhone或GeminiPhone提供的接口. KK之前的版本号: IMEI(International Mobile Equipm ...
- Apache Beam WordCount编程实战及源代码解读
概述:Apache Beam WordCount编程实战及源代码解读,并通过intellij IDEA和terminal两种方式调试执行WordCount程序,Apache Beam对大数据的批处理和 ...